Smuxi.Frontend.Gnome.ChatView.ScrollToEnd C# (CSharp) Method

ScrollToEnd() public method

public ScrollToEnd ( ) : void
return void
        public virtual void ScrollToEnd()
        {
            #if SCROLL_DEBUG
            Trace.Call();
            #endif

            // BUG? doesn't work always for some reason
            // seems like GTK+ doesn't update the adjustment till we give back control
            //Gtk.Adjustment adj = _OutputScrolledWindow.Vadjustment;
            #if LOG4NET && SCROLL_DEBUG
            _Logger.Debug("ScrollToEnd(): Vadjustment.Value: " + adj.Value +
                          " Vadjustment.Upper: " + adj.Upper +
                          " Vadjustment.PageSize: " + adj.PageSize);
            #endif
            //adj.Value = adj.Upper - adj.PageSize;

            //_OutputTextView.Buffer.MoveMark(_EndMark, _OutputTextView.Buffer.EndIter);
            //_OutputTextView.ScrollMarkOnscreen(_EndMark);
            //_OutputTextView.ScrollToMark(_EndMark, 0.49, true, 0.0, 0.0);

            //_OutputTextView.ScrollMarkOnscreen(_OutputTextView.Buffer.InsertMark);

            //_OutputTextView.ScrollMarkOnscreen(_OutputTextView.Buffer.GetMark("tail"));

            #if SCROLL_DEBUG
            System.Reflection.MethodBase mb = Trace.GetMethodBase();
            #endif
            // WORKAROUND1: scroll after one second delay
            /*
            GLib.Timeout.Add(1000, new GLib.TimeoutHandler(delegate {
                Trace.Call(mb);

                _OutputTextView.ScrollMarkOnscreen(_EndMark);
                return false;
            }));
            */
            // WORKAROUND2: scroll when GTK+ mainloop is idle
            GLib.Idle.Add(new GLib.IdleHandler(delegate {
            #if SCROLL_DEBUG
                Trace.Call(mb);
            #endif
                _OutputMessageTextView.ScrollMarkOnscreen(_EndMark);
                return false;
            }));
        }