[Xfce4-commits] <xfdesktop:master> Right click edits launchers
Eric Koegel
noreply at xfce.org
Sun Mar 2 08:24:02 CET 2014
Updating branch refs/heads/master
to 12b9528fd10769fff10346a503922fa280d0c293 (commit)
from c0c498678def0f32f24bb0a1653408c78f9495da (commit)
commit 12b9528fd10769fff10346a503922fa280d0c293
Author: Eric Koegel <eric.koegel at gmail.com>
Date: Sun Mar 2 10:20:56 2014 +0300
Right click edits launchers
When performing a right click, or shift + left click, on an item
in the applications sub-menu of the desktop menu it will now pop
up the dialog to edit the launcher.
src/xfce-desktop.c | 3 ++-
src/xfdesktop-app-menu-item.c | 53 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 55 insertions(+), 1 deletion(-)
diff --git a/src/xfce-desktop.c b/src/xfce-desktop.c
index 7ba3caa..85ea597 100644
--- a/src/xfce-desktop.c
+++ b/src/xfce-desktop.c
@@ -1219,7 +1219,8 @@ xfce_desktop_popup_menu(GtkWidget *w)
}
xfce_desktop_popup_root_menu(XFCE_DESKTOP(w), button, etime);
-
+
+ gdk_event_free((GdkEvent*)evt);
return TRUE;
}
diff --git a/src/xfdesktop-app-menu-item.c b/src/xfdesktop-app-menu-item.c
index ca19499..f443ec9 100644
--- a/src/xfdesktop-app-menu-item.c
+++ b/src/xfdesktop-app-menu-item.c
@@ -331,16 +331,67 @@ xfdesktop_app_menu_item_command(XfdesktopAppMenuItem *app_menu_item)
return g_string_free(newstr, FALSE);
}
+static gboolean
+xfdesktop_app_menu_item_edit_launcher(XfdesktopAppMenuItem *app_menu_item)
+{
+ GFile *file;
+ gchar *uri, *cmd;
+ GError *error = NULL;
+ gboolean ret = FALSE;
+
+ file = garcon_menu_item_get_file(app_menu_item->item);
+
+ if(file) {
+ uri = g_file_get_uri(file);
+ cmd = g_strdup_printf("exo-desktop-item-edit \"%s\"", uri);
+
+ if(!xfce_spawn_command_line_on_screen(NULL, cmd, FALSE, FALSE, &error)) {
+ xfce_message_dialog(NULL, _("Launch Error"),
+ GTK_STOCK_DIALOG_ERROR,
+ _("Unable to launch \"exo-desktop-item-edit\", which is required to create and edit launchers and links on the desktop."),
+ error->message, GTK_STOCK_CLOSE,
+ GTK_RESPONSE_ACCEPT, NULL);
+ g_error_free(error);
+ } else {
+ ret = TRUE;
+ }
+
+ g_free(uri);
+ g_free(cmd);
+ g_object_unref(file);
+ }
+
+ return ret;
+}
+
static void
xfdesktop_app_menu_item_activate (XfdesktopAppMenuItem *app_menu_item)
{
gchar *command;
+ GdkEventButton *evt;
+ guint button;
GError *error = NULL;
+ TRACE("entering");
+
command = xfdesktop_app_menu_item_command(app_menu_item);
if (command == NULL)
return;
+ evt = (GdkEventButton *)gtk_get_current_event();
+
+ /* Right click edits the launchers */
+ if(evt && GDK_BUTTON_RELEASE == evt->type) {
+ button = evt->button;
+
+ if(button == 3 || (button == 1 && (evt->state & GDK_SHIFT_MASK))) {
+ if(xfdesktop_app_menu_item_edit_launcher(app_menu_item)) {
+ gdk_event_free((GdkEvent*)evt);
+ return;
+ }
+ }
+ }
+
if(!xfce_spawn_command_line_on_screen(gtk_widget_get_screen(GTK_WIDGET(app_menu_item)),
command,
garcon_menu_item_requires_terminal(app_menu_item->item),
@@ -350,6 +401,8 @@ xfdesktop_app_menu_item_activate (XfdesktopAppMenuItem *app_menu_item)
command, error->message);
g_error_free(error);
}
+
+ gdk_event_free((GdkEvent*)evt);
}
GtkWidget *
More information about the Xfce4-commits
mailing list