diff options
author | Denis Washington <denisw@online.de> | 2012-02-15 22:46:26 +0100 |
---|---|---|
committer | Denis Washington <denisw@online.de> | 2012-02-15 22:46:26 +0100 |
commit | c3fe8359dda108d0f06400e7cd01801d9bc9595f (patch) | |
tree | 8b4612db91752c9c692ce0005e043814dd30d2a2 /gtk/gtkrange.c | |
parent | b45a20d4e4801d2fe12a6147303d6354fb69cc1b (diff) | |
parent | bf89bc624b34cf4b4291dd05f0adff9d34945f01 (diff) | |
download | gtk+-gtkbuilder-gbinding.tar.gz |
Merge branch 'master' into gtkbuilder-gbindinggtkbuilder-gbinding
Diffstat (limited to 'gtk/gtkrange.c')
-rw-r--r-- | gtk/gtkrange.c | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c index bb13aecab5..0d32f0bb02 100644 --- a/gtk/gtkrange.c +++ b/gtk/gtkrange.c @@ -35,6 +35,7 @@ #include "gtkorientableprivate.h" #include "gtkrange.h" #include "gtkscale.h" +#include "gtkcolorscaleprivate.h" #include "gtkscrollbar.h" #include "gtkwindow.h" #include "gtkprivate.h" @@ -2010,6 +2011,7 @@ gtk_range_draw (GtkWidget *widget, gint focus_padding = 0; gboolean touchscreen; gboolean draw_trough = TRUE; + gboolean draw_slider = TRUE; GtkStyleContext *context; context = gtk_widget_get_style_context (widget); @@ -2019,7 +2021,15 @@ gtk_range_draw (GtkWidget *widget, if (GTK_IS_SCALE (widget) && gtk_adjustment_get_upper (priv->adjustment) == gtk_adjustment_get_lower (priv->adjustment)) - draw_trough = FALSE; + { + draw_trough = TRUE; + draw_slider = FALSE; + } + if (GTK_IS_COLOR_SCALE (widget)) + { + draw_trough = FALSE; + draw_slider = TRUE; + } if (gtk_widget_get_can_focus (GTK_WIDGET (range))) gtk_widget_style_get (GTK_WIDGET (range), @@ -2188,13 +2198,6 @@ gtk_range_draw (GtkWidget *widget, gtk_style_context_restore (context); } } - else - { - gtk_render_background (context, cr, - x, y, width, height); - gtk_render_frame (context, cr, - x, y, width, height); - } gtk_style_context_restore (context); @@ -2270,7 +2273,7 @@ gtk_range_draw (GtkWidget *widget, cairo_restore (cr); - if (draw_trough) + if (draw_slider) { GtkStateFlags state = widget_state; @@ -2545,6 +2548,16 @@ gtk_range_button_press (GtkWidget *widget, if (gtk_range_update_mouse_location (range)) gtk_widget_queue_draw (widget); + if (priv->mouse_location == MOUSE_SLIDER && + gdk_event_triggers_context_menu ((GdkEvent *)event)) + { + gboolean handled; + + g_signal_emit_by_name (widget, "popup-menu", &handled); + + return TRUE; + } + if (priv->mouse_location == MOUSE_TROUGH && event->button == GDK_BUTTON_PRIMARY) { |