summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2012-05-21 22:49:32 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2012-05-21 22:49:32 +0000
commitecf76a3a8909a56a322a5525a072054472219726 (patch)
tree768cff48f0dc4d918eed61a34183f20069f889e3 /src
parentFix missing header in svg-fonts-dialog needed for GTK+ 3 build (diff)
downloadinkscape-ecf76a3a8909a56a322a5525a072054472219726.tar.gz
inkscape-ecf76a3a8909a56a322a5525a072054472219726.zip
Start GTK+ 3 rendering in OCAL dialogs
(bzr r11397)
Diffstat (limited to 'src')
-rw-r--r--src/ui/dialog/ocaldialogs.cpp45
-rw-r--r--src/ui/dialog/ocaldialogs.h12
2 files changed, 56 insertions, 1 deletions
diff --git a/src/ui/dialog/ocaldialogs.cpp b/src/ui/dialog/ocaldialogs.cpp
index 9dccb9c85..1ccc15d23 100644
--- a/src/ui/dialog/ocaldialogs.cpp
+++ b/src/ui/dialog/ocaldialogs.cpp
@@ -307,22 +307,46 @@ LoadingBox::LoadingBox() : Gtk::EventBox()
set_visible_window(false);
draw_spinner = false;
spinner_step = 0;
+
+#if WITH_GTKMM_3_0
+ signal_draw().connect(sigc::mem_fun(*this, &LoadingBox::_on_draw), false);
+#else
signal_expose_event().connect(sigc::mem_fun(*this, &LoadingBox::_on_expose_event), false);
+#endif
}
+#if !WITH_GTKMM_3_0
bool LoadingBox::_on_expose_event(GdkEventExpose* /*event*/)
{
Cairo::RefPtr<Cairo::Context> cr = get_window()->create_cairo_context();
+ return _on_draw(cr);
+}
+#endif
+
+bool LoadingBox::_on_draw(const Cairo::RefPtr<Cairo::Context>& cr)
+{
// Draw 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::render_frame instead
+ GtkWidget* widget = GTK_WIDGET(gobj());
+ gtk_paint_shadow(gtk_widget_get_style(widget),
+ 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
if (draw_spinner) {
int spinner_size = 16;
@@ -330,10 +354,19 @@ bool LoadingBox::_on_expose_event(GdkEventExpose* /*event*/)
int spinner_y = y + (height - spinner_size) / 2;
// FIXME: Gtk::Style::paint_spinner not yet in gtkmm
+ // In Gtkmm 3.0, Gtk::StyleContext::render_activity should
+ // be used instead.
+#if WITH_GTKMM_3_0
+ gtk_paint_spinner(gtk_widget_get_style(GTK_WIDGET(gobj())),
+ cr->cobj(),
+ gtk_widget_get_state(GTK_WIDGET(gobj())), GTK_WIDGET(gobj()),
+ NULL, spinner_step, spinner_x, spinner_y, spinner_size, spinner_size);
+#else
gtk_paint_spinner(gtk_widget_get_style(GTK_WIDGET(gobj())),
gtk_widget_get_window(GTK_WIDGET(gobj())),
gtk_widget_get_state(GTK_WIDGET(gobj())), NULL, GTK_WIDGET(gobj()),
NULL, spinner_step, spinner_x, spinner_y, spinner_size, spinner_size);
+#endif
}
return false;
@@ -403,7 +436,11 @@ PreviewWidget::PreviewWidget() : Gtk::VBox(false, 12)
box_loading->set_size_request(90, 90);
set_border_width(12);
+#if WITH_GTKMM_3_0
+ signal_draw().connect(sigc::mem_fun(*this, &PreviewWidget::_on_draw), false);
+#else
signal_expose_event().connect(sigc::mem_fun(*this, &PreviewWidget::_on_expose_event), false);
+#endif
clear();
}
@@ -447,15 +484,23 @@ void PreviewWidget::clear()
image->hide();
}
+#if !WITH_GTKMM_3_0
bool PreviewWidget::_on_expose_event(GdkEventExpose* /*event*/)
{
Cairo::RefPtr<Cairo::Context> cr = get_window()->create_cairo_context();
+ return _on_draw(cr);
+}
+#endif
+
+bool PreviewWidget::_on_draw(Cairo::RefPtr<Cairo::Context>& cr)
+{
// Draw background
int x = get_allocation().get_x();
int y = get_allocation().get_y();
int width = get_allocation().get_width();
int height = get_allocation().get_height();
+
Gdk::Color background_fill = get_style()->get_base(get_state());
cr->rectangle(x, y, width, height);
diff --git a/src/ui/dialog/ocaldialogs.h b/src/ui/dialog/ocaldialogs.h
index 9e471b7b5..3e6f4035f 100644
--- a/src/ui/dialog/ocaldialogs.h
+++ b/src/ui/dialog/ocaldialogs.h
@@ -272,7 +272,12 @@ private:
unsigned int spinner_step;
sigc::connection timeout;
bool draw_spinner;
+
+#if !WITH_GTKMM_3_0
bool _on_expose_event(GdkEventExpose* event);
+#endif
+
+ bool _on_draw(const Cairo::RefPtr<Cairo::Context>& cr);
bool on_timeout();
};
@@ -286,7 +291,6 @@ public:
void hide_box_loading();
void set_image(std::string path);
void clear();
- bool _on_expose_event(GdkEventExpose* event);
private:
LoadingBox* box_loading;
@@ -295,6 +299,12 @@ private:
WrapLabel* label_title;
WrapLabel* label_description;
WrapLabel* label_time;
+
+#if !WITH_GTKMM_3_0
+ bool _on_expose_event(GdkEventExpose* event);
+#endif
+
+ bool _on_draw(Cairo::RefPtr<Cairo::Context>& cr);
};
/**