diff options
Diffstat (limited to 'applets')
| -rw-r--r-- | applets/clock/clock.c | 19 | ||||
| -rw-r--r-- | applets/wncklet/wayland-backend.c | 17 |
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; |
