From 24402a51ef52ad14f44971749a7760b56513bafe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Sat, 19 Sep 2026 10:47:50 -0700 Subject: [PATCH 1/4] PopoverManager: DRY and organize current_indicator setter --- src/Services/PopoverManager.vala | 49 ++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/src/Services/PopoverManager.vala b/src/Services/PopoverManager.vala index ea74b347..bf85aee8 100644 --- a/src/Services/PopoverManager.vala +++ b/src/Services/PopoverManager.vala @@ -29,37 +29,43 @@ public class Wingpanel.Services.PopoverManager : Object { } set { + // Double close. Shouldn't happen? if (value == null && _current_indicator == null) { return; } - if (_current_indicator == null && value != null) { // First open - _current_indicator = value; - indicator_open = true; - } else if (value == null && _current_indicator != null) { // Close requested - _current_indicator.set_state_flags (NORMAL, true); - _current_indicator.display_widget.has_tooltip = true; - _current_indicator.base_indicator.closed (); - _current_indicator = null; - popover.popdown (); - indicator_open = false; - } else { // Switch + // Switch or Close + if (_current_indicator != null) { _current_indicator.set_state_flags (NORMAL, true); _current_indicator.display_widget.has_tooltip = true; _current_indicator.base_indicator.closed (); - _current_indicator = value; - popover.unparent (); - } - if (_current_indicator != null) { - popover.child = _current_indicator.indicator_widget; - popover.set_parent (_current_indicator); - popover.popup (); + // Close + if (value == null) { + popover.popdown (); + popover.unparent (); + _current_indicator = null; + indicator_open = false; + return; + } else { + popover.unparent (); + } + } - _current_indicator.set_state_flags (CHECKED, true); - _current_indicator.display_widget.has_tooltip = false; - _current_indicator.base_indicator.opened (); + // First open + if (_current_indicator == null) { + indicator_open = true; } + + _current_indicator = value; + _current_indicator.set_state_flags (CHECKED, true); + _current_indicator.display_widget.has_tooltip = false; + + popover.child = _current_indicator.indicator_widget; + popover.set_parent (_current_indicator); + popover.popup (); + + _current_indicator.base_indicator.opened (); } } @@ -72,7 +78,6 @@ public class Wingpanel.Services.PopoverManager : Object { popover.closed.connect (() => { current_indicator = null; - popover.unparent (); }); } } From db4face4fa029abca56ccba5aa7d56f60294e27f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Sat, 19 Sep 2026 10:50:42 -0700 Subject: [PATCH 2/4] comment --- src/Services/PopoverManager.vala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Services/PopoverManager.vala b/src/Services/PopoverManager.vala index bf85aee8..16c125fa 100644 --- a/src/Services/PopoverManager.vala +++ b/src/Services/PopoverManager.vala @@ -63,9 +63,10 @@ public class Wingpanel.Services.PopoverManager : Object { popover.child = _current_indicator.indicator_widget; popover.set_parent (_current_indicator); - popover.popup (); + // Make sure we're parented beforehand _current_indicator.base_indicator.opened (); + popover.popup (); } } From e4ec92249fa57031cb3615689b7c8a70c10462d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Sat, 19 Sep 2026 10:51:04 -0700 Subject: [PATCH 3/4] better comment --- src/Services/PopoverManager.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Services/PopoverManager.vala b/src/Services/PopoverManager.vala index 16c125fa..76b338f6 100644 --- a/src/Services/PopoverManager.vala +++ b/src/Services/PopoverManager.vala @@ -64,7 +64,7 @@ public class Wingpanel.Services.PopoverManager : Object { popover.child = _current_indicator.indicator_widget; popover.set_parent (_current_indicator); - // Make sure we're parented beforehand + // Make sure display_widget is parented beforehand _current_indicator.base_indicator.opened (); popover.popup (); } From 2f549f33f2a53595f2be4a9361f4bf10d1e66d75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Sat, 19 Sep 2026 10:54:25 -0700 Subject: [PATCH 4/4] Bump license header --- src/Services/PopoverManager.vala | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/src/Services/PopoverManager.vala b/src/Services/PopoverManager.vala index 76b338f6..5c7daacf 100644 --- a/src/Services/PopoverManager.vala +++ b/src/Services/PopoverManager.vala @@ -1,20 +1,7 @@ /* - * Copyright (c) 2011-2015 Ikey Doherty - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301 USA. + * Copyright 2026 elementary, Inc. (https://elementary.io) + * 2011-2015 Ikey Doherty + * SPDX-License-Identifier: GPL-2.0-or-later */ public class Wingpanel.Services.PopoverManager : Object {