summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2012-05-22 10:25:52 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2012-05-22 10:25:52 +0000
commit9a2a73521e67ae2753b623a4dbd0e6a024d0b3f4 (patch)
tree4789974de8cec5c8d085828d017f72412ed26f19 /src
parentUse theme foreground colour for ruler tick drawing (diff)
downloadinkscape-9a2a73521e67ae2753b623a4dbd0e6a024d0b3f4.tar.gz
inkscape-9a2a73521e67ae2753b623a4dbd0e6a024d0b3f4.zip
GTK+ 3 drawing in OCAL dialog
(bzr r11399)
Diffstat (limited to 'src')
-rw-r--r--src/ui/dialog/ocaldialogs.cpp71
-rw-r--r--src/ui/dialog/ocaldialogs.h10
2 files changed, 77 insertions, 4 deletions
diff --git a/src/ui/dialog/ocaldialogs.cpp b/src/ui/dialog/ocaldialogs.cpp
index 1ccc15d23..e87b0d831 100644
--- a/src/ui/dialog/ocaldialogs.cpp
+++ b/src/ui/dialog/ocaldialogs.cpp
@@ -493,7 +493,7 @@ bool PreviewWidget::_on_expose_event(GdkEventExpose* /*event*/)
}
#endif
-bool PreviewWidget::_on_draw(Cairo::RefPtr<Cairo::Context>& cr)
+bool PreviewWidget::_on_draw(const Cairo::RefPtr<Cairo::Context>& cr)
{
// Draw background
int x = get_allocation().get_x();
@@ -501,7 +501,14 @@ bool PreviewWidget::_on_draw(Cairo::RefPtr<Cairo::Context>& cr)
int width = get_allocation().get_width();
int height = get_allocation().get_height();
+#if WITH_GTKMM_3_0
+ // FIXME: Should use Gtk::StyleContext instead
+ GtkWidget *widget = GTK_WIDGET(gobj());
+ GtkStyle *style = gtk_widget_get_style(widget);
+ Gdk::Color background_fill = Glib::wrap(&(style->base[gtk_widget_get_state(widget)]));
+#else
Gdk::Color background_fill = get_style()->get_base(get_state());
+#endif
cr->rectangle(x, y, width, height);
Gdk::Cairo::set_source_color(cr, background_fill);
@@ -599,28 +606,58 @@ void SearchEntry::_on_changed()
BaseBox::BaseBox() : Gtk::EventBox()
{
+#if WITH_GTKMM_3_0
+ signal_draw().connect(sigc::mem_fun(*this, &BaseBox::_on_draw), false);
+#else
signal_expose_event().connect(sigc::mem_fun(*this, &BaseBox::_on_expose_event), false);
+#endif
set_visible_window(false);
}
+#if !WITH_GTKMM_3_0
bool BaseBox::_on_expose_event(GdkEventExpose* /*event*/)
{
Cairo::RefPtr<Cairo::Context> cr = get_window()->create_cairo_context();
+ return _on_draw(cr);
+}
+#endif
+
+bool BaseBox::_on_draw(const Cairo::RefPtr<Cairo::Context>& cr)
+{
// Draw background and shadow
int x = get_allocation().get_x();
int y = get_allocation().get_y();
int width = get_allocation().get_width();
int height = get_allocation().get_height();
+
+#if WITH_GTKMM_3_0
+ // FIXME: Should use Gtk::StyleContext instead
+ GtkWidget *widget = GTK_WIDGET(gobj());
+ GtkStyle *style = gtk_widget_get_style(widget);
+ Gdk::Color background_fill = Glib::wrap(&(style->base[gtk_widget_get_state(widget)]));
+#else
Gdk::Color background_fill = get_style()->get_base(get_state());
+#endif
cr->rectangle(x, y, width, height);
Gdk::Cairo::set_source_color(cr, background_fill);
cr->fill();
+#if WITH_GTKMM_3_0
+ // FIXME: Should use Gtk::StyleContext::render_frame instead
+ gtk_paint_shadow(style,
+ cr->cobj(),
+ gtk_widget_get_state(widget),
+ GTK_SHADOW_IN,
+ widget,
+ "viewport",
+ x, y, width, height);
+#else
get_style()->paint_shadow(get_window(), get_state(), Gtk::SHADOW_IN,
Gdk::Rectangle(x, y, width, height),
*this, Glib::ustring("viewport"), x, y, width, height);
+#endif
return false;
}
@@ -636,12 +673,26 @@ LogoArea::LogoArea() : Gtk::EventBox()
logo_mask = Cairo::ImageSurface::create(Cairo::FORMAT_ARGB32, 1,1);
draw_logo = false;
}
+
+#if WITH_GTKMM_3_0
+ signal_draw().connect(sigc::mem_fun(*this, &LogoArea::_on_draw));
+#else
signal_expose_event().connect(sigc::mem_fun(*this, &LogoArea::_on_expose_event));
+#endif
set_visible_window(false);
}
+#if !WITH_GTKMM_3_0
bool LogoArea::_on_expose_event(GdkEventExpose* /*event*/)
{
+ Cairo::RefPtr<Cairo::Context> cr = get_window()->create_cairo_context();
+
+ return _on_draw(cr);
+}
+#endif
+
+bool LogoArea::_on_draw(const Cairo::RefPtr<Cairo::Context>& cr)
+{
if (draw_logo) {
int x = get_allocation().get_x();
int y = get_allocation().get_y();
@@ -650,11 +701,16 @@ bool LogoArea::_on_expose_event(GdkEventExpose* /*event*/)
int x_logo = x + (width - 220) / 2;
int y_logo = y + (height - 76) / 2;
- Cairo::RefPtr<Cairo::Context> cr = get_window()->create_cairo_context();
-
// Draw logo, we mask [read fill] it with the mid colour from the
// user's GTK theme
+#if WITH_GTKMM_3_0
+ // FIXME: Should use Gtk::StyleContext instead
+ GtkWidget *widget = GTK_WIDGET(gobj());
+ GtkStyle *style = gtk_widget_get_style(widget);
+ Gdk::Color logo_fill = Glib::wrap(&(style->mid[gtk_widget_get_state(widget)]));
+#else
Gdk::Color logo_fill = get_style()->get_mid(get_state());
+#endif
Gdk::Cairo::set_source_color(cr, logo_fill);
cr->mask(logo_mask, x_logo, y_logo);
@@ -1121,7 +1177,16 @@ void ImportDialog::on_xml_file_read(const Glib::RefPtr<Gio::AsyncResult>& result
void ImportDialog::update_label_no_search_results()
{
Glib::ustring keywords = Glib::Markup::escape_text(entry_search->get_text());
+
+#if WITH_GTKMM_3_0
+ // FIXME: Should use Gtk::StyleContext instead
+ GtkWidget *widget = GTK_WIDGET(entry_search->gobj());
+ GtkStyle *style = gtk_widget_get_style(widget);
+ Gdk::Color grey = Glib::wrap(&(style->text_aa[gtk_widget_get_state(widget)]));
+#else
Gdk::Color grey = entry_search->get_style()->get_text_aa(entry_search->get_state());
+#endif
+
Glib::ustring msg_one = Glib::ustring::compose(
_("No clipart named <b>%1</b> was found."),
keywords);
diff --git a/src/ui/dialog/ocaldialogs.h b/src/ui/dialog/ocaldialogs.h
index 3e6f4035f..0dc61abb3 100644
--- a/src/ui/dialog/ocaldialogs.h
+++ b/src/ui/dialog/ocaldialogs.h
@@ -13,6 +13,8 @@
#ifndef __OCAL_DIALOG_H__
#define __OCAL_DIALOG_H__
+#include <cairomm/refptr.h>
+
//Gtk includes
#include <gtkmm/box.h>
#include <gtkmm/eventbox.h>
@@ -304,7 +306,7 @@ private:
bool _on_expose_event(GdkEventExpose* event);
#endif
- bool _on_draw(Cairo::RefPtr<Cairo::Context>& cr);
+ bool _on_draw(const Cairo::RefPtr<Cairo::Context>& cr);
};
/**
@@ -347,7 +349,10 @@ class LogoArea : public Gtk::EventBox
public:
LogoArea();
private:
+#if !WITH_GTKMM_3_0
bool _on_expose_event(GdkEventExpose* event);
+#endif
+ bool _on_draw(const Cairo::RefPtr<Cairo::Context>& cr);
bool draw_logo;
Cairo::RefPtr<Cairo::ImageSurface> logo_mask;
};
@@ -360,7 +365,10 @@ class BaseBox : public Gtk::EventBox
public:
BaseBox();
private:
+#if !WITH_GTKMM_3_0
bool _on_expose_event(GdkEventExpose* event);
+#endif
+ bool _on_draw(const Cairo::RefPtr<Cairo::Context>& cr);
};
enum {