From 2577b8a7f3c9e95749665ee48f28d45cbc02ac9c Mon Sep 17 00:00:00 2001 From: Clement Lefebvre Date: Fri, 13 Jan 2023 17:44:38 +0000 Subject: sessions: Add a tooltip on the session badge. Ported from Slick Greeter ported by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/cf3742cf155e0925904c7da86457deaea6a87885 --- src/greeter-list.vala | 2 +- src/prompt-box.vala | 7 ++++++- src/user-list.vala | 25 +++++++++++++++++++++---- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/greeter-list.vala b/src/greeter-list.vala index dc41a8f..c574778 100644 --- a/src/greeter-list.vala +++ b/src/greeter-list.vala @@ -155,7 +155,7 @@ public abstract class GreeterList : FadableBox /* When we swap out a scrolling entry, make sure to hide its * image button, else it will appear in the tab chain. */ if (_scrolling_entry != null) - _scrolling_entry.set_options_image (null); + _scrolling_entry.set_options_image (null, null); _scrolling_entry = value; } } diff --git a/src/prompt-box.vala b/src/prompt-box.vala index 2180c70..273c507 100644 --- a/src/prompt-box.vala +++ b/src/prompt-box.vala @@ -385,13 +385,18 @@ public class PromptBox : FadableBox queue_draw (); } - public void set_options_image (Gdk.Pixbuf? image) + public void set_options_image (Gdk.Pixbuf? image, string? tooltip) { if (option_button == null) return; option_image.pixbuf = image; + if (tooltip == null) + option_image.set_tooltip_text(""); + else + option_image.set_tooltip_text(tooltip); + if (image == null) option_button.hide (); else diff --git a/src/user-list.vala b/src/user-list.vala index b4cab22..abbf576 100644 --- a/src/user-list.vala +++ b/src/user-list.vala @@ -121,8 +121,15 @@ public class UserList : GreeterList set { _default_session = value; - if (selected_entry != null) - selected_entry.set_options_image (get_badge ()); + if (selected_entry != null) { + selected_entry.set_options_image (get_badge (), value); + foreach (var session in LightDM.get_sessions ()) { + if (session.key == value) { + selected_entry.set_options_image (get_badge (), session.name); + break; + } + } + } } } @@ -136,8 +143,18 @@ public class UserList : GreeterList set { _session = value; - if (selected_entry != null) - selected_entry.set_options_image (get_badge ()); + if (selected_entry != null) { + selected_entry.set_options_image (get_badge (), value); + if (selected_entry != null) { + selected_entry.set_options_image (get_badge (), value); + foreach (var session in LightDM.get_sessions ()) { + if (session.key == value) { + selected_entry.set_options_image (get_badge (), session.name); + break; + } + } + } + } } } -- cgit v1.2.3