From d545b8de2a78a3a08f9d12be45a00373986245a6 Mon Sep 17 00:00:00 2001 From: Colin Clark Date: Fri, 6 Aug 2021 16:52:07 +0100 Subject: [PATCH] Include popover for layout default button In Preferences/Windows, for the Set Default Layout button include a popover text to indicate to the user that the button has been successfully pressed. --- src/preferences.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/preferences.c b/src/preferences.c index f270f6aa..f09aa63b 100644 --- a/src/preferences.c +++ b/src/preferences.c @@ -2331,6 +2331,37 @@ static void save_default_window_layout_cb(GtkWidget *widget, gpointer data) g_free(default_path); } +#if GTK_CHECK_VERSION(3,22,0) +static gboolean popover_cb(gpointer data) +{ + GtkPopover *popover = data; + + gtk_popover_popdown(popover); + + return FALSE; +} + +static void default_layout_changed_cb(GtkWidget *button, GtkPopover *popover) +{ + gtk_popover_popup(popover); + + g_timeout_add(2000, popover_cb, popover); +} + +static GtkWidget *create_popover(GtkWidget *parent, GtkWidget *child, GtkPositionType pos) +{ + GtkWidget *popover; + + popover = gtk_popover_new(parent); + gtk_popover_set_position(GTK_POPOVER (popover), pos); + gtk_container_add (GTK_CONTAINER(popover), child); + gtk_container_set_border_width(GTK_CONTAINER (popover), 6); + gtk_widget_show (child); + + return popover; +} +#endif + static void config_tab_windows(GtkWidget *notebook) { GtkWidget *hbox; @@ -2369,6 +2400,14 @@ static void config_tab_windows(GtkWidget *notebook) pref_label_new(subgroup, _("Use current layout for default: ")); button = pref_button_new(subgroup, NULL, _("Set"), FALSE, G_CALLBACK(save_default_window_layout_cb), NULL); +#if GTK_CHECK_VERSION(3,22,0) + GtkWidget *popover; + + popover = create_popover(button, gtk_label_new(_("Current window layout\nhas been set as default")), GTK_POS_TOP); + gtk_popover_set_modal(GTK_POPOVER (popover), FALSE); + g_signal_connect(button, "clicked", G_CALLBACK(default_layout_changed_cb), popover); +#endif + group = pref_group_new(vbox, FALSE, _("Size"), GTK_ORIENTATION_VERTICAL); pref_checkbox_new_int(group, _("Fit window to image when tools are hidden/floating"), -- 2.20.1