[zenity] Fix message dialog width and height on recent Gtk



commit 3b64d05e8a1aae1581d2bec7288d80ac4699e1b1
Author: Alan <alan boum org>
Date:   Sat Mar 18 10:24:47 2017 +0000

    Fix message dialog width and height on recent Gtk
    
    The fix for Zenity bug 670496 "Zenity info/error windows grow in height
    with message length"
    (https://bugzilla.gnome.org/show_bug.cgi?id=670496) stopped working on
    recent Gtk, which doesn't seem to honor gtk_widget_set_size_request.
    This commit workarounds Gtk bug 657621 "Calculate the wrong height of
    labels wrapping on words"
    (https://bugzilla.gnome.org/show_bug.cgi?id=657621) by setting label's
    width-chars and max-width-chars to 60. This magic number was picked from
    GtkMessageDialog source
    (https://git.gnome.org/browse/gtk+/tree/gtk/ui/gtkmessagedialog.ui#n48).

 src/msg.c     |   17 +++++++----------
 src/zenity.ui |    8 ++++----
 2 files changed, 11 insertions(+), 14 deletions(-)
---
diff --git a/src/msg.c b/src/msg.c
index 3fe102f..d1ea6fa 100644
--- a/src/msg.c
+++ b/src/msg.c
@@ -27,7 +27,6 @@
 #include "util.h"
 
 static void zenity_msg_dialog_response (GtkWidget *widget, int response, gpointer data);
-static void zenity_text_size_allocate (GtkWidget *widget, GtkAllocation *allocation, gpointer data);
 static void
 zenity_msg_construct_question_dialog (GtkWidget *dialog, ZenityMsgData *msg_data, ZenityData *data)
 {
@@ -188,9 +187,13 @@ zenity_msg (ZenityData *data, ZenityMsgData *msg_data)
   if (data->width > -1)
     gtk_widget_set_size_request (GTK_WIDGET (text), data->width, -1);
   else
-    if (!msg_data->ellipsize)
-      g_signal_connect_after (G_OBJECT (text), "size-allocate",
-                              G_CALLBACK (zenity_text_size_allocate), data);
+    if (!msg_data->ellipsize && !msg_data->no_wrap) {
+      // the magic number 60 is picked from gtk+/gtk/ui/gtkmessagedialog.ui
+      // however, 60 would increase the distance between the icon and the text,
+      // decreasing to 10 fix it.
+      gtk_label_set_width_chars (text, 10);
+      gtk_label_set_max_width_chars (text, 10);
+    }
 
   if (data->modal)
     gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
@@ -223,12 +226,6 @@ zenity_msg (ZenityData *data, ZenityMsgData *msg_data)
   gtk_main ();
 }
 
-static void 
-zenity_text_size_allocate (GtkWidget *widget, GtkAllocation *allocation, gpointer data)
-{
-  gtk_widget_set_size_request (widget, allocation->width/2, -1);
-}
-
 static void
 zenity_msg_dialog_response (GtkWidget *widget, int response, gpointer data)
 {
diff --git a/src/zenity.ui b/src/zenity.ui
index 07915d3..1359442 100644
--- a/src/zenity.ui
+++ b/src/zenity.ui
@@ -518,8 +518,8 @@
                     <property name="icon_size">6</property>
                   </object>
                   <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
                     <property name="position">0</property>
                   </packing>
                 </child>
@@ -729,8 +729,8 @@
                 <property name="icon_size">6</property>
               </object>
               <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
                 <property name="position">0</property>
               </packing>
             </child>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]