summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2012-11-27 23:31:10 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2012-11-27 23:31:10 +0000
commit083e48b0f1e09b0f9056c6cda5a6f344a457583b (patch)
tree03521f8104cbe3e849ba6165901ffbafaa2777ca /src
parentGerman translation 100% (diff)
downloadinkscape-083e48b0f1e09b0f9056c6cda5a6f344a457583b.tar.gz
inkscape-083e48b0f1e09b0f9056c6cda5a6f344a457583b.zip
GTK+ 3: Migrate to GdkRGBA
(bzr r11910)
Diffstat (limited to 'src')
-rw-r--r--src/ui/dialog/filter-effects-dialog.cpp94
-rw-r--r--src/ui/widget/gimpspinscale.c18
-rw-r--r--src/widgets/ruler.cpp7
-rw-r--r--src/widgets/sp-color-slider.cpp13
4 files changed, 123 insertions, 9 deletions
diff --git a/src/ui/dialog/filter-effects-dialog.cpp b/src/ui/dialog/filter-effects-dialog.cpp
index 9a430114d..ddafcd481 100644
--- a/src/ui/dialog/filter-effects-dialog.cpp
+++ b/src/ui/dialog/filter-effects-dialog.cpp
@@ -1660,8 +1660,30 @@ bool FilterEffectsDialog::PrimitiveList::on_draw(const Cairo::RefPtr<Cairo::Cont
{
cr->set_line_width(1.0);
- // TODO: Use Gtk::StyleContext instead
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkStyleContext *sc = gtk_widget_get_style_context(GTK_WIDGET(gobj()));
+ GdkRGBA bg_color, fg_color;
+ gtk_style_context_get_background_color(sc, GTK_STATE_FLAG_NORMAL, &bg_color);
+ gtk_style_context_get_color(sc, GTK_STATE_FLAG_NORMAL, &fg_color);
+
+ GdkRGBA mid_color = {(bg_color.red + fg_color.red)/2.0,
+ (bg_color.green + fg_color.green)/2.0,
+ (bg_color.blue + fg_color.blue)/2.0,
+ (bg_color.alpha + fg_color.alpha)/2.0};
+
+ GdkRGBA bg_color_active, fg_color_active;
+ gtk_style_context_get_background_color(sc, GTK_STATE_FLAG_ACTIVE, &bg_color_active);
+ gtk_style_context_get_color(sc, GTK_STATE_FLAG_ACTIVE, &fg_color_active);
+
+ GdkRGBA mid_color_active = {(bg_color_active.red + fg_color_active.red)/2.0,
+ (bg_color_active.green + fg_color_active.green)/2.0,
+ (bg_color_active.blue + fg_color_active.blue)/2.0,
+ (bg_color_active.alpha + fg_color_active.alpha)/2.0};
+
+ GdkRGBA black = {0,0,0,1};
+#else
GtkStyle *style = gtk_widget_get_style(GTK_WIDGET(gobj()));
+#endif
SPFilterPrimitive* prim = get_selected();
int row_count = get_model()->children().size();
@@ -1680,13 +1702,25 @@ bool FilterEffectsDialog::PrimitiveList::on_draw(const Cairo::RefPtr<Cairo::Cont
const int x = text_start_x + get_input_type_width() * i;
cr->save();
cr->rectangle(x, 0, get_input_type_width(), vis.get_height());
+#if GTK_CHECK_VERSION(3,0,0)
+ gdk_cairo_set_source_rgba(cr->cobj(), &bg_color);
+ cr->fill_preserve();
+
+ gdk_cairo_set_source_rgba(cr->cobj(), &fg_color);
+#else
gdk_cairo_set_source_color(cr->cobj(), &(style->bg[GTK_STATE_NORMAL]));
cr->fill_preserve();
gdk_cairo_set_source_color(cr->cobj(), &(style->text[GTK_STATE_NORMAL]));
+#endif
cr->move_to(x+get_input_type_width(), 0);
cr->rotate_degrees(90);
_vertical_layout->show_in_cairo_context(cr);
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gdk_cairo_set_source_rgba(cr->cobj(), &mid_color);
+#else
gdk_cairo_set_source_color(cr->cobj(), &(style->dark[GTK_STATE_NORMAL]));
+#endif
cr->move_to(x, 0);
cr->line_to(x, vis.get_height());
cr->stroke();
@@ -1707,7 +1741,13 @@ bool FilterEffectsDialog::PrimitiveList::on_draw(const Cairo::RefPtr<Cairo::Cont
// Outline the bottom of the connection area
const int outline_x = x + fheight * (row_count - row_index);
cr->save();
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gdk_cairo_set_source_rgba(cr->cobj(), &mid_color);
+#else
gdk_cairo_set_source_color(cr->cobj(), &(style->dark[GTK_STATE_NORMAL]));
+#endif
+
cr->move_to(x, y + h);
cr->line_to(outline_x, y + h);
// Side outline
@@ -1728,10 +1768,17 @@ bool FilterEffectsDialog::PrimitiveList::on_draw(const Cairo::RefPtr<Cairo::Cont
cr->save();
+#if GTK_CHECK_VERSION(3,0,0)
+ gdk_cairo_set_source_rgba(cr->cobj(),
+ inside && mask & GDK_BUTTON1_MASK ?
+ &mid_color :
+ &mid_color_active);
+#else
gdk_cairo_set_source_color(cr->cobj(),
inside && mask & GDK_BUTTON1_MASK ?
&(style->dark[GTK_STATE_NORMAL]) :
&(style->dark[GTK_STATE_ACTIVE]));
+#endif
draw_connection_node(cr, con_poly, inside);
@@ -1751,10 +1798,17 @@ bool FilterEffectsDialog::PrimitiveList::on_draw(const Cairo::RefPtr<Cairo::Cont
cr->save();
+#if GTK_CHECK_VERSION(3,0,0)
+ gdk_cairo_set_source_rgba(cr->cobj(),
+ inside && mask & GDK_BUTTON1_MASK ?
+ &mid_color :
+ &mid_color_active);
+#else
gdk_cairo_set_source_color(cr->cobj(),
inside && mask & GDK_BUTTON1_MASK ?
&(style->dark[GTK_STATE_NORMAL]) :
&(style->dark[GTK_STATE_ACTIVE]));
+#endif
draw_connection_node(cr, con_poly, inside);
@@ -1772,10 +1826,17 @@ bool FilterEffectsDialog::PrimitiveList::on_draw(const Cairo::RefPtr<Cairo::Cont
cr->save();
+#if GTK_CHECK_VERSION(3,0,0)
+ gdk_cairo_set_source_rgba(cr->cobj(),
+ inside && mask & GDK_BUTTON1_MASK ?
+ &mid_color :
+ &mid_color_active);
+#else
gdk_cairo_set_source_color(cr->cobj(),
inside && mask & GDK_BUTTON1_MASK ?
&(style->dark[GTK_STATE_NORMAL]) :
&(style->dark[GTK_STATE_ACTIVE]));
+#endif
draw_connection_node(cr, con_poly, inside);
@@ -1790,7 +1851,11 @@ bool FilterEffectsDialog::PrimitiveList::on_draw(const Cairo::RefPtr<Cairo::Cont
// Draw drag connection
if(row_prim == prim && _in_drag) {
cr->save();
+#if GTK_CHECK_VERSION(3,0,0)
+ gdk_cairo_set_source_rgba(cr->cobj(), &black);
+#else
gdk_cairo_set_source_color(cr->cobj(), &(style->black));
+#endif
cr->move_to(outline_x, con_drag_y);
cr->line_to(mx, con_drag_y);
cr->line_to(mx, my);
@@ -1809,8 +1874,22 @@ void FilterEffectsDialog::PrimitiveList::draw_connection(const Cairo::RefPtr<Cai
{
cr->save();
- // TODO: Use Gtk::StyleContext instead
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkStyleContext *sc = gtk_widget_get_style_context(GTK_WIDGET(gobj()));
+
+ GdkRGBA bg_color, fg_color;
+ gtk_style_context_get_background_color(sc, GTK_STATE_FLAG_NORMAL, &bg_color);
+ gtk_style_context_get_color(sc, GTK_STATE_FLAG_NORMAL, &fg_color);
+
+ GdkRGBA mid_color = {(bg_color.red + fg_color.red)/2.0,
+ (bg_color.green + fg_color.green)/2.0,
+ (bg_color.blue + fg_color.blue)/2.0,
+ (bg_color.alpha + fg_color.alpha)/2.0};
+
+ GdkRGBA black = {0,0,0,1};
+#else
GtkStyle *style = gtk_widget_get_style(GTK_WIDGET(gobj()));
+#endif
int src_id = 0;
Gtk::TreeIter res = find_result(input, attr, src_id);
@@ -1825,10 +1904,17 @@ void FilterEffectsDialog::PrimitiveList::draw_connection(const Cairo::RefPtr<Cai
const int tw = get_input_type_width();
gint end_x = text_start_x + tw * src_id + (int)(tw * 0.5f) + 1;
+#if GTK_CHECK_VERSION(3,0,0)
+ if(use_default && is_first)
+ gdk_cairo_set_source_rgba(cr->cobj(), &mid_color);
+ else
+ gdk_cairo_set_source_rgba(cr->cobj(), &black);
+#else
if(use_default && is_first)
gdk_cairo_set_source_color(cr->cobj(), &(style->dark[GTK_STATE_NORMAL]));
else
gdk_cairo_set_source_color(cr->cobj(), &(style->black));
+#endif
cr->rectangle(end_x-2, y1-2, 5, 5);
cr->fill_preserve();
@@ -1856,7 +1942,11 @@ void FilterEffectsDialog::PrimitiveList::draw_connection(const Cairo::RefPtr<Cai
const int y2 = rct.get_y() + rct.get_height();
// Draw a bevelled 'L'-shaped connection
+#if GTK_CHECK_VERSION(3,0,0)
+ gdk_cairo_set_source_rgba(cr->cobj(), &black);
+#else
gdk_cairo_set_source_color(cr->cobj(), &(style->black));
+#endif
cr->move_to(x1, y1);
cr->line_to(x2-fheight/4, y1);
cr->line_to(x2, y1-fheight/4);
diff --git a/src/ui/widget/gimpspinscale.c b/src/ui/widget/gimpspinscale.c
index 222a8aa1d..f9f9a3807 100644
--- a/src/ui/widget/gimpspinscale.c
+++ b/src/ui/widget/gimpspinscale.c
@@ -408,21 +408,20 @@ static gboolean
gimp_spin_scale_expose (GtkWidget *widget, GdkEventExpose *event)
#endif
{
- GimpSpinScalePrivate *private = GET_PRIVATE (widget);
- GtkStyle *style = gtk_widget_get_style (widget);
-
+ GimpSpinScalePrivate *private = GET_PRIVATE (widget);
#if WITH_GTKMM_3_0
+ GtkStyleContext *style = gtk_widget_get_style_context(widget);
GtkAllocation allocation;
+ GdkRGBA color;
cairo_save (cr);
GTK_WIDGET_CLASS (parent_class)->draw (widget, cr);
cairo_restore (cr);
gtk_widget_get_allocation (widget, &allocation);
-
-
#else
+ GtkStyle *style = gtk_widget_get_style (widget);
cairo_t *cr;
gint w;
@@ -499,12 +498,17 @@ static gboolean
#if WITH_GTKMM_3_0
cairo_move_to (cr, layout_offset_x, text_area.y + layout_offset_y-3);
+
+ gtk_style_context_get_color (style, gtk_widget_get_state_flags (widget),
+ &color);
+
+ gdk_cairo_set_source_rgba (cr, &color);
#else
cairo_move_to (cr, layout_offset_x, layout_offset_y-3);
-#endif
-
+
gdk_cairo_set_source_color (cr,
&style->text[gtk_widget_get_state (widget)]);
+#endif
pango_cairo_show_layout (cr, private->layout);
}
diff --git a/src/widgets/ruler.cpp b/src/widgets/ruler.cpp
index 72c839b19..5104d5a9d 100644
--- a/src/widgets/ruler.cpp
+++ b/src/widgets/ruler.cpp
@@ -690,7 +690,14 @@ static void sp_ruler_real_draw_pos(SPRuler *ruler,
y = ROUND ((priv->position - priv->lower) * increment) + (ythickness - bs_height) / 2 - 1;
}
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkStyleContext *sc = gtk_widget_get_style_context(widget);
+ GdkRGBA color;
+ gtk_style_context_get_color(sc, gtk_widget_get_state_flags(widget), &color);
+ gdk_cairo_set_source_rgba(cr, &color);
+#else
gdk_cairo_set_source_color(cr, &style->fg[gtk_widget_get_state(widget)]);
+#endif
cairo_move_to (cr, x, y);
diff --git a/src/widgets/sp-color-slider.cpp b/src/widgets/sp-color-slider.cpp
index 37b9e022a..3ba748f2b 100644
--- a/src/widgets/sp-color-slider.cpp
+++ b/src/widgets/sp-color-slider.cpp
@@ -648,13 +648,22 @@ static gboolean sp_color_slider_draw(GtkWidget *widget, cairo_t *cr)
gint w = ARROW_SIZE;
cairo_set_line_width(cr, 1.0);
+#if GTK_CHECK_VERSION(3,0,0)
+ GdkRGBA white = {1,1,1,1};
+ GdkRGBA black = {0,0,0,1};
+#else
GdkColor white, black;
gdk_color_parse("#fff", &white);
gdk_color_parse("#000", &black);
+#endif
while ( w > 0 )
{
+#if GTK_CHECK_VERSION(3,0,0)
+ gdk_cairo_set_source_rgba(cr, &white);
+#else
gdk_cairo_set_source_color(cr, &white);
+#endif
cairo_move_to(cr, x - 0.5, y1 + 0.5);
cairo_line_to(cr, x + w - 1 + 0.5, y1 + 0.5);
cairo_move_to(cr, x - 0.5, y2 + 0.5);
@@ -664,7 +673,11 @@ static gboolean sp_color_slider_draw(GtkWidget *widget, cairo_t *cr)
x++;
if ( w > 0 )
{
+#if GTK_CHECK_VERSION(3,0,0)
+ gdk_cairo_set_source_rgba(cr, &black);
+#else
gdk_cairo_set_source_color(cr, &black);
+#endif
cairo_move_to(cr, x - 0.5, y1 + 0.5);
cairo_line_to(cr, x + w - 1 + 0.5, y1 + 0.5);
cairo_move_to(cr, x - 0.5, y2 + 0.5);