X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fxywindow.cpp;h=9e296f42554b6ae3a77eabfa6a0f50e724b1dbcc;hb=18d60f90d7603cb420150739251cf98519c57406;hp=23910a34f9ced76fc79513375999d710b5ec8a0e;hpb=234b657ba977434c3c0be08fb154eaac6c3ac798;p=xonotic%2Fnetradiant.git diff --git a/radiant/xywindow.cpp b/radiant/xywindow.cpp index 23910a34..9e296f42 100644 --- a/radiant/xywindow.cpp +++ b/radiant/xywindow.cpp @@ -27,6 +27,8 @@ #include "xywindow.h" +#include + #include "debugging/debugging.h" #include "ientity.h" @@ -410,6 +412,7 @@ inline unsigned int buttons_for_button_and_modifiers( ButtonIdentifier button, M switch ( button.get() ) { + case ButtonEnumeration::INVALID: break; case ButtonEnumeration::LEFT: buttons |= RAD_LBUTTON; break; case ButtonEnumeration::MIDDLE: buttons |= RAD_MBUTTON; break; case ButtonEnumeration::RIGHT: buttons |= RAD_RBUTTON; break; @@ -536,7 +539,7 @@ VIEWTYPE GlobalXYWnd_getCurrentViewType(){ bool g_bCrossHairs = false; -ui::Menu XYWnd::m_mnuDrop{nullptr}; +ui::Menu XYWnd::m_mnuDrop(ui::null); // this is disabled, and broken // http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=394 @@ -548,7 +551,7 @@ void WXY_Print(){ unsigned char* img; const char* filename; - filename = ui::file_dialog( GTK_WIDGET( MainFrame_getWindow() ), FALSE, "Save Image", 0, FILTER_BMP ); + filename = ui::file_dialog( MainFrame_getWindow( ), FALSE, "Save Image", 0, FILTER_BMP ); if ( !filename ) { return; } @@ -705,7 +708,7 @@ bool XYWnd::chaseMouseMotion( int pointx, int pointy ){ Shader* XYWnd::m_state_selected = 0; void xy_update_xor_rectangle( XYWnd& self, rect_t area ){ - if ( gtk_widget_get_visible( self.GetWidget() ) ) { + if ( self.GetWidget().visible() ) { self.m_XORRectangle.set( rectangle_from_area( area.min, area.max, self.Width(), self.Height() ) ); } } @@ -787,7 +790,7 @@ void XYWnd_CameraMoved( XYWnd& xywnd ){ XYWnd::XYWnd() : m_gl_widget( glwidget_new( FALSE ) ), - m_deferredDraw( WidgetQueueDrawCaller( *m_gl_widget ) ), + m_deferredDraw( WidgetQueueDrawCaller( m_gl_widget ) ), m_deferred_motion( xywnd_motion, this ), m_parent( 0 ), m_window_observer( NewWindowObserver() ), @@ -818,36 +821,36 @@ XYWnd::XYWnd() : m_entityCreate = false; - m_mnuDrop = ui::Menu{nullptr}; + m_mnuDrop = ui::Menu(ui::null); GlobalWindowObservers_add( m_window_observer ); GlobalWindowObservers_connectWidget( m_gl_widget ); - m_window_observer->setRectangleDrawCallback( ReferenceCaller1( *this ) ); + m_window_observer->setRectangleDrawCallback( ReferenceCaller( *this ) ); m_window_observer->setView( m_view ); - g_object_ref( m_gl_widget ); + g_object_ref( m_gl_widget._handle ); gtk_widget_set_events( m_gl_widget, GDK_DESTROY | GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK ); gtk_widget_set_can_focus( m_gl_widget, true ); - m_sizeHandler = g_signal_connect( G_OBJECT( m_gl_widget ), "size_allocate", G_CALLBACK( xywnd_size_allocate ), this ); - m_exposeHandler = g_signal_connect( G_OBJECT( m_gl_widget ), "expose_event", G_CALLBACK( xywnd_expose ), this ); + m_sizeHandler = m_gl_widget.connect( "size_allocate", G_CALLBACK( xywnd_size_allocate ), this ); + m_exposeHandler = m_gl_widget.on_render( G_CALLBACK( xywnd_expose ), this ); - g_signal_connect( G_OBJECT( m_gl_widget ), "button_press_event", G_CALLBACK( xywnd_button_press ), this ); - g_signal_connect( G_OBJECT( m_gl_widget ), "button_release_event", G_CALLBACK( xywnd_button_release ), this ); - g_signal_connect( G_OBJECT( m_gl_widget ), "focus_in_event", G_CALLBACK( xywnd_focus_in ), this ); - g_signal_connect( G_OBJECT( m_gl_widget ), "motion_notify_event", G_CALLBACK( DeferredMotion::gtk_motion ), &m_deferred_motion ); + m_gl_widget.connect( "button_press_event", G_CALLBACK( xywnd_button_press ), this ); + m_gl_widget.connect( "button_release_event", G_CALLBACK( xywnd_button_release ), this ); + m_gl_widget.connect( "focus_in_event", G_CALLBACK( xywnd_focus_in ), this ); + m_gl_widget.connect( "motion_notify_event", G_CALLBACK( DeferredMotion::gtk_motion ), &m_deferred_motion ); - g_signal_connect( G_OBJECT( m_gl_widget ), "scroll_event", G_CALLBACK( xywnd_wheel_scroll ), this ); + m_gl_widget.connect( "scroll_event", G_CALLBACK( xywnd_wheel_scroll ), this ); Map_addValidCallback( g_map, DeferredDrawOnMapValidChangedCaller( m_deferredDraw ) ); updateProjection(); updateModelview(); - AddSceneChangeCallback( ReferenceCaller( *this ) ); - AddCameraMovedCallback( ReferenceCaller( *this ) ); + AddSceneChangeCallback( ReferenceCaller( *this ) ); + AddCameraMovedCallback( ReferenceCaller( *this ) ); PressedButtons_connect( g_pressedButtons, m_gl_widget ); @@ -858,14 +861,14 @@ XYWnd::~XYWnd(){ onDestroyed(); if ( m_mnuDrop ) { - gtk_widget_destroy( GTK_WIDGET( m_mnuDrop ) ); - m_mnuDrop = ui::Menu{nullptr}; + m_mnuDrop.destroy(); + m_mnuDrop = ui::Menu(ui::null); } g_signal_handler_disconnect( G_OBJECT( m_gl_widget ), m_sizeHandler ); g_signal_handler_disconnect( G_OBJECT( m_gl_widget ), m_exposeHandler ); - g_object_unref( m_gl_widget ); + m_gl_widget.unref(); m_window_observer->release(); } @@ -1076,7 +1079,7 @@ void entitycreate_activated( ui::Widget item ){ void EntityClassMenu_addItem( ui::Menu menu, const char* name ){ auto item = ui::MenuItem( name ); - g_signal_connect( G_OBJECT( item ), "activate", G_CALLBACK( entitycreate_activated ), item ); + item.connect( "activate", G_CALLBACK( entitycreate_activated ), item ); item.show(); menu_add_item( menu, item ); } @@ -1107,10 +1110,10 @@ void visit( EntityClass* e ){ void pushMenu( const CopiedString& name ){ auto item = ui::MenuItem( name.c_str() ); item.show(); - container_add_widget( m_stack.back().first, item ); + m_stack.back().first.add(item); - auto submenu = ui::Menu(); - gtk_menu_item_set_submenu( item, GTK_WIDGET( submenu ) ); + auto submenu = ui::Menu(ui::New); + gtk_menu_item_set_submenu( item, submenu ); m_stack.push_back( MenuPair( submenu, name ) ); } @@ -1152,7 +1155,7 @@ void XYWnd::OnContextMenu(){ } if ( !m_mnuDrop ) { // first time, load it up - auto menu = m_mnuDrop = ui::Menu(); + auto menu = m_mnuDrop = ui::Menu(ui::New); EntityClassMenuInserter inserter( menu ); GlobalEntityClassManager().forEach( inserter ); @@ -1183,7 +1186,7 @@ void XYWnd::Move_Begin(){ } m_move_started = true; g_xywnd_freezePointer.freeze_pointer( m_parent ? m_parent : MainFrame_getWindow(), XYWnd_moveDelta, this ); - m_move_focusOut = g_signal_connect( G_OBJECT( m_gl_widget ), "focus_out_event", G_CALLBACK( XYWnd_Move_focusOut ), this ); + m_move_focusOut = m_gl_widget.connect( "focus_out_event", G_CALLBACK( XYWnd_Move_focusOut ), this ); } void XYWnd::Move_End(){ @@ -1229,7 +1232,7 @@ void XYWnd::Zoom_Begin(){ m_zoom_started = true; g_dragZoom = 0; g_xywnd_freezePointer.freeze_pointer( m_parent ? m_parent : MainFrame_getWindow(), XYWnd_zoomDelta, this ); - m_zoom_focusOut = g_signal_connect( G_OBJECT( m_gl_widget ), "focus_out_event", G_CALLBACK( XYWnd_Zoom_focusOut ), this ); + m_zoom_focusOut = m_gl_widget.connect( "focus_out_event", G_CALLBACK( XYWnd_Zoom_focusOut ), this ); } void XYWnd::Zoom_End(){ @@ -1485,7 +1488,7 @@ void XYWnd::XY_DisableBackground( void ){ void WXY_BackgroundSelect( void ){ bool brushesSelected = Scene_countSelectedBrushes( GlobalSceneGraph() ) != 0; if ( !brushesSelected ) { - ui::root.alert( "You have to select some brushes to get the bounding box for.\n", + ui::root.window().alert( "You have to select some brushes to get the bounding box for.\n", "No selection", ui::alert_type::OK, ui::alert_icon::Error ); return; } @@ -2064,7 +2067,7 @@ void SetState( Shader* state, EStyle style ){ m_state_stack.back().m_state = state; } } -const EStyle getStyle() const { +EStyle getStyle() const { return eWireframeOnly; } void PushState(){ @@ -2567,8 +2570,8 @@ void realise(){ void unrealise(){ if ( ++m_unrealised == 1 ) { if ( XYWnd::m_mnuDrop ) { - gtk_widget_destroy( GTK_WIDGET( XYWnd::m_mnuDrop ) ); - XYWnd::m_mnuDrop = ui::Menu(nullptr); + XYWnd::m_mnuDrop.destroy(); + XYWnd::m_mnuDrop = ui::Menu(ui::null); } } } @@ -2583,71 +2586,71 @@ void ShowNamesToggle(){ GlobalEntityCreator().setShowNames( !GlobalEntityCreator().getShowNames() ); XY_UpdateAllWindows(); } -typedef FreeCaller ShowNamesToggleCaller; +typedef FreeCaller ShowNamesToggleCaller; void ShowNamesExport( const BoolImportCallback& importer ){ importer( GlobalEntityCreator().getShowNames() ); } -typedef FreeCaller1 ShowNamesExportCaller; +typedef FreeCaller ShowNamesExportCaller; void ShowAnglesToggle(){ GlobalEntityCreator().setShowAngles( !GlobalEntityCreator().getShowAngles() ); XY_UpdateAllWindows(); } -typedef FreeCaller ShowAnglesToggleCaller; +typedef FreeCaller ShowAnglesToggleCaller; void ShowAnglesExport( const BoolImportCallback& importer ){ importer( GlobalEntityCreator().getShowAngles() ); } -typedef FreeCaller1 ShowAnglesExportCaller; +typedef FreeCaller ShowAnglesExportCaller; void ShowBlocksToggle(){ g_xywindow_globals_private.show_blocks ^= 1; XY_UpdateAllWindows(); } -typedef FreeCaller ShowBlocksToggleCaller; +typedef FreeCaller ShowBlocksToggleCaller; void ShowBlocksExport( const BoolImportCallback& importer ){ importer( g_xywindow_globals_private.show_blocks ); } -typedef FreeCaller1 ShowBlocksExportCaller; +typedef FreeCaller ShowBlocksExportCaller; void ShowCoordinatesToggle(){ g_xywindow_globals_private.show_coordinates ^= 1; XY_UpdateAllWindows(); } -typedef FreeCaller ShowCoordinatesToggleCaller; +typedef FreeCaller ShowCoordinatesToggleCaller; void ShowCoordinatesExport( const BoolImportCallback& importer ){ importer( g_xywindow_globals_private.show_coordinates ); } -typedef FreeCaller1 ShowCoordinatesExportCaller; +typedef FreeCaller ShowCoordinatesExportCaller; void ShowOutlineToggle(){ g_xywindow_globals_private.show_outline ^= 1; XY_UpdateAllWindows(); } -typedef FreeCaller ShowOutlineToggleCaller; +typedef FreeCaller ShowOutlineToggleCaller; void ShowOutlineExport( const BoolImportCallback& importer ){ importer( g_xywindow_globals_private.show_outline ); } -typedef FreeCaller1 ShowOutlineExportCaller; +typedef FreeCaller ShowOutlineExportCaller; void ShowAxesToggle(){ g_xywindow_globals_private.show_axis ^= 1; XY_UpdateAllWindows(); } -typedef FreeCaller ShowAxesToggleCaller; +typedef FreeCaller ShowAxesToggleCaller; void ShowAxesExport( const BoolImportCallback& importer ){ importer( g_xywindow_globals_private.show_axis ); } -typedef FreeCaller1 ShowAxesExportCaller; +typedef FreeCaller ShowAxesExportCaller; void ShowWorkzoneToggle(){ g_xywindow_globals_private.d_show_work ^= 1; XY_UpdateAllWindows(); } -typedef FreeCaller ShowWorkzoneToggleCaller; +typedef FreeCaller ShowWorkzoneToggleCaller; void ShowWorkzoneExport( const BoolImportCallback& importer ){ importer( g_xywindow_globals_private.d_show_work ); } -typedef FreeCaller1 ShowWorkzoneExportCaller; +typedef FreeCaller ShowWorkzoneExportCaller; ShowNamesExportCaller g_show_names_caller; BoolExportCallback g_show_names_callback( g_show_names_caller ); @@ -2705,7 +2708,7 @@ void Orthographic_constructPage( PreferenceGroup& group ){ Orthographic_constructPreferences( page ); } void Orthographic_registerPreferencesPage(){ - PreferencesDialog_addSettingsPage( FreeCaller1() ); + PreferencesDialog_addSettingsPage( FreeCaller() ); } void Clipper_constructPreferences( PreferencesPage& page ){ @@ -2716,7 +2719,7 @@ void Clipper_constructPage( PreferenceGroup& group ){ Clipper_constructPreferences( page ); } void Clipper_registerPreferencesPage(){ - PreferencesDialog_addSettingsPage( FreeCaller1() ); + PreferencesDialog_addSettingsPage( FreeCaller() ); } @@ -2729,29 +2732,29 @@ void Clipper_registerPreferencesPage(){ void ToggleShown_importBool( ToggleShown& self, bool value ){ self.set( value ); } -typedef ReferenceCaller1 ToggleShownImportBoolCaller; +typedef ReferenceCaller ToggleShownImportBoolCaller; void ToggleShown_exportBool( const ToggleShown& self, const BoolImportCallback& importer ){ importer( self.active() ); } -typedef ConstReferenceCaller1 ToggleShownExportBoolCaller; +typedef ConstReferenceCaller ToggleShownExportBoolCaller; void XYWindow_Construct(){ - GlobalCommands_insert( "ToggleCrosshairs", FreeCaller(), Accelerator( 'X', (GdkModifierType)GDK_SHIFT_MASK ) ); - GlobalCommands_insert( "ToggleSizePaint", FreeCaller(), Accelerator( 'J' ) ); - GlobalCommands_insert( "ToggleGrid", FreeCaller(), Accelerator( '0' ) ); + GlobalCommands_insert( "ToggleCrosshairs", FreeCaller(), Accelerator( 'X', (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalCommands_insert( "ToggleSizePaint", FreeCaller(), Accelerator( 'J' ) ); + GlobalCommands_insert( "ToggleGrid", FreeCaller(), Accelerator( '0' ) ); GlobalToggles_insert( "ToggleView", ToggleShown::ToggleCaller( g_xy_top_shown ), ToggleItem::AddCallbackCaller( g_xy_top_shown.m_item ), Accelerator( 'V', (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) ); GlobalToggles_insert( "ToggleSideView", ToggleShown::ToggleCaller( g_yz_side_shown ), ToggleItem::AddCallbackCaller( g_yz_side_shown.m_item ) ); GlobalToggles_insert( "ToggleFrontView", ToggleShown::ToggleCaller( g_xz_front_shown ), ToggleItem::AddCallbackCaller( g_xz_front_shown.m_item ) ); - GlobalCommands_insert( "NextView", FreeCaller(), Accelerator( GDK_KEY_Tab, (GdkModifierType)GDK_CONTROL_MASK ) ); // fixme: doesn't show its shortcut - GlobalCommands_insert( "ZoomIn", FreeCaller(), Accelerator( GDK_KEY_Delete ) ); - GlobalCommands_insert( "ZoomOut", FreeCaller(), Accelerator( GDK_KEY_Insert ) ); - GlobalCommands_insert( "ViewTop", FreeCaller(), Accelerator( GDK_KEY_KP_Home ) ); - GlobalCommands_insert( "ViewSide", FreeCaller(), Accelerator( GDK_KEY_KP_Page_Down ) ); - GlobalCommands_insert( "ViewFront", FreeCaller(), Accelerator( GDK_KEY_KP_End ) ); - GlobalCommands_insert( "Zoom100", FreeCaller() ); - GlobalCommands_insert( "CenterXYView", FreeCaller(), Accelerator( GDK_KEY_Tab, (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) ); + GlobalCommands_insert( "NextView", FreeCaller(), Accelerator( GDK_KEY_Tab, (GdkModifierType)GDK_CONTROL_MASK ) ); // fixme: doesn't show its shortcut + GlobalCommands_insert( "ZoomIn", FreeCaller(), Accelerator( GDK_KEY_Delete ) ); + GlobalCommands_insert( "ZoomOut", FreeCaller(), Accelerator( GDK_KEY_Insert ) ); + GlobalCommands_insert( "ViewTop", FreeCaller(), Accelerator( GDK_KEY_KP_Home ) ); + GlobalCommands_insert( "ViewSide", FreeCaller(), Accelerator( GDK_KEY_KP_Page_Down ) ); + GlobalCommands_insert( "ViewFront", FreeCaller(), Accelerator( GDK_KEY_KP_End ) ); + GlobalCommands_insert( "Zoom100", FreeCaller() ); + GlobalCommands_insert( "CenterXYView", FreeCaller(), Accelerator( GDK_KEY_Tab, (GdkModifierType)( GDK_SHIFT_MASK | GDK_CONTROL_MASK ) ) ); GlobalPreferenceSystem().registerPreference( "ClipCaulk", BoolImportStringCaller( g_clip_useCaulk ), BoolExportStringCaller( g_clip_useCaulk ) );