Example #1
0
        private static void AddWidget(Gtk.Widget widget, ToolTipData data)
        {
            if (!widgets.ContainsKey(widget))
            {
                widgets.Add(widget, data);
                widget.DeleteEvent += on_widget_delete;
                widget.AddEvents((int)Gdk.EventMask.ProximityInMask);
                widget.AddEvents((int)Gdk.EventMask.PointerMotionMask);
                widget.AddEvents((int)Gdk.EventMask.PointerMotionHintMask);
                widget.AddEvents((int)Gdk.EventMask.LeaveNotifyMask);
                widget.AddEvents((int)Gdk.EventMask.AllEventsMask);
                widget.AddEvents((int)Gdk.EventMask.EnterNotifyMask);
                widget.AddEvents((int)Gdk.EventMask.FocusChangeMask);

                widget.WidgetEvent += delegate(object sender, Gtk.WidgetEventArgs args)
                {
                    if (args.Event.Type == Gdk.EventType.LeaveNotify)
                    {
                        is_interval_started = false;
                        Instance.Close();
                    }
                    if (args.Event.Type == Gdk.EventType.EnterNotify)
                    {
                        CurrentWidget       = (Gtk.Widget)sender;
                        is_interval_started = true;
                        GLib.Timeout.Add((uint)ToolTipInterval, new GLib.TimeoutHandler(ShowMe));
                    }
                };
            }
            else
            {
                widgets[widget] = data;
            }
        }