Index: plugins/launcher/launcher.c =================================================================== --- plugins/launcher/launcher.c (révision 21199) +++ plugins/launcher/launcher.c (copie de travail) @@ -836,10 +836,38 @@ LauncherPlugin *launcher) { guint modifiers; + gchar *real_exec = NULL, *paste = NULL, *paste_esc; + GtkClipboard *clip; + LauncherEntry *entry; modifiers = gtk_accelerator_get_default_mod_mask (); - if (ev->button != 1 || (ev->button == 1 && + if (ev->button == 2) + { + entry = g_ptr_array_index (launcher->entries, 0); + clip = gtk_clipboard_get (GDK_SELECTION_PRIMARY); + paste = gtk_clipboard_wait_for_text (clip); + if (paste != NULL) + { + /* Corrupt entry->real_exec */ + real_exec = g_strdup (entry->real_exec); + g_free (entry->real_exec); + paste_esc = g_strescape (paste, NULL); + entry->real_exec = g_strconcat (real_exec, + " \"", paste_esc, "\"", NULL); + g_free (paste); + g_free (paste_esc); + } + launcher_entry_exec (gtk_widget_get_screen (b), entry); + if (real_exec != NULL) + { + /* Restore entry->real_exec */ + g_stpcpy (entry->real_exec, real_exec); + g_free (real_exec); + } + return FALSE; + } + else if (ev->button != 1 || (ev->button == 1 && (ev->state & modifiers) == GDK_CONTROL_MASK)) { return FALSE;