diff options
author | Benjamin Otte <otte@redhat.com> | 2016-02-01 14:47:43 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2016-02-02 15:26:01 +0100 |
commit | bfb727d37e6d5806869a5dee8c35cc1e953ea00b (patch) | |
tree | 58c576f8a035565c48b1330dd5f0f5bc0a10ab3f /gtk/gtkentry.c | |
parent | 9d18539d366ccb6f3fd54804494d1733b207c109 (diff) | |
download | gtk+-bfb727d37e6d5806869a5dee8c35cc1e953ea00b.tar.gz |
entry: Draw progress in the right place
Diffstat (limited to 'gtk/gtkentry.c')
-rw-r--r-- | gtk/gtkentry.c | 41 |
1 files changed, 6 insertions, 35 deletions
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 68e6b5a429..a471e25f10 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -427,9 +427,6 @@ static void gtk_entry_get_preferred_height_and_baseline_for_width (GtkWidget *w gint *natural_baseline); static void gtk_entry_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static void gtk_entry_draw_frame (GtkWidget *widget, - GtkStyleContext *context, - cairo_t *cr); static void gtk_entry_draw_progress (GtkWidget *widget, GtkStyleContext *context, cairo_t *cr); @@ -3817,36 +3814,6 @@ should_prelight (GtkEntry *entry, } static void -gtk_entry_draw_frame (GtkWidget *widget, - GtkStyleContext *context, - cairo_t *cr) -{ - gint y = 0, width, height; - gint frame_x, frame_y; - - cairo_save (cr); - - get_frame_size (GTK_ENTRY (widget), FALSE, &frame_x, &frame_y, &width, &height); - - cairo_translate (cr, frame_x, frame_y); - - /* Fix a problem with some themes which assume that entry->text_area's - * width equals widget->window's width - * http://bugzilla.gnome.org/show_bug.cgi?id=466000 - */ - if (GTK_IS_SPIN_BUTTON (widget) && - gtk_orientable_get_orientation (GTK_ORIENTABLE (widget)) == GTK_ORIENTATION_VERTICAL) - { - gtk_entry_get_text_area_size (GTK_ENTRY (widget), NULL, &y, NULL, &height); - } - - - gtk_entry_draw_progress (widget, context, cr); - - cairo_restore (cr); -} - -static void get_progress_area (GtkWidget *widget, gint *x, gint *y, @@ -3900,9 +3867,13 @@ gtk_entry_draw_progress (GtkWidget *widget, cairo_t *cr) { GtkEntry *entry = GTK_ENTRY (widget); + GtkAllocation allocation; gint x, y, width, height; get_progress_area (widget, &x, &y, &width, &height); + gtk_widget_get_allocation (widget, &allocation); + x -= allocation.x; + y -= allocation.y; if ((width <= 0) || (height <= 0)) return; @@ -3983,8 +3954,8 @@ gtk_entry_render (GtkCssGadget *gadget, { context = gtk_widget_get_style_context (widget); - /* Draw entry_bg, shadow, progress and focus */ - gtk_entry_draw_frame (widget, context, cr); + /* Draw progress */ + gtk_entry_draw_progress (widget, context, cr); /* Draw text and cursor */ cairo_save (cr); |