summaryrefslogtreecommitdiff
path: root/gtk/gtkprogressbar.c
diff options
context:
space:
mode:
authorWilliam Jon McCann <william.jon.mccann@gmail.com>2014-05-07 05:13:59 -0400
committerWilliam Jon McCann <william.jon.mccann@gmail.com>2014-05-07 09:56:35 -0400
commit74405cc964e405ea00cfac22856a62fea5ec648e (patch)
tree882366d03d8d97408279847066ae959e4fdeb9d0 /gtk/gtkprogressbar.c
parent644f08a771ef067811f1c7f3cfe9b089225d26d9 (diff)
downloadgtk+-74405cc964e405ea00cfac22856a62fea5ec648e.tar.gz
Update the design for progress bars
We now use a narrower trough and paint the optional text beside the trough instead of inside it. This makes for a much cleaner appearance and more readable text.
Diffstat (limited to 'gtk/gtkprogressbar.c')
-rw-r--r--gtk/gtkprogressbar.c49
1 files changed, 34 insertions, 15 deletions
diff --git a/gtk/gtkprogressbar.c b/gtk/gtkprogressbar.c
index 568536c1c2..f355b07f3f 100644
--- a/gtk/gtkprogressbar.c
+++ b/gtk/gtkprogressbar.c
@@ -63,8 +63,8 @@
*/
#define MIN_HORIZONTAL_BAR_WIDTH 150
-#define MIN_HORIZONTAL_BAR_HEIGHT 20
-#define MIN_VERTICAL_BAR_WIDTH 22
+#define MIN_HORIZONTAL_BAR_HEIGHT 6
+#define MIN_VERTICAL_BAR_WIDTH 7
#define MIN_VERTICAL_BAR_HEIGHT 80
@@ -728,6 +728,8 @@ gtk_progress_bar_paint_activity (GtkProgressBar *pbar,
cairo_t *cr,
GtkOrientation orientation,
gboolean inverted,
+ int x,
+ int y,
int width,
int height)
{
@@ -744,13 +746,13 @@ gtk_progress_bar_paint_activity (GtkProgressBar *pbar,
if (orientation == GTK_ORIENTATION_HORIZONTAL)
{
gtk_progress_bar_get_activity (pbar, orientation, &area.x, &area.width);
- area.y = padding.top;
+ area.y = y + padding.top;
area.height = height - padding.top - padding.bottom;
}
else
{
gtk_progress_bar_get_activity (pbar, orientation, &area.y, &area.height);
- area.x = padding.left;
+ area.x = x + padding.left;
area.width = width - padding.left - padding.right;
}
@@ -769,6 +771,8 @@ gtk_progress_bar_paint_continuous (GtkProgressBar *pbar,
gint amount,
GtkOrientation orientation,
gboolean inverted,
+ int x,
+ int y,
int width,
int height)
{
@@ -789,10 +793,10 @@ gtk_progress_bar_paint_continuous (GtkProgressBar *pbar,
{
area.width = amount;
area.height = height - padding.top - padding.bottom;
- area.y = padding.top;
+ area.y = y + padding.top;
if (!inverted)
- area.x = padding.left;
+ area.x = x + padding.left;
else
area.x = width - amount - padding.right;
}
@@ -800,10 +804,10 @@ gtk_progress_bar_paint_continuous (GtkProgressBar *pbar,
{
area.width = width - padding.left - padding.right;
area.height = amount;
- area.x = padding.left;
+ area.x = x + padding.left;
if (!inverted)
- area.y = padding.top;
+ area.y = y + padding.top;
else
area.y = height - amount - padding.bottom;
}
@@ -839,7 +843,7 @@ gtk_progress_bar_paint_text (GtkProgressBar *pbar,
PangoRectangle logical_rect;
GdkRectangle prelight_clip, start_clip, end_clip;
gfloat text_xalign = 0.5;
- gfloat text_yalign = 0.5;
+ gfloat text_yalign = 0.0;
context = gtk_widget_get_style_context (widget);
state = gtk_widget_get_state_flags (widget);
@@ -967,6 +971,7 @@ gtk_progress_bar_draw (GtkWidget *widget,
GtkStateFlags state;
GtkBorder padding;
int width, height;
+ int bar_width, bar_height;
context = gtk_widget_get_style_context (widget);
state = gtk_widget_get_state_flags (widget);
@@ -982,11 +987,22 @@ gtk_progress_bar_draw (GtkWidget *widget,
width = gtk_widget_get_allocated_width (widget);
height = gtk_widget_get_allocated_height (widget);
+ if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
+ {
+ bar_height = MIN_HORIZONTAL_BAR_HEIGHT;
+ bar_width = width;
+ }
+ else
+ {
+ bar_width = MIN_VERTICAL_BAR_WIDTH;
+ bar_height = height;
+ }
+
gtk_style_context_save (context);
gtk_style_context_add_class (context, GTK_STYLE_CLASS_TROUGH);
- gtk_render_background (context, cr, 0, 0, width, height);
- gtk_render_frame (context, cr, 0, 0, width, height);
+ gtk_render_background (context, cr, width - bar_width, height - bar_height, bar_width, bar_height);
+ gtk_render_frame (context, cr, width - bar_width, height - bar_height, bar_width, bar_height);
gtk_style_context_restore (context);
@@ -994,7 +1010,8 @@ gtk_progress_bar_draw (GtkWidget *widget,
{
gtk_progress_bar_paint_activity (pbar, cr,
orientation, inverted,
- width, height);
+ width - bar_width, height - bar_height,
+ bar_width, bar_height);
if (priv->show_text)
{
@@ -1014,13 +1031,15 @@ gtk_progress_bar_draw (GtkWidget *widget,
gint space;
if (orientation == GTK_ORIENTATION_HORIZONTAL)
- space = width - padding.left - padding.right;
+ space = bar_width - padding.left - padding.right;
else
- space = height - padding.top - padding.bottom;
+ space = bar_height - padding.top - padding.bottom;
amount = space * gtk_progress_bar_get_fraction (pbar);
- gtk_progress_bar_paint_continuous (pbar, cr, amount, orientation, inverted, width, height);
+ gtk_progress_bar_paint_continuous (pbar, cr, amount, orientation, inverted,
+ width - bar_width, height - bar_height,
+ bar_width, bar_height);
if (priv->show_text)
gtk_progress_bar_paint_text (pbar, cr, -1, amount, orientation, inverted, width, height);