From 199c2862869ac3ceac3ee9445c473e95170350d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Thu, 31 Jul 2025 10:03:43 -0700 Subject: [PATCH 1/8] IconGroup: change focused style --- data/Application.css | 17 ++++++++++++- src/AppSystem/Launcher.vala | 48 +++++++++++++++++++++++++++++++++++++ src/BaseIconGroup.vala | 14 +++++++++++ src/BaseItem.vala | 23 +----------------- 4 files changed, 79 insertions(+), 23 deletions(-) diff --git a/data/Application.css b/data/Application.css index 4358d01d..e9229dda 100644 --- a/data/Application.css +++ b/data/Application.css @@ -82,9 +82,24 @@ icongroup .icon-group-box { 0 1px 4px alpha(@borders, 0.4); border-radius: 6px; border-spacing: 3px; + transition: + background 200ms cubic-bezier(0.4, 0, 0.2, 1), + box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1); } -.reduce-transparency icongroup box { +icongroup.running .icon-group-box { + background: alpha(@base_color, 0.7); + box-shadow: + inset 0 -1px 0 0 alpha(@highlight_color, 0.2), + inset 0 1px 0 0 alpha(@highlight_color, 0.3), + inset 1px 0 0 0 alpha(@highlight_color, 0.07), + inset -1px 0 0 0 alpha(@highlight_color, 0.07), + 0 0 0 1px alpha(@borders, 0.3), + 0 4px 6px -1px alpha(@borders, 0.8), + 0 3px 2px -1px alpha(@borders, 0.6); +} + +.reduce-transparency icongroup .icon-group-box { background: @base_color; } diff --git a/src/AppSystem/Launcher.vala b/src/AppSystem/Launcher.vala index 21cdc75a..68026eb1 100644 --- a/src/AppSystem/Launcher.vala +++ b/src/AppSystem/Launcher.vala @@ -25,9 +25,39 @@ public class Dock.Launcher : BaseItem { public App app { get; construct; } + private bool _moving; + public new bool moving { + get { return _moving; } + set { + _moving = value; + + if (value) { + bin.width_request = bin.get_width (); + bin.height_request = bin.get_height (); + } else { + bin.width_request = -1; + bin.height_request = -1; + } + + overlay.visible = !value; + running_revealer.reveal_child = !value && state != HIDDEN; + } + } + + private State _state; + public new State state { + get { return _state; } + set { + _state = value; + running_revealer.reveal_child = (value != HIDDEN) && !moving; + running_revealer.sensitive = value == ACTIVE; + } + } + private Gtk.Image image; private Gtk.Revealer progress_revealer; private Gtk.Revealer badge_revealer; + private Gtk.Revealer running_revealer; private Adw.TimedAnimation bounce_up; private Adw.TimedAnimation bounce_down; private Gtk.PopoverMenu popover; @@ -101,6 +131,24 @@ public class Dock.Launcher : BaseItem { tooltip_text = app.app_info.get_display_name (); + var running_indicator = new Gtk.Image.from_icon_name ("pager-checked-symbolic"); + running_indicator.add_css_class ("running-indicator"); + + running_box = new Gtk.Box (HORIZONTAL, 0) { + halign = CENTER + }; + running_box.append (running_indicator); + + running_revealer = new Gtk.Revealer () { + can_target = false, + child = running_box, + overflow = VISIBLE, + transition_type = CROSSFADE, + valign = END + }; + + append (running_revealer); + insert_action_group (ACTION_GROUP_PREFIX, app.action_group); // We have to destroy the progressbar when it is not needed otherwise it will diff --git a/src/BaseIconGroup.vala b/src/BaseIconGroup.vala index 690503bb..7d7ae49d 100644 --- a/src/BaseIconGroup.vala +++ b/src/BaseIconGroup.vala @@ -11,6 +11,20 @@ public abstract class Dock.BaseIconGroup : BaseItem { public ListModel icons { get; construct; } + private State _state; + public new State state { + get { return _state; } + set { + _state = value; + + if ((value != HIDDEN) && !moving) { + add_css_class ("running"); + } else if (has_css_class ("running")) { + remove_css_class("running"); + } + } + } + private Gtk.Grid grid; class construct { diff --git a/src/BaseItem.vala b/src/BaseItem.vala index 68fc4c8f..05cd5a1c 100644 --- a/src/BaseItem.vala +++ b/src/BaseItem.vala @@ -49,7 +49,6 @@ public class Dock.BaseItem : Gtk.Box { } overlay.visible = !value; - running_revealer.reveal_child = !value && state != HIDDEN; } } @@ -58,8 +57,6 @@ public class Dock.BaseItem : Gtk.Box { get { return _state; } set { _state = value; - running_revealer.reveal_child = (value != HIDDEN) && !moving; - running_revealer.sensitive = value == ACTIVE; } } @@ -67,8 +64,7 @@ public class Dock.BaseItem : Gtk.Box { protected Gtk.GestureClick gesture_click; protected Gtk.Box running_box; - private Granite.Bin bin; - private Gtk.Revealer running_revealer; + protected Granite.Bin bin { get; private set; } private Adw.TimedAnimation fade; private Adw.TimedAnimation reveal; @@ -89,24 +85,7 @@ public class Dock.BaseItem : Gtk.Box { child = overlay }; - var running_indicator = new Gtk.Image.from_icon_name ("pager-checked-symbolic"); - running_indicator.add_css_class ("running-indicator"); - - running_box = new Gtk.Box (HORIZONTAL, 0) { - halign = CENTER - }; - running_box.append (running_indicator); - - running_revealer = new Gtk.Revealer () { - can_target = false, - child = running_box, - overflow = VISIBLE, - transition_type = CROSSFADE, - valign = END - }; - append (bin); - append (running_revealer); icon_size = dock_settings.get_int ("icon-size"); dock_settings.changed["icon-size"].connect (() => { From 8e23989abf7d0174f223278c152389a8813c5b99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Mon, 10 Nov 2025 11:50:34 -0800 Subject: [PATCH 2/8] Lint --- src/AppSystem/Launcher.vala | 2 +- src/BaseIconGroup.vala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/AppSystem/Launcher.vala b/src/AppSystem/Launcher.vala index 961c970a..30888bcf 100644 --- a/src/AppSystem/Launcher.vala +++ b/src/AppSystem/Launcher.vala @@ -175,7 +175,7 @@ public class Dock.Launcher : BaseItem { valign = END }; - insert_child_after(running_revealer, bin); + insert_child_after (running_revealer, bin); insert_action_group (ACTION_GROUP_PREFIX, app.action_group); diff --git a/src/BaseIconGroup.vala b/src/BaseIconGroup.vala index 9ea0cc86..8504c780 100644 --- a/src/BaseIconGroup.vala +++ b/src/BaseIconGroup.vala @@ -18,7 +18,7 @@ public abstract class Dock.BaseIconGroup : BaseItem { if ((value != HIDDEN) && !moving) { add_css_class ("running"); } else if (has_css_class ("running")) { - remove_css_class("running"); + remove_css_class ("running"); } } } From 818a193dcf02bffdaf3f0c4b77a59042345cfc93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Wed, 12 Nov 2025 10:45:27 -0800 Subject: [PATCH 3/8] Move state from BaseItem to DynamicWorkspaceItem --- src/BaseItem.vala | 8 -------- src/WorkspaceSystem/DynamicWorkspaceItem.vala | 8 ++++++++ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/BaseItem.vala b/src/BaseItem.vala index 2a978337..dbbff713 100644 --- a/src/BaseItem.vala +++ b/src/BaseItem.vala @@ -52,14 +52,6 @@ public class Dock.BaseItem : Gtk.Box { } } - private State _state; - public State state { - get { return _state; } - set { - _state = value; - } - } - protected Gtk.Overlay overlay; protected Gtk.GestureClick gesture_click; protected Gtk.Box running_box; diff --git a/src/WorkspaceSystem/DynamicWorkspaceItem.vala b/src/WorkspaceSystem/DynamicWorkspaceItem.vala index 57048390..797b1a65 100644 --- a/src/WorkspaceSystem/DynamicWorkspaceItem.vala +++ b/src/WorkspaceSystem/DynamicWorkspaceItem.vala @@ -8,6 +8,14 @@ public class Dock.DynamicWorkspaceIcon : BaseItem { set_css_name ("icongroup"); } + private State _state; + public State state { + get { return _state; } + set { + _state = value; + } + } + public DynamicWorkspaceIcon () { Object (disallow_dnd: true, group: Group.WORKSPACE); } From cbd672b3b909d0906bc06938e38cdeb977f83122 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Wed, 12 Nov 2025 10:46:00 -0800 Subject: [PATCH 4/8] Simple get/set property --- src/WorkspaceSystem/DynamicWorkspaceItem.vala | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/WorkspaceSystem/DynamicWorkspaceItem.vala b/src/WorkspaceSystem/DynamicWorkspaceItem.vala index 797b1a65..a01d8fd3 100644 --- a/src/WorkspaceSystem/DynamicWorkspaceItem.vala +++ b/src/WorkspaceSystem/DynamicWorkspaceItem.vala @@ -8,13 +8,7 @@ public class Dock.DynamicWorkspaceIcon : BaseItem { set_css_name ("icongroup"); } - private State _state; - public State state { - get { return _state; } - set { - _state = value; - } - } + public State state { get; set; } public DynamicWorkspaceIcon () { Object (disallow_dnd: true, group: Group.WORKSPACE); From dbd4fc83d9c98bcc83812a98d7f1e262a83b89ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Wed, 12 Nov 2025 10:47:33 -0800 Subject: [PATCH 5/8] Move running_box to Launcher --- src/AppSystem/Launcher.vala | 1 + src/BaseItem.vala | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AppSystem/Launcher.vala b/src/AppSystem/Launcher.vala index 30888bcf..cb9e47bc 100644 --- a/src/AppSystem/Launcher.vala +++ b/src/AppSystem/Launcher.vala @@ -60,6 +60,7 @@ public class Dock.Launcher : BaseItem { } } + private Gtk.Box running_box; private Gtk.Image image; private Gtk.Label badge; private Gtk.Revealer progress_revealer; diff --git a/src/BaseItem.vala b/src/BaseItem.vala index dbbff713..0970c2d7 100644 --- a/src/BaseItem.vala +++ b/src/BaseItem.vala @@ -54,7 +54,6 @@ public class Dock.BaseItem : Gtk.Box { protected Gtk.Overlay overlay; protected Gtk.GestureClick gesture_click; - protected Gtk.Box running_box; protected Granite.Bin bin { get; private set; } From 11381c22dd6fe36157d64b78cb5d5d317500b9bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Wed, 12 Nov 2025 10:52:13 -0800 Subject: [PATCH 6/8] Notify moving --- src/AppSystem/Launcher.vala | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/src/AppSystem/Launcher.vala b/src/AppSystem/Launcher.vala index cb9e47bc..4b0645f6 100644 --- a/src/AppSystem/Launcher.vala +++ b/src/AppSystem/Launcher.vala @@ -31,25 +31,6 @@ public class Dock.Launcher : BaseItem { public App app { get; construct; } - private bool _moving; - public new bool moving { - get { return _moving; } - set { - _moving = value; - - if (value) { - bin.width_request = bin.get_width (); - bin.height_request = bin.get_height (); - } else { - bin.width_request = -1; - bin.height_request = -1; - } - - overlay.visible = !value; - running_revealer.reveal_child = !value && state != HIDDEN; - } - } - private State _state; public new State state { get { return _state; } @@ -321,6 +302,10 @@ public class Dock.Launcher : BaseItem { app.notify["running"].connect (update_active_state); update_active_state (); + notify["moving"].connect (() => { + running_revealer.reveal_child = !moving && state != HIDDEN; + }); + var drop_controller_motion = new Gtk.DropControllerMotion (); add_controller (drop_controller_motion); drop_controller_motion.enter.connect (queue_dnd_cycle); From ffc15fc920a589289cbec4073b95155558475c51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Wed, 12 Nov 2025 10:55:16 -0800 Subject: [PATCH 7/8] notify state --- src/AppSystem/Launcher.vala | 15 +++++-------- src/BaseIconGroup.vala | 22 +++++++------------ src/BaseItem.vala | 2 ++ src/WorkspaceSystem/DynamicWorkspaceItem.vala | 2 -- 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/src/AppSystem/Launcher.vala b/src/AppSystem/Launcher.vala index 4b0645f6..b6acef0b 100644 --- a/src/AppSystem/Launcher.vala +++ b/src/AppSystem/Launcher.vala @@ -31,16 +31,6 @@ public class Dock.Launcher : BaseItem { public App app { get; construct; } - private State _state; - public new State state { - get { return _state; } - set { - _state = value; - running_revealer.reveal_child = (value != HIDDEN) && !moving; - running_revealer.sensitive = value == ACTIVE; - } - } - private Gtk.Box running_box; private Gtk.Image image; private Gtk.Label badge; @@ -306,6 +296,11 @@ public class Dock.Launcher : BaseItem { running_revealer.reveal_child = !moving && state != HIDDEN; }); + notify["state"].connect (() => { + running_revealer.reveal_child = (state != HIDDEN) && !moving; + running_revealer.sensitive = state == ACTIVE; + }); + var drop_controller_motion = new Gtk.DropControllerMotion (); add_controller (drop_controller_motion); drop_controller_motion.enter.connect (queue_dnd_cycle); diff --git a/src/BaseIconGroup.vala b/src/BaseIconGroup.vala index 8504c780..ad6af820 100644 --- a/src/BaseIconGroup.vala +++ b/src/BaseIconGroup.vala @@ -9,20 +9,6 @@ public abstract class Dock.BaseIconGroup : BaseItem { public ListModel icons { get; construct; } - private State _state; - public new State state { - get { return _state; } - set { - _state = value; - - if ((value != HIDDEN) && !moving) { - add_css_class ("running"); - } else if (has_css_class ("running")) { - remove_css_class ("running"); - } - } - } - class construct { set_css_name ("icongroup"); } @@ -47,6 +33,14 @@ public abstract class Dock.BaseIconGroup : BaseItem { bind_property ("icon-size", bin, "height-request", SYNC_CREATE); overlay.child = bin; + + notify["state"].connect (() => { + if ((state != HIDDEN) && !moving) { + add_css_class ("running"); + } else if (has_css_class ("running")) { + remove_css_class ("running"); + } + }); } private Gtk.Widget create_flow_box_child (Object? item) { diff --git a/src/BaseItem.vala b/src/BaseItem.vala index 0970c2d7..e5ccb6f1 100644 --- a/src/BaseItem.vala +++ b/src/BaseItem.vala @@ -52,6 +52,8 @@ public class Dock.BaseItem : Gtk.Box { } } + public State state { get; set; } + protected Gtk.Overlay overlay; protected Gtk.GestureClick gesture_click; diff --git a/src/WorkspaceSystem/DynamicWorkspaceItem.vala b/src/WorkspaceSystem/DynamicWorkspaceItem.vala index a01d8fd3..57048390 100644 --- a/src/WorkspaceSystem/DynamicWorkspaceItem.vala +++ b/src/WorkspaceSystem/DynamicWorkspaceItem.vala @@ -8,8 +8,6 @@ public class Dock.DynamicWorkspaceIcon : BaseItem { set_css_name ("icongroup"); } - public State state { get; set; } - public DynamicWorkspaceIcon () { Object (disallow_dnd: true, group: Group.WORKSPACE); } From 7f393079b53320be0292a2d5aed47b58e71bf6b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Sat, 15 Nov 2025 10:01:08 -0800 Subject: [PATCH 8/8] Add issue link for workspace icon size problem --- data/dock.metainfo.xml.in | 1 + 1 file changed, 1 insertion(+) diff --git a/data/dock.metainfo.xml.in b/data/dock.metainfo.xml.in index 22325c6d..2ae62e33 100644 --- a/data/dock.metainfo.xml.in +++ b/data/dock.metainfo.xml.in @@ -31,6 +31,7 @@ Dock is sometimes hard to see Increase actionable area of an app icon all way to the screen edge + Workspace icons are a little larger than normal Replace dock bubble animation