Sisyphus repositório
Última atualização: 1 outubro 2023 | SRPMs: 18631 | Visitas: 37047354
en ru br
ALT Linux repositórios
S:4.18.1-alt1
5.0: 4.6.1-alt2
4.1: 4.4.3-alt0.M41.1
4.0: 4.4.2-alt1.M40
3.0: 4.2.2-alt1

Group :: Desktop gráfico/XFce
RPM: xfdesktop

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs e FR  Repocop 

Patch: 02_show_context_menu.patch
Download


diff -Nur xfdesktop-4.3.99.1/src/menu.c xfdesktop-4.3.99.1.new/src/menu.c
--- xfdesktop-4.3.99.1/src/menu.c	2006-10-23 12:51:26.000000000 +0300
+++ xfdesktop-4.3.99.1.new/src/menu.c	2006-10-23 14:12:42.000000000 +0300
@@ -72,6 +72,9 @@
 }
 #endif
 
+extern GtkWidget* common_desktop_menu(GdkScreen *gscreen);
+GtkWidget *cmenu_widget = NULL;
+
 void
 popup_desktop_menu(GdkScreen *gscreen, gint button, guint32 time)
 {
@@ -79,9 +82,16 @@
     GtkWidget *menu_widget;
     GdkWindow *root;
     
-    if(!desktop_menu)
-        return;
-    
+    if(!desktop_menu) {
+       if (!cmenu_widget) {
+           cmenu_widget = common_desktop_menu(gscreen);
+       }
+       gtk_menu_set_screen(GTK_MENU(cmenu_widget), gscreen);
+       gtk_menu_popup(GTK_MENU(cmenu_widget), NULL, NULL, NULL, NULL,
+                button, time);
+       return;
+    }
+
     if(xfce_desktop_menu_need_update(desktop_menu))
         xfce_desktop_menu_force_regen(desktop_menu);
     
diff -Nur xfdesktop-4.3.99.1/src/xfdesktop-file-icon-manager.c xfdesktop-4.3.99.1.new/src/xfdesktop-file-icon-manager.c
--- xfdesktop-4.3.99.1/src/xfdesktop-file-icon-manager.c	2006-10-23 12:51:26.000000000 +0300
+++ xfdesktop-4.3.99.1.new/src/xfdesktop-file-icon-manager.c	2006-10-23 14:13:01.000000000 +0300
@@ -1508,6 +1508,131 @@
     }
 }
 
+XfdesktopFileIconManager *the_fmanager;
+
+GtkWidget *
+common_desktop_menu(GdkScreen *gscreen)
+{
+    GList *l;
+    GtkWidget *menu2, *mi, *img, *menu3;
+    ThunarVfsMimeInfo *minfo;
+    ThunarVfsPath *templates_path;
+    gchar *templates_path_str;
+    gint w = 0, h = 0;
+    GdkPixbuf *pix;
+    XfdesktopFileIconManager *fmanager = the_fmanager;
+#ifdef HAVE_THUNARX
+    GtkWidget *toplevel = gtk_widget_get_toplevel(GTK_WIDGET(fmanager->priv->icon_view));
+#endif
+    gboolean have_templates;
+
+    gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &w, &h);
+    menu2 = gtk_menu_new();
+    
+    mi = gtk_image_menu_item_new_with_mnemonic(_("Create _Launcher..."));
+    minfo = thunar_vfs_mime_database_get_info(thunar_mime_database,
+                                              "application/x-desktop");
+    if(minfo) {
+        const gchar *icon_name = thunar_vfs_mime_info_lookup_icon_name(minfo,
+                                                                       gtk_icon_theme_get_default());
+        pix = xfce_themed_icon_load(icon_name, w);
+        if(pix) {
+            img = gtk_image_new_from_pixbuf(pix);
+            gtk_widget_show(img);
+            g_object_unref(G_OBJECT(pix));
+            gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), img);
+        }
+    }
+    g_object_set_data(G_OBJECT(mi), "xfdesktop-launcher-type", "Application");
+    gtk_widget_show(mi);
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu2), mi);
+    g_signal_connect(G_OBJECT(mi), "activate",
+                     G_CALLBACK(xfdesktop_file_icon_menu_create_launcher),
+                     fmanager);
+    
+    mi = gtk_image_menu_item_new_with_mnemonic(_("Create _URL Link..."));
+    pix = xfce_themed_icon_load("gnome-fs-bookmark", w);
+    if(!pix)
+        pix = xfce_themed_icon_load("emblem-favorite", w);
+    if(pix) {
+        img = gtk_image_new_from_pixbuf(pix);
+        gtk_widget_show(img);
+        g_object_unref(G_OBJECT(pix));
+        gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), img);
+    }
+    g_object_set_data(G_OBJECT(mi), "xfdesktop-launcher-type", "Link");
+    gtk_widget_show(mi);
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu2), mi);
+    g_signal_connect(G_OBJECT(mi), "activate",
+                     G_CALLBACK(xfdesktop_file_icon_menu_create_launcher),
+                     fmanager);
+    mi = gtk_image_menu_item_new_with_mnemonic(_("Create _Folder..."));
+    minfo = thunar_vfs_mime_database_get_info(thunar_mime_database,
+                                              "inode/directory");
+    if(minfo) {
+        const gchar *icon_name = thunar_vfs_mime_info_lookup_icon_name(minfo,
+                                                                       gtk_icon_theme_get_default());
+        pix = xfce_themed_icon_load(icon_name, w);
+        if(pix) {
+            img = gtk_image_new_from_pixbuf(pix);
+            gtk_widget_show(img);
+            g_object_unref(G_OBJECT(pix));
+            gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), img);
+        }
+    }
+    gtk_widget_show(mi);
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu2), mi);
+    g_signal_connect(G_OBJECT(mi), "activate",
+                     G_CALLBACK(xfdesktop_file_icon_menu_create_folder),
+                     fmanager);
+    
+    mi = gtk_menu_item_new_with_mnemonic("Create From _Template");
+    gtk_widget_show(mi);
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu2), mi);
+    
+    menu3 = gtk_menu_new();
+    gtk_widget_show(menu3);
+    gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), menu3);
+    
+    templates_path_str = g_build_filename(xfce_get_homedir(),
+                                          "Templates",
+                                          NULL);
+    templates_path = thunar_vfs_path_new(templates_path_str, NULL);
+    g_free(templates_path_str);
+    if(templates_path) {
+        have_templates = xfdesktop_file_icon_menu_fill_template_menu(menu3,
+                                                                     templates_path,
+                                                                     fmanager);
+        thunar_vfs_path_unref(templates_path);
+    }
+    
+    img = gtk_image_new_from_stock(GTK_STOCK_NEW, GTK_ICON_SIZE_MENU);
+    gtk_widget_show(img);
+    mi = gtk_image_menu_item_new_with_mnemonic(_("_Empty File"));
+    gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), img);
+    gtk_widget_show(mi);
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu3), mi);
+    g_signal_connect(G_OBJECT(mi), "activate",
+                     G_CALLBACK(xfdesktop_file_icon_template_item_activated),
+                     fmanager);
+    
+    mi = gtk_separator_menu_item_new();
+    gtk_widget_show(mi);
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu2), mi);
+        
+
+    img = gtk_image_new_from_stock(GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU);
+    gtk_widget_show(img);
+    mi = gtk_image_menu_item_new_with_mnemonic(_("Desktop _Settings..."));
+    gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), img);
+    gtk_widget_show(mi);
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu2), mi);
+    g_signal_connect(G_OBJECT(mi), "activate",
+                     G_CALLBACK(xfdesktop_mcs_settings_launch), fmanager);
+    
+    return menu2; 
+}
+
 static void
 xfdesktop_file_icon_menu_popup(XfdesktopIcon *icon,
                                gpointer user_data)
@@ -2720,7 +2845,8 @@
 #endif
     
     g_return_val_if_fail(!fmanager->priv->inited, FALSE);
-    
+   
+    the_fmanager = fmanager; 
     fmanager->priv->icon_view = icon_view;
     
     fmanager->priv->gscreen = gtk_widget_get_screen(GTK_WIDGET(icon_view));
 
projeto & código: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
mantenedor atual: Michael Shigorin
mantenedor da tradução: Fernando Martini aka fmartini © 2009