diff options
Diffstat (limited to 'src/gtk-helpers/autowrapped_label.c')
-rw-r--r-- | src/gtk-helpers/autowrapped_label.c | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/src/gtk-helpers/autowrapped_label.c b/src/gtk-helpers/autowrapped_label.c deleted file mode 100644 index 01d8856b..00000000 --- a/src/gtk-helpers/autowrapped_label.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - Copyright (C) 2011 ABRT Team - Copyright (C) 2011 RedHat inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ -#include <gtk/gtk.h> -#include "abrtlib.h" - -/* - * GTK doesn't re-wrap GtkLabels which have line wrapping set to true. - * The line wrapped label in VBox looks like this: - * |----------------------------------------| - * |----------------------------------------| - * | word word word word | - * | word word word word | - * | word word | - * |----------------------------------------| - * |----------------------------------------| - * So every project copy-pastes this code to make labels widen - * and shrink horizontally on resize. - */ - -static void rewrap_label_to_parent_size(GtkWidget *widget, - GtkAllocation *allocation, - gpointer data) -{ - GtkLabel *label = GTK_LABEL(widget); - PangoLayout *layout = gtk_label_get_layout(label); - - int lw_old, lh_old; - pango_layout_get_pixel_size(layout, &lw_old, &lh_old); - - /* Already right size? */ - if (lw_old == allocation->width) - return; - - /* Rewrap text to new width */ - pango_layout_set_width(layout, allocation->width * PANGO_SCALE); - - /* Did text height change as a result? */ - int lh; - pango_layout_get_pixel_size(layout, NULL, &lh); - if (lh != lh_old) /* yes, resize label height */ - gtk_widget_set_size_request(widget, -1, lh); -} - -void make_label_autowrap_on_resize(GtkLabel *label) -{ - // So far, only tested to work on labels which were set up as: - //gtk_label_set_justify(label, GTK_JUSTIFY_LEFT); - //gtk_misc_set_alignment(GTK_MISC(label), /*xalign:*/ 0.0, /*yalign:*/ 0.0); - - /* Makes no sense on non-wrapped labels, so we can as well - * set wrapping to "on" unconditionally, istead of making it a requirement - */ - gtk_label_set_line_wrap(label, TRUE); - g_signal_connect(G_OBJECT(label), "size-allocate", G_CALLBACK(rewrap_label_to_parent_size), NULL); - - // So far, only tested to work on labels which were set up as: - //gtk_box_pack_start(box, label, /*expand*/ false, /*fill*/ false, /*padding*/ 0); -} |