From b6d080e4145c89bbba15dbaa4d2a7bf84f752012 Mon Sep 17 00:00:00 2001 From: Sanel Zukan Date: Thu, 9 Jul 2009 13:59:51 +0000 Subject: [PATCH] Run icon action via menu 'Open' --- ede-desktop/DesktopIcon.cpp | 10 +++++++++- ede-desktop/DesktopIcon.h | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ede-desktop/DesktopIcon.cpp b/ede-desktop/DesktopIcon.cpp index 880937b..e95e230 100644 --- a/ede-desktop/DesktopIcon.cpp +++ b/ede-desktop/DesktopIcon.cpp @@ -54,11 +54,12 @@ EDELIB_NS_USING(ICON_SIZE_TINY) EDELIB_NS_USING(input) EDELIB_NS_USING(run_async) +static void open_cb(Fl_Widget*, void* d); static void rename_cb(Fl_Widget*, void* d); static void props_cb(Fl_Widget*, void* d); static MenuItem icon_menu[] = { - {_("&Open"), 0, 0}, + {_("&Open"), 0, open_cb, 0}, {_("&Rename"), 0, rename_cb, 0}, {_("&Delete"), 0, 0, 0, FL_MENU_DIVIDER}, {_("&Properties"), 0, props_cb, 0}, @@ -72,6 +73,13 @@ static MenuItem icon_trash_menu[] = { {0} }; +static void open_cb(Fl_Widget*, void* d) { + DesktopIcon* di = (DesktopIcon*)d; + IconSettings* s = di->get_settings(); + + run_async("ede-launch %s", s->cmd.c_str()); +} + static void rename_cb(Fl_Widget*, void* d) { DesktopIcon* di = (DesktopIcon*)d; diff --git a/ede-desktop/DesktopIcon.h b/ede-desktop/DesktopIcon.h index 1b53799..c28e888 100644 --- a/ede-desktop/DesktopIcon.h +++ b/ede-desktop/DesktopIcon.h @@ -57,6 +57,8 @@ public: int drag_icon_x(void); int drag_icon_y(void); + IconSettings* get_settings(void) { return settings; } + /* * This is 'enhanced' (in some sense) redraw(). Redrawing * icon will not fully redraw label nor focus box, which laid outside