X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fmultimon.cpp;h=99d632040df89862fea6a12ee02c2d6262e2b3b7;hb=d61055722ff7ace41dd7d0296f97347fe106b6a7;hp=04407591778e78f36bab95aa356dde4d8ffb26e9;hpb=7fc621fc78d0e040dc2c12f38dc53dd9048215dc;p=xonotic%2Fnetradiant.git diff --git a/radiant/multimon.cpp b/radiant/multimon.cpp index 04407591..99d63204 100644 --- a/radiant/multimon.cpp +++ b/radiant/multimon.cpp @@ -29,70 +29,76 @@ multimon_globals_t g_multimon_globals; -LatchedBool g_Multimon_enableSysMenuPopups( false, "Floating windows sysmenu icons" ); - -void MultiMonitor_constructPreferences( PreferencesPage& page ){ - GtkWidget* primary_monitor = page.appendCheckBox( "Multi Monitor", "Start on Primary Monitor", g_multimon_globals.m_bStartOnPrimMon ); - GtkWidget* popup = page.appendCheckBox( - "", "Disable system menu on popup windows", - LatchedBoolImportCaller( g_Multimon_enableSysMenuPopups ), - BoolExportCaller( g_Multimon_enableSysMenuPopups.m_latched ) - ); - 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" #include "stringio.h" -#include +#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", BoolImportStringCaller( g_multimon_globals.m_bStartOnPrimMon ), BoolExportStringCaller( g_multimon_globals.m_bStartOnPrimMon ) ); - GlobalPreferenceSystem().registerPreference( "NoSysMenuPopups", BoolImportStringCaller( g_Multimon_enableSysMenuPopups.m_latched ), BoolExportStringCaller( g_Multimon_enableSysMenuPopups.m_latched ) ); - - g_Multimon_enableSysMenuPopups.useLatched(); - - PreferencesDialog_addInterfacePreferences( FreeCaller1() ); +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() +{ }