summaryrefslogtreecommitdiff
path: root/applets
diff options
context:
space:
mode:
Diffstat (limited to 'applets')
-rw-r--r--applets/clock/clock.c19
-rw-r--r--applets/wncklet/wayland-backend.c17
2 files changed, 34 insertions, 2 deletions
diff --git a/applets/clock/clock.c b/applets/clock/clock.c
index 2e26b39f..bc01b290 100644
--- a/applets/clock/clock.c
+++ b/applets/clock/clock.c
@@ -1436,6 +1436,21 @@ toggle_calendar (GtkWidget *button,
}
static gboolean
+clock_applet_activate (MatePanelApplet *applet,
+ const gchar *action,
+ guint32 timestamp,
+ ClockData *cd)
+{
+ if (g_strcmp0 (action, "toggle-calendar") == 0) {
+ /* Toggle the button state first, then activate popup */
+ gboolean current_state = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cd->panel_button));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cd->panel_button), !current_state);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static gboolean
do_not_eat_button_press (GtkWidget *widget,
GdkEventButton *event)
{
@@ -2739,6 +2754,10 @@ fill_clock_applet (MatePanelApplet *applet)
G_CALLBACK (applet_change_orient),
cd);
+ g_signal_connect (cd->applet, "activate",
+ G_CALLBACK (clock_applet_activate),
+ cd);
+
g_signal_connect (cd->panel_button, "size-allocate",
G_CALLBACK (panel_button_change_pixel_size),
cd);
diff --git a/applets/wncklet/wayland-backend.c b/applets/wncklet/wayland-backend.c
index 001149e7..30469894 100644
--- a/applets/wncklet/wayland-backend.c
+++ b/applets/wncklet/wayland-backend.c
@@ -68,6 +68,8 @@ typedef struct
gboolean fullscreen;
} ToplevelTask;
+static int tasklist_invocations = 0;
+
static const char *tasklist_manager_key = "tasklist_manager";
static const char *toplevel_task_key = "toplevel_task";
@@ -497,7 +499,12 @@ foreign_toplevel_handle_closed (void *data,
outer_box = gtk_widget_get_parent (GTK_WIDGET (task->button));
gtk_widget_destroy (task->button);
buttons = buttons -1;
- real_buttons = buttons / 2;
+
+ if (tasklist_invocations > 1)
+ real_buttons = buttons / 2;
+
+ else
+ real_buttons = buttons;
if (real_buttons == 0)
return;
@@ -704,7 +711,11 @@ toplevel_task_new (TasklistManager *tasklist, struct zwlr_foreign_toplevel_handl
if (tasklist_width <= 2)
tasklist_width = panel_width / 3;
- real_buttons = MAX ((buttons / 2), 1);
+ if (tasklist_invocations > 1)
+ real_buttons = MAX ((buttons / 2), 1);
+
+ else
+ real_buttons = MAX ((buttons), 1);
/*always allow at least three buttons to fit without adjustment
*so short window lists don't overflow
@@ -738,6 +749,8 @@ wayland_tasklist_new ()
{
wayland_tasklist_init_if_needed ();
TasklistManager *tasklist = tasklist_manager_new ();
+
+ tasklist_invocations = tasklist_invocations + 1;
if (!tasklist)
return gtk_label_new ("Shell does not support WLR Foreign Toplevel Control");
return tasklist->outer_box;