~cairo-dock-team/cairo-dock-core/3.2.x

« back to all changes in this revision

Viewing changes to src/cairo-dock-menu.c

  • Committer: Fabrice Rey
  • Date: 2013-04-07 11:30:36 UTC
  • Revision ID: fabounet03@gmail.com-20130407113036-7vgz3v9e8f6fx47p
fixes: merged from trunk revisions 1453..1461

Show diffs side-by-side

added added

removed removed

Lines of Context:
713
713
        g_free (cValidDockName);
714
714
}
715
715
 
716
 
static void _add_one_dock_to_menu (const gchar *cName, CairoDock *pDock, GtkWidget *pMenu)
 
716
static void _cairo_dock_add_docks_sub_menu (GtkWidget *pMenu, Icon *pIcon)
717
717
{
718
 
        // on ne prend que les sous-docks utilisateur.
719
 
        Icon *pPointingIcon = cairo_dock_search_icon_pointing_on_dock (pDock, NULL);
720
 
        if (pPointingIcon && ! CAIRO_DOCK_ICON_TYPE_IS_CONTAINER (pPointingIcon))
721
 
                return;
722
 
        // on elimine le dock courant.
723
 
        Icon *pIcon = g_object_get_data (G_OBJECT (pMenu), "icon-item");
724
 
        if (strcmp (pIcon->cParentDockName, cName) == 0)
725
 
                return;
726
 
        // on elimine le sous-dock.
727
 
        if (pIcon->pSubDock != NULL && pIcon->pSubDock == pDock)
728
 
                return;
729
 
        // On definit un nom plus parlant.
730
 
        gchar *cUserName = cairo_dock_get_readable_name_for_fock (pDock);
731
 
        // on rajoute une entree pour le dock.
732
 
        GtkWidget *pMenuItem = cairo_dock_add_in_menu_with_stock_and_data (cUserName ? cUserName : cName, NULL, G_CALLBACK (_cairo_dock_move_launcher_to_dock), pMenu, (gpointer)cName);
 
718
        GtkWidget *pSubMenuDocks = cairo_dock_create_sub_menu (_("Move to another dock"), pMenu, GTK_STOCK_JUMP_TO);
 
719
        g_object_set_data (G_OBJECT (pSubMenuDocks), "icon-item", pIcon);
 
720
        GtkWidget *pMenuItem = cairo_dock_add_in_menu_with_stock_and_data (_("New main dock"), GTK_STOCK_NEW, G_CALLBACK (_cairo_dock_move_launcher_to_dock), pSubMenuDocks, NULL);
733
721
        g_object_set_data (G_OBJECT (pMenuItem), "icon-item", pIcon);
734
 
        g_free (cUserName);
 
722
        
 
723
        GList *pDocks = cairo_dock_get_available_docks_for_icon (pIcon);
 
724
        const gchar *cName;
 
725
        gchar *cUserName;
 
726
        CairoDock *pDock;
 
727
        GList *d;
 
728
        for (d = pDocks; d != NULL; d = d->next)
 
729
        {
 
730
                pDock = d->data;
 
731
                cName = cairo_dock_search_dock_name (pDock);
 
732
                cUserName = cairo_dock_get_readable_name_for_fock (pDock);
 
733
                
 
734
                GtkWidget *pMenuItem = cairo_dock_add_in_menu_with_stock_and_data (cUserName ? cUserName : cName, NULL, G_CALLBACK (_cairo_dock_move_launcher_to_dock), pSubMenuDocks, (gpointer)cName);
 
735
                g_object_set_data (G_OBJECT (pMenuItem), "icon-item", pIcon);
 
736
                g_free (cUserName);
 
737
        }
 
738
        g_list_free (pDocks);
735
739
}
736
740
 
737
741
static void _cairo_dock_make_launcher_from_appli (G_GNUC_UNUSED GtkMenuItem *pMenuItem, gpointer *data)
1200
1204
                                pMenuItem = _add_entry_in_menu (_("Remove"), GTK_STOCK_REMOVE, _cairo_dock_remove_launcher, pItemSubMenu);
1201
1205
                                gtk_widget_set_tooltip_text (pMenuItem, _("You can remove a launcher by dragging it out of the dock with the mouse ."));
1202
1206
                                
1203
 
                                GtkWidget *pSubMenuDocks = cairo_dock_create_sub_menu (_("Move to another dock"), pItemSubMenu, GTK_STOCK_JUMP_TO);
1204
 
                                g_object_set_data (G_OBJECT (pSubMenuDocks), "icon-item", pIcon);
1205
 
                                pMenuItem = cairo_dock_add_in_menu_with_stock_and_data (_("New main dock"), GTK_STOCK_NEW, G_CALLBACK (_cairo_dock_move_launcher_to_dock), pSubMenuDocks, NULL);
1206
 
                                g_object_set_data (G_OBJECT (pMenuItem), "icon-item", pIcon);
1207
 
                                cairo_dock_foreach_docks ((GHFunc) _add_one_dock_to_menu, pSubMenuDocks);
 
1207
                                _cairo_dock_add_docks_sub_menu (pItemSubMenu, pIcon);
1208
1208
                        }
1209
1209
                        else if (CAIRO_DOCK_ICON_TYPE_IS_APPLI (pIcon)
1210
1210
                                || CAIRO_DOCK_ICON_TYPE_IS_CLASS_CONTAINER (pIcon))  // appli with no launcher
1260
1260
                                
1261
1261
                                if (CAIRO_DOCK_IS_DOCK (pContainer) && pIcon->cParentDockName != NULL)  // sinon bien sur ca n'est pas la peine de presenter l'option (Cairo-Penguin par exemple)
1262
1262
                                {
1263
 
                                        GtkWidget *pSubMenuDocks = cairo_dock_create_sub_menu (_("Move to another dock"), pItemSubMenu, GTK_STOCK_JUMP_TO);
1264
 
                                        g_object_set_data (G_OBJECT (pSubMenuDocks), "icon-item", pIcon);
1265
 
                                        pMenuItem = cairo_dock_add_in_menu_with_stock_and_data (_("New main dock"), GTK_STOCK_NEW, G_CALLBACK (_cairo_dock_move_launcher_to_dock), pSubMenuDocks, NULL);
1266
 
                                        g_object_set_data (G_OBJECT (pMenuItem), "icon-item", pIcon);
1267
 
                                        cairo_dock_foreach_docks ((GHFunc) _add_one_dock_to_menu, pSubMenuDocks);
 
1263
                                        _cairo_dock_add_docks_sub_menu (pItemSubMenu, pIcon);
1268
1264
                                }
1269
1265
                                
1270
1266
                                pMenuItem = gtk_separator_menu_item_new ();