]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - libs/gtkutil/menu.cpp
Fix GTK_CRITICAL errors
[xonotic/netradiant.git] / libs / gtkutil / menu.cpp
index 51e156e91b46d57ea7aa60e213551961e46c4371..2a8c55fb8592d75f07dcb6bf7a54d3a021db879e 100644 (file)
@@ -38,17 +38,17 @@ void menu_add_item( ui::Menu menu, ui::MenuItem item ){
 }
 
 ui::MenuItem menu_separator( ui::Menu menu ){
-       auto menu_item = ui::MenuItem(GTK_MENU_ITEM( gtk_menu_item_new() ));
+       auto menu_item = ui::MenuItem::from( gtk_menu_item_new() );
        menu.add(menu_item);
-       gtk_widget_set_sensitive( GTK_WIDGET( menu_item ), FALSE );
+       gtk_widget_set_sensitive( menu_item , FALSE );
        menu_item.show();
        return menu_item;
 }
 
 ui::TearoffMenuItem menu_tearoff( ui::Menu menu ){
-       auto menu_item = ui::TearoffMenuItem(GTK_TEAROFF_MENU_ITEM( gtk_tearoff_menu_item_new() ));
+       auto menu_item = ui::TearoffMenuItem::from( gtk_tearoff_menu_item_new() );
        menu.add(menu_item);
-// gtk_widget_set_sensitive(GTK_WIDGET(menu_item), FALSE); -- controls whether menu is detachable
+// gtk_widget_set_sensitive(menu_item, FALSE); -- controls whether menu is detachable
        menu_item.show();
        return menu_item;
 }
@@ -57,7 +57,7 @@ ui::MenuItem new_sub_menu_item_with_mnemonic( const char* mnemonic ){
        auto item = ui::MenuItem( mnemonic, true );
        item.show();
 
-       auto sub_menu = ui::Menu();
+       auto sub_menu = ui::Menu(ui::New);
        gtk_menu_item_set_submenu( item, sub_menu );
 
        return item;
@@ -66,22 +66,22 @@ ui::MenuItem new_sub_menu_item_with_mnemonic( const char* mnemonic ){
 ui::Menu create_sub_menu_with_mnemonic( ui::MenuShell parent, const char* mnemonic ){
        auto item = new_sub_menu_item_with_mnemonic( mnemonic );
        parent.add(item);
-       return ui::Menu(GTK_MENU( gtk_menu_item_get_submenu( item ) ));
+       return ui::Menu::from( gtk_menu_item_get_submenu( item ) );
 }
 
 ui::Menu create_sub_menu_with_mnemonic( ui::MenuBar bar, const char* mnemonic ){
-       return create_sub_menu_with_mnemonic( ui::MenuShell(GTK_MENU_SHELL( bar )), mnemonic );
+       return create_sub_menu_with_mnemonic( ui::MenuShell::from( bar._handle ), mnemonic );
 }
 
 ui::Menu create_sub_menu_with_mnemonic( ui::Menu parent, const char* mnemonic ){
-       return create_sub_menu_with_mnemonic( ui::MenuShell(GTK_MENU_SHELL( parent )), mnemonic );
+       return create_sub_menu_with_mnemonic( ui::MenuShell::from( parent._handle ), mnemonic );
 }
 
 void activate_closure_callback( ui::Widget widget, gpointer data ){
-       ( *reinterpret_cast<Callback*>( data ) )( );
+       ( *reinterpret_cast<Callback<void()>*>( data ) )( );
 }
 
-guint menu_item_connect_callback( ui::MenuItem item, const Callback& callback ){
+guint menu_item_connect_callback( ui::MenuItem item, const Callback<void()>& callback ){
 #if 1
        return g_signal_connect_swapped( G_OBJECT( item ), "activate", G_CALLBACK( callback.getThunk() ), callback.getEnvironment() );
 #else
@@ -89,7 +89,7 @@ guint menu_item_connect_callback( ui::MenuItem item, const Callback& callback ){
 #endif
 }
 
-guint check_menu_item_connect_callback( ui::CheckMenuItem item, const Callback& callback ){
+guint check_menu_item_connect_callback( ui::CheckMenuItem item, const Callback<void()>& callback ){
 #if 1
        guint handler = g_signal_connect_swapped( G_OBJECT( item ), "toggled", G_CALLBACK( callback.getThunk() ), callback.getEnvironment() );
 #else
@@ -99,34 +99,34 @@ guint check_menu_item_connect_callback( ui::CheckMenuItem item, const Callback&
        return handler;
 }
 
-ui::MenuItem new_menu_item_with_mnemonic( const char *mnemonic, const Callback& callback ){
+ui::MenuItem new_menu_item_with_mnemonic( const char *mnemonic, const Callback<void()>& callback ){
        auto item = ui::MenuItem( mnemonic, true );
        item.show();
        menu_item_connect_callback( item, callback );
        return item;
 }
 
-ui::MenuItem create_menu_item_with_mnemonic( ui::Menu menu, const char *mnemonic, const Callback& callback ){
+ui::MenuItem create_menu_item_with_mnemonic( ui::Menu menu, const char *mnemonic, const Callback<void()>& callback ){
        auto item = new_menu_item_with_mnemonic( mnemonic, callback );
        menu.add(item);
        return item;
 }
 
-ui::CheckMenuItem new_check_menu_item_with_mnemonic( const char* mnemonic, const Callback& callback ){
-       auto item = ui::CheckMenuItem(GTK_CHECK_MENU_ITEM( gtk_check_menu_item_new_with_mnemonic( mnemonic ) ));
+ui::CheckMenuItem new_check_menu_item_with_mnemonic( const char* mnemonic, const Callback<void()>& callback ){
+       auto item = ui::CheckMenuItem::from( gtk_check_menu_item_new_with_mnemonic( mnemonic ) );
        item.show();
        check_menu_item_connect_callback( item, callback );
        return item;
 }
 
-ui::CheckMenuItem create_check_menu_item_with_mnemonic( ui::Menu menu, const char* mnemonic, const Callback& callback ){
+ui::CheckMenuItem create_check_menu_item_with_mnemonic( ui::Menu menu, const char* mnemonic, const Callback<void()>& callback ){
        auto item = new_check_menu_item_with_mnemonic( mnemonic, callback );
        menu.add(item);
        return item;
 }
 
-ui::RadioMenuItem new_radio_menu_item_with_mnemonic( GSList** group, const char* mnemonic, const Callback& callback ){
-       auto item = ui::RadioMenuItem(GTK_RADIO_MENU_ITEM( gtk_radio_menu_item_new_with_mnemonic( *group, mnemonic ) ));
+ui::RadioMenuItem new_radio_menu_item_with_mnemonic( GSList** group, const char* mnemonic, const Callback<void()>& callback ){
+       auto item = ui::RadioMenuItem::from( gtk_radio_menu_item_new_with_mnemonic( *group, mnemonic ) );
        if ( *group == 0 ) {
                gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM( item ), TRUE );
        }
@@ -136,7 +136,7 @@ ui::RadioMenuItem new_radio_menu_item_with_mnemonic( GSList** group, const char*
        return item;
 }
 
-ui::RadioMenuItem create_radio_menu_item_with_mnemonic( ui::Menu menu, GSList** group, const char* mnemonic, const Callback& callback ){
+ui::RadioMenuItem create_radio_menu_item_with_mnemonic( ui::Menu menu, GSList** group, const char* mnemonic, const Callback<void()>& callback ){
        auto item = new_radio_menu_item_with_mnemonic( group, mnemonic, callback );
        menu.add(item);
        return item;
@@ -238,15 +238,14 @@ ui::MenuItem create_menu_item_with_mnemonic( ui::Menu menu, const char* mnemonic
        return item;
 }
 
-void check_menu_item_set_active_callback( GtkCheckMenuItem &item, bool enabled ){
-       check_menu_item_set_active_no_signal( ui::CheckMenuItem(&item), enabled );
+void check_menu_item_set_active_callback(void *it, bool enabled ){
+       auto item = ui::CheckMenuItem::from(it);
+       check_menu_item_set_active_no_signal( item, enabled );
 }
-typedef ReferenceCaller1<GtkCheckMenuItem, bool, check_menu_item_set_active_callback> CheckMenuItemSetActiveCaller;
 
 ui::CheckMenuItem create_check_menu_item_with_mnemonic( ui::Menu menu, const char* mnemonic, const Toggle& toggle ){
        auto item = create_check_menu_item_with_mnemonic( menu, mnemonic, toggle.m_command.m_callback );
        menu_item_add_accelerator( item, toggle.m_command.m_accelerator );
-       GtkCheckMenuItem *item_ = item;
-       toggle.m_exportCallback( CheckMenuItemSetActiveCaller( *item_ ) );
+       toggle.m_exportCallback( PointerCaller<void, void(bool), check_menu_item_set_active_callback>( item._handle ) );
        return item;
 }