diff options
author | Matthias Clasen <matthiasc@src.gnome.org> | 2008-06-13 04:56:25 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2008-06-13 04:56:25 +0000 |
commit | 6302384106e28b27c4c01e3dcf977a1e86476eea (patch) | |
tree | 4f59963efa2631cdc6eee84380e024150378d227 | |
parent | 7c12a83e526cadc96d1a7ab61eb5885294447dfb (diff) | |
download | gdk-pixbuf-6302384106e28b27c4c01e3dcf977a1e86476eea.tar.gz |
Fix frame size allocation
svn path=/trunk/; revision=20368
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | gtk/gtkentry.c | 25 |
2 files changed, 21 insertions, 9 deletions
@@ -1,3 +1,8 @@ +2008-06-13 Matthias Clasen <mclasen@redhat.com> + + * gtk/gtkentry.c (gtk_entry_draw_frame): Fix frame size allocation. + Patch by Jan Arne Peterson + 2008-06-12 Matthias Clasen <mclasen@redhat.com> Bug 537985 – gtk_init_with_args() doesn't open a display after diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 6011293b3..26c41466b 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -47,6 +47,7 @@ #include "gtkseparatormenuitem.h" #include "gtkselection.h" #include "gtksettings.h" +#include "gtkspinbutton.h" #include "gtkstock.h" #include "gtktextutil.h" #include "gtkwindow.h" @@ -1558,16 +1559,22 @@ gtk_entry_draw_frame (GtkWidget *widget, GdkRectangle *area) { GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (widget); - gint x, y, width, height; - gint xborder, yborder; - - get_text_area_size (GTK_ENTRY (widget), &x, &y, &width, &height); - _gtk_entry_get_borders (GTK_ENTRY (widget), &xborder, &yborder); + gint x = 0, y = 0, width, height; - x -= xborder; - y -= yborder; - width += xborder * 2; - height += yborder * 2; + gdk_drawable_get_size (widget->window, &width, &height); + + /* Fix a problem with some themes which assume that entry->text_area's + * width equals widget->window's width */ + if (GTK_IS_SPIN_BUTTON (widget)) + { + gint xborder, yborder; + + get_text_area_size (GTK_ENTRY (widget), &x, NULL, &width, NULL); + _gtk_entry_get_borders (GTK_ENTRY (widget), &xborder, &yborder); + + x -= xborder; + width += xborder * 2; + } if (GTK_WIDGET_HAS_FOCUS (widget) && !priv->interior_focus) { |