diff options
| author | Alex Valavanis <valavanisalex@gmail.com> | 2012-05-22 10:25:52 +0000 |
|---|---|---|
| committer | Alex Valavanis <valavanisalex@gmail.com> | 2012-05-22 10:25:52 +0000 |
| commit | 9a2a73521e67ae2753b623a4dbd0e6a024d0b3f4 (patch) | |
| tree | 4789974de8cec5c8d085828d017f72412ed26f19 /src | |
| parent | Use theme foreground colour for ruler tick drawing (diff) | |
| download | inkscape-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.cpp | 71 | ||||
| -rw-r--r-- | src/ui/dialog/ocaldialogs.h | 10 |
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 { |
