From 3ec8daa66c1a4e67ef8be8b9e85045bfe52993ff Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Thu, 18 Nov 2010 01:02:57 +0100 Subject: [PATCH] gtk: draw the progress only on the text area so it doesn't extend under GtkSpinButton's buttons. --- gtk/gtkentry.c | 68 +++++++++++++++++--------------------------------- 1 file changed, 23 insertions(+), 45 deletions(-) diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 8c39e113fd..d177ba2e8a 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -3393,59 +3393,37 @@ gtk_entry_draw_frame (GtkWidget *widget, cairo_restore (cr); } -static void -gtk_entry_get_progress_border (GtkWidget *widget, - GtkBorder *progress_border) -{ - GtkBorder *tmp_border; - GtkStyle *style; - - gtk_widget_style_get (widget, "progress-border", &tmp_border, NULL); - if (tmp_border) - { - *progress_border = *tmp_border; - gtk_border_free (tmp_border); - } - else - { - style = gtk_widget_get_style (widget); - - progress_border->left = style->xthickness; - progress_border->right = style->xthickness; - progress_border->top = style->ythickness; - progress_border->bottom = style->ythickness; - } -} - static void get_progress_area (GtkWidget *widget, - gint *x, - gint *y, - gint *width, - gint *height) + gint *x, + gint *y, + gint *width, + gint *height) { GtkEntryPrivate *private = GTK_ENTRY_GET_PRIVATE (widget); GtkEntry *entry = GTK_ENTRY (widget); - GtkBorder progress_border; - gint frame_width, frame_height; + GtkBorder *progress_border; - get_frame_size (entry, NULL, NULL, &frame_width, &frame_height); - gtk_entry_get_progress_border (widget, &progress_border); + get_text_area_size (entry, x, y, width, height); - *x = progress_border.left; - *y = progress_border.top; - - *width = frame_width - - progress_border.left - progress_border.right; - *height = frame_height - - progress_border.top - progress_border.bottom; - - if (gtk_widget_has_focus (widget) && !private->interior_focus) + if (!private->interior_focus) { - *x += private->focus_width; - *y += private->focus_width; - *width -= 2 * private->focus_width; - *height -= 2 * private->focus_width; + *x -= private->focus_width; + *y -= private->focus_width; + *width += 2 * private->focus_width; + *height += 2 * private->focus_width; + } + + gtk_widget_style_get (widget, "progress-border", &progress_border, NULL); + + if (progress_border) + { + *x += progress_border->left; + *y += progress_border->top; + *width -= progress_border->left + progress_border->right; + *height -= progress_border->top + progress_border->bottom; + + gtk_border_free (progress_border); } if (private->progress_pulse_mode)