static inline void gtk_switch_paint_handle (GtkWidget *widget, cairo_t *cr, GdkRectangle *box) { GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv; GtkStyleContext *context = gtk_widget_get_style_context (widget); GtkStateFlags state; state = gtk_widget_get_state_flags (widget); if (priv->is_active) state |= GTK_STATE_FLAG_ACTIVE; gtk_style_context_save (context); gtk_style_context_set_state (context, state); gtk_style_context_add_class (context, GTK_STYLE_CLASS_SLIDER); gtk_render_slider (context, cr, box->x, box->y, box->width, box->height, GTK_ORIENTATION_HORIZONTAL); gtk_style_context_restore (context); }
static gboolean draw_cb_slider (GtkWidget *widget, cairo_t *cr) { GtkStyleContext *context; GtkWidgetPath *path; context = gtk_widget_get_style_context (widget); gtk_style_context_save (context); path = gtk_widget_path_new (); gtk_widget_path_append_type (path, GTK_TYPE_SCALE); gtk_widget_path_iter_add_class (path, 0, "slider"); gtk_widget_path_iter_add_class (path, 0, "scale"); gtk_style_context_set_path (context, path); gtk_widget_path_free (path); gtk_render_slider (context, cr, 12, 22, 30, 10, GTK_ORIENTATION_HORIZONTAL); gtk_render_slider (context, cr, 54, 12, 10, 30, GTK_ORIENTATION_VERTICAL); gtk_style_context_restore (context); return TRUE; }
static inline void gtk_switch_paint_handle (GtkWidget *widget, cairo_t *cr, GdkRectangle *box) { GtkStyleContext *context = gtk_widget_get_style_context (widget); gtk_style_context_save (context); gtk_style_context_add_class (context, GTK_STYLE_CLASS_SLIDER); gtk_render_slider (context, cr, box->x, box->y, box->width, box->height, GTK_ORIENTATION_HORIZONTAL); gtk_style_context_restore (context); }
void ScrollbarThemeGtk::paintThumb(GraphicsContext* context, ScrollbarThemeClient* scrollbar, const IntRect& rect) { GtkStyleContext* styleContext = gtkScrollbarStyleContext(); gtk_style_context_save(styleContext); ScrollbarOrientation orientation = scrollbar->orientation(); applyScrollbarStyleContextClasses(styleContext, orientation); gtk_style_context_add_class(styleContext, GTK_STYLE_CLASS_SLIDER); guint flags = 0; if (scrollbar->pressedPart() == ThumbPart) flags |= GTK_STATE_FLAG_ACTIVE; if (scrollbar->hoveredPart() == ThumbPart) flags |= GTK_STATE_FLAG_PRELIGHT; gtk_style_context_set_state(styleContext, static_cast<GtkStateFlags>(flags)); gtk_render_slider(styleContext, context->platformContext()->cr(), rect.x(), rect.y(), rect.width(), rect.height(), orientation == VerticalScrollbar ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL); gtk_style_context_restore(styleContext); }
static void draw_horizontal_scrollbar (GtkWidget *widget, cairo_t *cr, gint x, gint y, gint width, gint height, gint position, GtkStateFlags state) { GtkStyleContext *scrollbar_context; GtkStyleContext *trough_context; GtkStyleContext *slider_context; /* This information is taken from the GtkScrollbar docs, see "CSS nodes" */ const char *path[3] = { "scrollbar.horizontal", "trough", "slider" }; scrollbar_context = get_style (NULL, path[0]); trough_context = get_style (scrollbar_context, path[1]); slider_context = get_style (trough_context, path[2]); gtk_style_context_set_state (scrollbar_context, state); gtk_style_context_set_state (trough_context, state); gtk_style_context_set_state (slider_context, state); gtk_render_background (trough_context, cr, x, y, width, height); gtk_render_frame (trough_context, cr, x, y, width, height); gtk_render_slider (slider_context, cr, x + position, y + 1, 30, height - 2, GTK_ORIENTATION_HORIZONTAL); g_object_unref (slider_context); g_object_unref (trough_context); g_object_unref (scrollbar_context); }