]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/pluginmenu.cpp
GTK: wrap GTK_WIDGET
[xonotic/netradiant.git] / radiant / pluginmenu.cpp
index d3c1519d4d6cc1962f0954e7e767e7d930379f44..c33be6a7fad50184b89fd2bfcc7ae65944f7283a 100644 (file)
@@ -21,6 +21,8 @@
 
 #include "pluginmenu.h"
 
+#include <gtk/gtk.h>
+
 #include "stream/textstream.h"
 
 #include "gtkutil/pointer.h"
@@ -40,19 +42,19 @@ void plugin_activated( ui::Widget widget, gpointer data ){
 
 #include <stack>
 
-void PlugInMenu_Add( GtkMenu* plugin_menu, IPlugIn* pPlugIn ){
-       ui::Widget item, parent;
-       ui::Menu menu{nullptr}, subMenu{nullptr};
+void PlugInMenu_Add( ui::Menu plugin_menu, IPlugIn* pPlugIn ){
+       ui::Widget item{ui::null}, parent{ui::null};
+       ui::Menu menu{ui::null}, subMenu{ui::null};
        const char *menuText, *menuCommand;
        std::stack<ui::Menu> menuStack;
 
        parent = ui::MenuItem( pPlugIn->getMenuName() );
        parent.show();
-       gtk_container_add( GTK_CONTAINER( plugin_menu ), parent );
+       plugin_menu.add(parent);
 
        std::size_t nCount = pPlugIn->getCommandCount();
        if ( nCount > 0 ) {
-               menu = ui::Menu();
+               menu = ui::Menu(ui::New);
                if ( g_Layout_enableDetachableMenus.m_value ) {
                        menu_tearoff( menu );
                }
@@ -76,9 +78,9 @@ void PlugInMenu_Add( GtkMenu* plugin_menu, IPlugIn* pPlugIn ){
 
                                        item = ui::MenuItem( menuText );
                                        item.show();
-                                       gtk_container_add( GTK_CONTAINER( menu ), item );
+                                       menu.add(item);
 
-                                       subMenu = ui::Menu();
+                                       subMenu = ui::Menu(ui::New);
                                        gtk_menu_item_set_submenu( GTK_MENU_ITEM( item ), subMenu );
                                        menuStack.push( menu );
                                        menu = subMenu;
@@ -99,10 +101,10 @@ void PlugInMenu_Add( GtkMenu* plugin_menu, IPlugIn* pPlugIn ){
                                {
                                        item = ui::MenuItem( menuText );
                                        g_object_set_data( G_OBJECT( item ),"command", const_cast<gpointer>( static_cast<const void*>( menuCommand ) ) );
-                                       g_signal_connect( G_OBJECT( item ), "activate", G_CALLBACK( plugin_activated ), gint_to_pointer( m_nNextPlugInID ) );
+                                       item.connect( "activate", G_CALLBACK( plugin_activated ), gint_to_pointer( m_nNextPlugInID ) );
                                }
                                item.show();
-                               gtk_container_add( GTK_CONTAINER( menu ), item );
+                               menu.add(item);
                                pPlugIn->addMenuID( m_nNextPlugInID++ );
                        }
                }
@@ -122,15 +124,15 @@ void PlugInMenu_Add( GtkMenu* plugin_menu, IPlugIn* pPlugIn ){
        }
 }
 
-GtkMenu* g_plugins_menu = 0;
+ui::Menu g_plugins_menu{ui::null};
 GtkMenuItem* g_plugins_menu_separator = 0;
 
 void PluginsMenu_populate(){
        class PluginsMenuConstructor : public PluginsVisitor
        {
-       GtkMenu* m_menu;
+       ui::Menu m_menu;
 public:
-       PluginsMenuConstructor( GtkMenu* menu ) : m_menu( menu ){
+       PluginsMenuConstructor( ui::Menu menu ) : m_menu( menu ){
        }
        void visit( IPlugIn& plugin ){
                PlugInMenu_Add( m_menu, &plugin );
@@ -144,17 +146,17 @@ public:
 void PluginsMenu_clear(){
        m_nNextPlugInID = 0;
 
-       GList* lst = g_list_find( gtk_container_get_children( GTK_CONTAINER( g_plugins_menu ) ), GTK_WIDGET( g_plugins_menu_separator ) );
+       GList* lst = g_list_find( gtk_container_get_children( GTK_CONTAINER( g_plugins_menu ) ), g_plugins_menu_separator  );
        while ( lst->next )
        {
-               gtk_container_remove( GTK_CONTAINER( g_plugins_menu ), GTK_WIDGET( lst->next->data ) );
-               lst = g_list_find( gtk_container_get_children( GTK_CONTAINER( g_plugins_menu ) ),  GTK_WIDGET( g_plugins_menu_separator ) );
+               g_plugins_menu.remove(ui::Widget::from(lst->next->data));
+               lst = g_list_find( gtk_container_get_children( GTK_CONTAINER( g_plugins_menu ) ),  g_plugins_menu_separator  );
        }
 }
 
-GtkMenuItem* create_plugins_menu(){
+ui::MenuItem create_plugins_menu(){
        // Plugins menu
-       GtkMenuItem* plugins_menu_item = new_sub_menu_item_with_mnemonic( "_Plugins" );
+       auto plugins_menu_item = new_sub_menu_item_with_mnemonic( "_Plugins" );
        auto menu = ui::Menu(GTK_MENU( gtk_menu_item_get_submenu( plugins_menu_item ) ));
        if ( g_Layout_enableDetachableMenus.m_value ) {
                menu_tearoff( menu );