diff options
author | Alan <alan@boum.org> | 2017-03-18 10:24:47 +0000 |
---|---|---|
committer | Arx Cruz <arxcruz@redhat.com> | 2017-04-04 15:48:51 +0200 |
commit | 3b64d05e8a1aae1581d2bec7288d80ac4699e1b1 (patch) | |
tree | 8275c68d1f053b78647307d94f1923ab781f826a /src/msg.c | |
parent | Bug 762347: Addition of entry text width option (diff) | |
download | zenity-3b64d05e8a1aae1581d2bec7288d80ac4699e1b1.tar.gz zenity-3b64d05e8a1aae1581d2bec7288d80ac4699e1b1.tar.bz2 zenity-3b64d05e8a1aae1581d2bec7288d80ac4699e1b1.zip |
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).
Diffstat (limited to 'src/msg.c')
-rw-r--r-- | src/msg.c | 17 |
1 files changed, 7 insertions, 10 deletions
@@ -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) { |