From e7dbdd1fb8aae96ec0e13b9f1672c805122d85ad Mon Sep 17 00:00:00 2001 From: Alex Valavanis Date: Sat, 2 Jun 2012 13:23:45 +0100 Subject: Add draw signal in filter effects dialog (bzr r11453) --- src/ui/dialog/filter-effects-dialog.cpp | 16 ++++++++++++++-- src/ui/dialog/filter-effects-dialog.h | 5 +++++ 2 files changed, 19 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/ui/dialog/filter-effects-dialog.cpp b/src/ui/dialog/filter-effects-dialog.cpp index 1ae1791f8..6a6964477 100644 --- a/src/ui/dialog/filter-effects-dialog.cpp +++ b/src/ui/dialog/filter-effects-dialog.cpp @@ -1452,10 +1452,15 @@ FilterEffectsDialog::PrimitiveList::PrimitiveList(FilterEffectsDialog& d) _in_drag(0), _observer(new Inkscape::XML::SignalObserver) { +#if WITH_GTKMM_3_0 + d.signal_draw().connect(sigc::mem_fun(*this, &PrimitiveList::on_draw)); + signal_draw().connect(sigc::mem_fun(*this, &PrimitiveList::on_draw)); +#else d.signal_expose_event().connect(sigc::mem_fun(*this, &PrimitiveList::on_expose_signal)); + signal_expose_event().connect(sigc::mem_fun(*this, &PrimitiveList::on_expose_signal)); +#endif add_events(Gdk::POINTER_MOTION_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK); - signal_expose_event().connect(sigc::mem_fun(*this, &PrimitiveList::on_expose_signal)); _model = Gtk::ListStore::create(_columns); @@ -1612,10 +1617,17 @@ void FilterEffectsDialog::PrimitiveList::remove_selected() } } +#if !WITH_GTKMM_3_0 bool FilterEffectsDialog::PrimitiveList::on_expose_signal(GdkEventExpose* e) { Glib::RefPtr win = get_bin_window(); Cairo::RefPtr cr = win->create_cairo_context(); + return on_draw(cr); +} +#endif + +bool FilterEffectsDialog::PrimitiveList::on_draw(const Cairo::RefPtr &cr) +{ cr->set_line_width(1.0); SPFilterPrimitive* prim = get_selected(); @@ -1657,7 +1669,7 @@ bool FilterEffectsDialog::PrimitiveList::on_expose_signal(GdkEventExpose* e) // Check mouse state int mx, my; Gdk::ModifierType mask; - win->get_pointer(mx, my, mask); + get_bin_window()->get_pointer(mx, my, mask); // Outline the bottom of the connection area const int outline_x = x + fheight * (row_count - row_index); diff --git a/src/ui/dialog/filter-effects-dialog.h b/src/ui/dialog/filter-effects-dialog.h index 55fb0b0da..4e75860a5 100644 --- a/src/ui/dialog/filter-effects-dialog.h +++ b/src/ui/dialog/filter-effects-dialog.h @@ -162,7 +162,12 @@ private: int get_input_type_width() const; protected: + bool on_draw(const Cairo::RefPtr &cr); + +#if !WITH_GTKMM_3_0 bool on_expose_signal(GdkEventExpose*); +#endif + bool on_button_press_event(GdkEventButton*); bool on_motion_notify_event(GdkEventMotion*); bool on_button_release_event(GdkEventButton*); -- cgit v1.2.3