[Xfce4-commits] [xfce/libxfce4ui] 02/28: XfceTitledDialog: Move buttons from headerbar to actionarea

noreply at xfce.org noreply at xfce.org
Thu Jan 9 23:31:45 CET 2020


This is an automated email from the git hooks/post-receive script.

o   c   h   o   s   i       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository xfce/libxfce4ui.

commit d7c5b421e117571bcdd55b616dd4db621fa77c7c
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date:   Sat Dec 28 23:46:25 2019 +0100

    XfceTitledDialog: Move buttons from headerbar to actionarea
    
    Instead of letting all buttons automatically end up in the dialog's
    headerbar we want to preserve the previous behavior of
    xfce_titled_dialog_new_with_mixed_buttons and keep buttons in the action
    area.
    
    This change breaks the functionality of gtk_dialog_set_default_response
    for which a replacement will have to be introduced.
---
 libxfce4ui/xfce-titled-dialog.c | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/libxfce4ui/xfce-titled-dialog.c b/libxfce4ui/xfce-titled-dialog.c
index a34b2b9..3266012 100644
--- a/libxfce4ui/xfce-titled-dialog.c
+++ b/libxfce4ui/xfce-titled-dialog.c
@@ -97,10 +97,10 @@ xfce_titled_dialog_class_init (XfceTitledDialogClass *klass)
   g_type_class_add_private (klass, sizeof (XfceTitledDialogPrivate));
 
   gobject_class = G_OBJECT_CLASS (klass);
-  gobject_class->finalize = xfce_titled_dialog_finalize;
+  gobject_class->constructor = xfce_titled_dialog_constructor;
   gobject_class->get_property = xfce_titled_dialog_get_property;
   gobject_class->set_property = xfce_titled_dialog_set_property;
-  gobject_class->constructor = xfce_titled_dialog_constructor;
+  gobject_class->finalize = xfce_titled_dialog_finalize;
 
   gtkdialog_class = GTK_DIALOG_CLASS (klass);
   gtkdialog_class->close = xfce_titled_dialog_close;
@@ -126,6 +126,7 @@ xfce_titled_dialog_class_init (XfceTitledDialogClass *klass)
 }
 
 
+
 static GObject *
 xfce_titled_dialog_constructor (GType                  type,
                                 guint                  n_construct_params,
@@ -141,6 +142,8 @@ xfce_titled_dialog_constructor (GType                  type,
   return object;
 }
 
+
+
 static void
 xfce_titled_dialog_init (XfceTitledDialog *titled_dialog)
 {
@@ -348,6 +351,8 @@ xfce_titled_dialog_new_with_mixed_buttons (const gchar    *title,
   const gchar *icon_name;
   const gchar *button_text;
   GtkWidget   *dialog;
+  GtkWidget   *headerbar;
+  GtkWidget   *action_area;
   va_list      args;
   gint         response_id;
 
@@ -362,6 +367,11 @@ xfce_titled_dialog_new_with_mixed_buttons (const gchar    *title,
   if (G_LIKELY (parent != NULL))
     gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
 
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+  action_area = gtk_dialog_get_action_area (GTK_DIALOG (dialog));
+G_GNUC_END_IGNORE_DEPRECATIONS
+  headerbar = gtk_dialog_get_header_bar (GTK_DIALOG (dialog));
+
   /* add all additional buttons */
   icon_name = first_button_icon_name;
   button_text = first_button_text;
@@ -378,7 +388,15 @@ xfce_titled_dialog_new_with_mixed_buttons (const gchar    *title,
       button = xfce_gtk_button_new_mixed (icon_name, button_text);
       gtk_widget_set_can_default (button, TRUE);
 
+      /* repack the buttons that would normally end up in the headerbar to the action area */
       gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, response_id);
+      g_object_ref (G_OBJECT (button));
+      gtk_container_remove (GTK_CONTAINER (headerbar), button);
+      gtk_container_add (GTK_CONTAINER (action_area), button);
+      g_object_unref (G_OBJECT (button));
+      /* always add help buttons as secondary */
+      if (response_id == GTK_RESPONSE_HELP)
+        gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (action_area), button, TRUE);
       gtk_widget_show (button);
 
       /* this is to pickup for the next button.
@@ -392,6 +410,9 @@ xfce_titled_dialog_new_with_mixed_buttons (const gchar    *title,
     }
   va_end (args);
 
+  /* since we just removed all buttons from the headerbar we have to show the close button again explicitly */
+  gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (headerbar), TRUE);
+
   return dialog;
 }
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list