Updating branch refs/heads/nick/gtk3 to 2458b1e07c3aebdb086644976d9cbf2f20833b1d (commit) from b20dbb269408fb97a98de5d62b66bb8da9e08ddc (commit)
commit 2458b1e07c3aebdb086644976d9cbf2f20833b1d Author: Andrzej <ndrwr...@gmail.com> Date: Thu Apr 11 00:17:00 2013 +0100 Separator: ported to GTK3 "Dots" style separator disabled for now (not ported yet). plugins/separator/separator.c | 99 ++++++++++++++++++++++------------------ 1 files changed, 54 insertions(+), 45 deletions(-) diff --git a/plugins/separator/separator.c b/plugins/separator/separator.c index cf809ab..daced70 100644 --- a/plugins/separator/separator.c +++ b/plugins/separator/separator.c @@ -37,6 +37,7 @@ #define SEPARATOR_OFFSET (0.15) #define SEPARATOR_SIZE (8) #define DOTS_SIZE (6) +#define HANDLE_SIZE (4) @@ -48,8 +49,8 @@ static void separator_plugin_set_property (GObject guint prop_id, const GValue *value, GParamSpec *pspec); -static gboolean separator_plugin_expose_event (GtkWidget *widget, - GdkEventExpose *event); +static gboolean separator_plugin_draw (GtkWidget *widget, + cairo_t *cr); static void separator_plugin_construct (XfcePanelPlugin *panel_plugin); static gboolean separator_plugin_size_changed (XfcePanelPlugin *panel_plugin, gint size); @@ -123,7 +124,7 @@ separator_plugin_class_init (SeparatorPluginClass *klass) gobject_class->get_property = separator_plugin_get_property; widget_class = GTK_WIDGET_CLASS (klass); - widget_class->expose_event = separator_plugin_expose_event; + widget_class->draw = separator_plugin_draw; plugin_class = XFCE_PANEL_PLUGIN_CLASS (klass); plugin_class->construct = separator_plugin_construct; @@ -220,17 +221,22 @@ separator_plugin_set_property (GObject *object, static gboolean -separator_plugin_expose_event (GtkWidget *widget, - GdkEventExpose *event) +separator_plugin_draw (GtkWidget *widget, + cairo_t *cr) { - SeparatorPlugin *plugin = XFCE_SEPARATOR_PLUGIN (widget); - GtkAllocation *alloc = &(widget->allocation); - GdkBitmap *bmap; - GdkGC *gc; - GtkStateType state = GTK_WIDGET_STATE (widget); - gint x, y, w, h; - gint rows, cols; - guint i; + SeparatorPlugin *plugin = XFCE_SEPARATOR_PLUGIN (widget); + GtkAllocation alloc; + gint x, y, w, h; + gint rows, cols; + guint i; + GtkStyleContext *ctx; + GdkRGBA fg_rgba; + + gtk_widget_get_allocation (widget, &alloc); + + ctx = gtk_widget_get_style_context (widget); + gtk_style_context_get_color (ctx, gtk_widget_get_state_flags (widget), &fg_rgba); + gdk_cairo_set_source_rgba (cr, &fg_rgba); switch (plugin->style) { @@ -240,63 +246,65 @@ separator_plugin_expose_event (GtkWidget *widget, break; case SEPARATOR_PLUGIN_STYLE_SEPARATOR: + if (xfce_panel_plugin_get_orientation (XFCE_PANEL_PLUGIN (plugin)) == GTK_ORIENTATION_HORIZONTAL) { - gtk_paint_vline (widget->style, - widget->window, - state, - &(event->area), - widget, "separator", - alloc->y + alloc->height * SEPARATOR_OFFSET, - alloc->y + alloc->height * (1.00 - SEPARATOR_OFFSET), - alloc->x + alloc->width / 2 - 1); + gtk_render_line (ctx, cr, + (gdouble) (alloc.width - 1.0) / 2.0, + (gdouble) alloc.height * SEPARATOR_OFFSET, + (gdouble) (alloc.width - 1.0) / 2.0, + (gdouble) alloc.height * (1.0 - SEPARATOR_OFFSET)); } else { - gtk_paint_hline (widget->style, - widget->window, - state, - &(event->area), - widget, "separator", - alloc->x + alloc->width * SEPARATOR_OFFSET, - alloc->x + alloc->width * (1.00 - SEPARATOR_OFFSET), - alloc->y + alloc->height / 2 - 1); + gtk_render_line (ctx, cr, + (gdouble) alloc.width * SEPARATOR_OFFSET, + (gdouble) (alloc.height - 1.0) / 2.0, + (gdouble) alloc.width * (1.0 - SEPARATOR_OFFSET), + (gdouble) (alloc.height - 1.0) / 2.0); } break; case SEPARATOR_PLUGIN_STYLE_HANDLE: - gtk_paint_handle (widget->style, - widget->window, - state, - GTK_SHADOW_NONE, - &(event->area), - widget, "handlebox", - alloc->x, alloc->y, - alloc->width, - alloc->height, - xfce_panel_plugin_get_orientation (XFCE_PANEL_PLUGIN (plugin)) == - GTK_ORIENTATION_HORIZONTAL ? GTK_ORIENTATION_VERTICAL - : GTK_ORIENTATION_HORIZONTAL); + if (xfce_panel_plugin_get_orientation (XFCE_PANEL_PLUGIN (plugin)) == + GTK_ORIENTATION_HORIZONTAL) + { + gtk_render_handle (ctx, cr, + (gdouble) (alloc.width - HANDLE_SIZE) / 2.0, + (gdouble) alloc.height * SEPARATOR_OFFSET, + (gdouble) HANDLE_SIZE, + (gdouble) alloc.height * (1.0 - 2.0 * SEPARATOR_OFFSET)); + } + else + { + gtk_render_handle (ctx, cr, + (gdouble) alloc.width * SEPARATOR_OFFSET, + (gdouble) (alloc.height - HANDLE_SIZE) / 2.0, + (gdouble) alloc.width * (1.0 - 2.0 * SEPARATOR_OFFSET), + (gdouble) HANDLE_SIZE); + } break; + /* temporarily disabled */ +#if 0 case SEPARATOR_PLUGIN_STYLE_DOTS: if (xfce_panel_plugin_get_orientation (XFCE_PANEL_PLUGIN (plugin)) == GTK_ORIENTATION_HORIZONTAL) { - rows = MAX (alloc->height / DOTS_SIZE, 1); + rows = MAX (alloc.height / DOTS_SIZE, 1); w = DOTS_SIZE; h = rows * DOTS_SIZE; } else { - cols = MAX (alloc->width / DOTS_SIZE, 1); + cols = MAX (alloc.width / DOTS_SIZE, 1); h = DOTS_SIZE; w = cols * DOTS_SIZE; } - x = alloc->x + (alloc->width - w) / 2; - y = alloc->y + (alloc->height - h) / 2; + x = alloc.x + (alloc.width - w) / 2; + y = alloc.y + (alloc.height - h) / 2; for (i = 0; i < G_N_ELEMENTS (bits); i++) { @@ -327,6 +335,7 @@ separator_plugin_expose_event (GtkWidget *widget, gdk_gc_set_clip_rectangle (gc, NULL); } break; +#endif } return FALSE; _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits