summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ui/widget/iconrenderer.cpp13
-rw-r--r--src/ui/widget/iconrenderer.h5
2 files changed, 16 insertions, 2 deletions
diff --git a/src/ui/widget/iconrenderer.cpp b/src/ui/widget/iconrenderer.cpp
index 9826d0bd3..4db870454 100644
--- a/src/ui/widget/iconrenderer.cpp
+++ b/src/ui/widget/iconrenderer.cpp
@@ -33,6 +33,14 @@ IconRenderer::IconRenderer() :
set_pixbuf();
}
+/*
+ * Called when an icon is clicked.
+ */
+IconRenderer::type_signal_activated IconRenderer::signal_activated()
+{
+ return m_signal_activated;
+}
+
void IconRenderer::get_preferred_height_vfunc(Gtk::Widget& widget,
int& min_h,
int& nat_h) const
@@ -76,12 +84,13 @@ void IconRenderer::render_vfunc( const Cairo::RefPtr<Cairo::Context>& cr,
bool IconRenderer::activate_vfunc(GdkEvent* /*event*/,
Gtk::Widget& /*widget*/,
- const Glib::ustring& /*path*/,
+ const Glib::ustring& path,
const Gdk::Rectangle& /*background_area*/,
const Gdk::Rectangle& /*cell_area*/,
Gtk::CellRendererState /*flags*/)
{
- return false;
+ m_signal_activated.emit(path);
+ return true;
}
void IconRenderer::add_icon(Glib::ustring name)
diff --git a/src/ui/widget/iconrenderer.h b/src/ui/widget/iconrenderer.h
index 1f5aafde9..7f8e475ac 100644
--- a/src/ui/widget/iconrenderer.h
+++ b/src/ui/widget/iconrenderer.h
@@ -28,7 +28,12 @@ public:
Glib::PropertyProxy< Glib::RefPtr<Gdk::Pixbuf> > property_pixbuf_off();
void add_icon(Glib::ustring name);
+
+ typedef sigc::signal<void, Glib::ustring> type_signal_activated;
+ type_signal_activated signal_activated();
protected:
+ type_signal_activated m_signal_activated;
+
void render_vfunc( const Cairo::RefPtr<Cairo::Context>& cr,
Gtk::Widget& widget,
const Gdk::Rectangle& background_area,