X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fmultimon.cpp;h=869bc1d86690b28c1eb9d723fe0a9d8cdefaa6ab;hb=a333eaee1c5b8b20ec59411f4878f8fc5bdfa584;hp=917821d285c7948e0c9ecc103a5df1f3fa3dfada;hpb=9dfae1c9b270ee369c6362903a9205b30751b95f;p=xonotic%2Fnetradiant.git diff --git a/radiant/multimon.cpp b/radiant/multimon.cpp index 917821d2..869bc1d8 100644 --- a/radiant/multimon.cpp +++ b/radiant/multimon.cpp @@ -29,17 +29,15 @@ multimon_globals_t g_multimon_globals; -LatchedValue g_Multimon_enableSysMenuPopups(false, "Floating windows sysmenu icons"); - -void MultiMonitor_constructPreferences(PreferencesPage &page) -{ - ui::CheckButton primary_monitor = page.appendCheckBox("Multi Monitor", "Start on Primary Monitor", - g_multimon_globals.m_bStartOnPrimMon); - ui::CheckButton popup = page.appendCheckBox( - "", "Disable system menu on popup windows", - mkImportExportCallback(g_Multimon_enableSysMenuPopups) - ); - Widget_connectToggleDependency(popup, primary_monitor); +LatchedValue g_Multimon_enableSysMenuPopups( false, "Floating windows sysmenu icons" ); + +void MultiMonitor_constructPreferences( PreferencesPage& page ){ + ui::CheckButton primary_monitor = page.appendCheckBox( "Multi Monitor", "Start on Primary Monitor", g_multimon_globals.m_bStartOnPrimMon ); + ui::CheckButton popup = page.appendCheckBox( + "", "Disable system menu on popup windows", + make_property( g_Multimon_enableSysMenuPopups ) + ); + Widget_connectToggleDependency( popup, primary_monitor ); } #include "preferencesystem.h" @@ -47,58 +45,54 @@ void MultiMonitor_constructPreferences(PreferencesPage &page) #include -namespace { - GdkRectangle primaryMonitor; +namespace +{ +GdkRectangle primaryMonitor; } -void PositionWindowOnPrimaryScreen(WindowPosition &position) -{ - if (position.w >= primaryMonitor.width - 12) { - position.w = primaryMonitor.width - 12; - } - if (position.h >= primaryMonitor.height - 24) { - position.h = primaryMonitor.height - 48; - } - if (position.x <= primaryMonitor.x || position.x + position.w >= (primaryMonitor.x + primaryMonitor.width) - 12) { - position.x = primaryMonitor.x + 6; - } - if (position.y <= primaryMonitor.y || position.y + position.h >= (primaryMonitor.y + primaryMonitor.height) - 48) { - position.y = primaryMonitor.y + 24; - } +void PositionWindowOnPrimaryScreen( WindowPosition& position ){ + if ( position.w >= primaryMonitor.width - 12 ) { + position.w = primaryMonitor.width - 12; + } + if ( position.h >= primaryMonitor.height - 24 ) { + position.h = primaryMonitor.height - 48; + } + if ( position.x <= primaryMonitor.x || position.x + position.w >= ( primaryMonitor.x + primaryMonitor.width ) - 12 ) { + position.x = primaryMonitor.x + 6; + } + if ( position.y <= primaryMonitor.y || position.y + position.h >= ( primaryMonitor.y + primaryMonitor.height ) - 48 ) { + position.y = primaryMonitor.y + 24; + } } -void MultiMon_Construct() -{ - // detect multiple monitors - - GdkScreen *screen = gdk_display_get_default_screen(gdk_display_get_default()); - gint m = gdk_screen_get_n_monitors(screen); - globalOutputStream() << "default screen has " << m << " monitors\n"; - for (int j = 0; j != m; ++j) { - GdkRectangle geom; - gdk_screen_get_monitor_geometry(screen, j, &geom); - globalOutputStream() << "monitor " << j << " geometry: " << geom.x << ", " << geom.y << ", " << geom.width - << ", " << geom.height << "\n"; - if (j == 0) { - // I am making the assumption that monitor 0 is always the primary monitor on win32. Tested on WinXP with gtk+-2.4. - primaryMonitor = geom; - } - } - - if (m > 1) { - g_multimon_globals.m_bStartOnPrimMon = true; - } - - GlobalPreferenceSystem().registerPreference("StartOnPrimMon", - make_property_string(g_multimon_globals.m_bStartOnPrimMon)); - GlobalPreferenceSystem().registerPreference("NoSysMenuPopups", - make_property_string(g_Multimon_enableSysMenuPopups.m_latched)); - - g_Multimon_enableSysMenuPopups.useLatched(); - - PreferencesDialog_addInterfacePreferences(makeCallbackF(MultiMonitor_constructPreferences)); +void MultiMon_Construct(){ + // detect multiple monitors + + GdkScreen* screen = gdk_display_get_default_screen( gdk_display_get_default() ); + gint m = gdk_screen_get_n_monitors( screen ); + globalOutputStream() << "default screen has " << m << " monitors\n"; + for ( int j = 0; j != m; ++j ) + { + GdkRectangle geom; + gdk_screen_get_monitor_geometry( screen, j, &geom ); + globalOutputStream() << "monitor " << j << " geometry: " << geom.x << ", " << geom.y << ", " << geom.width << ", " << geom.height << "\n"; + if ( j == 0 ) { + // I am making the assumption that monitor 0 is always the primary monitor on win32. Tested on WinXP with gtk+-2.4. + primaryMonitor = geom; + } + } + + if ( m > 1 ) { + g_multimon_globals.m_bStartOnPrimMon = true; + } + + GlobalPreferenceSystem().registerPreference( "StartOnPrimMon", make_property_string( g_multimon_globals.m_bStartOnPrimMon ) ); + GlobalPreferenceSystem().registerPreference( "NoSysMenuPopups", make_property_string( g_Multimon_enableSysMenuPopups.m_latched ) ); + + g_Multimon_enableSysMenuPopups.useLatched(); + + PreferencesDialog_addInterfacePreferences( makeCallbackF(MultiMonitor_constructPreferences) ); } -void MultiMon_Destroy() -{ +void MultiMon_Destroy(){ }