summaryrefslogtreecommitdiff
path: root/src/msg.c
diff options
context:
space:
mode:
authorAlan <alan@boum.org>2017-03-18 10:24:47 +0000
committerArx Cruz <arxcruz@redhat.com>2017-04-04 15:48:51 +0200
commit3b64d05e8a1aae1581d2bec7288d80ac4699e1b1 (patch)
tree8275c68d1f053b78647307d94f1923ab781f826a /src/msg.c
parentef14066564b664328c69569aa0c66bdb49b496d5 (diff)
downloadzenity-3b64d05e8a1aae1581d2bec7288d80ac4699e1b1.tar.gz
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.c17
1 files changed, 7 insertions, 10 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)
{