diff --git a/src/AppSystem/Background/BackgroundItem.vala b/src/AppSystem/Background/BackgroundItem.vala index 502a1041..2e19fe94 100644 --- a/src/AppSystem/Background/BackgroundItem.vala +++ b/src/AppSystem/Background/BackgroundItem.vala @@ -11,8 +11,6 @@ public class Dock.BackgroundItem : BaseIconGroup { public BackgroundMonitor monitor { private get; construct; } public bool has_apps { get { return monitor.background_apps.get_n_items () > 0; } } - private Gtk.Popover popover; - public BackgroundItem () { var background_monitor = new BackgroundMonitor (); Object ( @@ -40,26 +38,31 @@ public class Dock.BackgroundItem : BaseIconGroup { box.append (new Gtk.Separator (HORIZONTAL)); box.append (list_box); - popover = new Gtk.Popover () { + popover_menu = new Gtk.Popover () { position = TOP, child = box }; // We need to set offset because dock window's height is 1px larger than its visible area // If we don't do that, the struts prevent popover from showing - popover.set_offset (0, -1); - popover.add_css_class (Granite.STYLE_CLASS_MENU); - popover.set_parent (this); + popover_menu.set_offset (0, -1); + popover_menu.add_css_class (Granite.STYLE_CLASS_MENU); + popover_menu.set_parent (this); + + tooltip_text = "%s\n%s".printf ( + header_label.label, + Granite.TOOLTIP_SECONDARY_TEXT_MARKUP.printf (header_label.secondary_text) + ); monitor.background_apps.items_changed.connect ((pos, n_removed, n_added) => { if (monitor.background_apps.get_n_items () == 0) { - popover.popdown (); + popover_menu.popdown (); removed (); } else if (n_removed == 0 && n_added != 0 && n_added == monitor.background_apps.get_n_items ()) { apps_appeared (); } }); - gesture_click.released.connect (popover.popup); + gesture_click.released.connect (popover_menu.popup); } private Gtk.Widget create_widget_func (Object obj) { diff --git a/src/AppSystem/Launcher.vala b/src/AppSystem/Launcher.vala index bb7e0c01..7e802624 100644 --- a/src/AppSystem/Launcher.vala +++ b/src/AppSystem/Launcher.vala @@ -34,7 +34,6 @@ public class Dock.Launcher : BaseItem { private Adw.TimedAnimation bounce_up; private Adw.TimedAnimation bounce_down; private Adw.TimedAnimation shake; - private Gtk.PopoverMenu popover_menu; private Gtk.Image? second_running_indicator; private bool multiple_windows_open { @@ -243,15 +242,6 @@ public class Dock.Launcher : BaseItem { }); add_controller (long_press); - var motion_controller = new Gtk.EventControllerMotion (); - motion_controller.enter.connect (() => { - if (!popover_menu.visible) { - popover_tooltip.popup (); - } - }); - - add_controller (motion_controller); - var scroll_controller = new Gtk.EventControllerScroll (VERTICAL); add_controller (scroll_controller); scroll_controller.scroll.connect ((dx, dy) => { diff --git a/src/BaseItem.vala b/src/BaseItem.vala index c676093f..11704ea8 100644 --- a/src/BaseItem.vala +++ b/src/BaseItem.vala @@ -66,6 +66,7 @@ public class Dock.BaseItem : Gtk.Box { // Motion events have to be handled in children because of popover menu protected Gtk.Popover popover_tooltip; + protected Gtk.Popover popover_menu; private int drag_offset_x = 0; private int drag_offset_y = 0; @@ -148,6 +149,11 @@ public class Dock.BaseItem : Gtk.Box { }; var motion_controller = new Gtk.EventControllerMotion (); + motion_controller.enter.connect (() => { + if (!popover_menu.visible && tooltip_text != null) { + popover_tooltip.popup (); + } + }); motion_controller.leave.connect (popover_tooltip.popdown); add_controller (motion_controller); diff --git a/src/ContainerItem.vala b/src/ContainerItem.vala index 86eb328d..4442ea74 100644 --- a/src/ContainerItem.vala +++ b/src/ContainerItem.vala @@ -27,14 +27,5 @@ public abstract class Dock.ContainerItem : BaseItem { remove_css_class ("running"); } }); - - var motion_controller = new Gtk.EventControllerMotion (); - motion_controller.enter.connect (() => { - if (tooltip_text != null) { - popover_tooltip.popup (); - } - }); - - add_controller (motion_controller); } }