aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobert Tari <robert@tari.in>2025-04-08 18:46:27 +0200
committerRobert Tari <robert@tari.in>2025-04-08 18:46:27 +0200
commitc2bc2ca75c9bc300e235c145fb6bb459b3ea77a9 (patch)
treec682354604566413642bbb012e727d479cca683f /src
parenta0e8568f6759f9df1364ba16255d3de85436f029 (diff)
downloadarctica-greeter-c2bc2ca75c9bc300e235c145fb6bb459b3ea77a9.tar.gz
arctica-greeter-c2bc2ca75c9bc300e235c145fb6bb459b3ea77a9.tar.bz2
arctica-greeter-c2bc2ca75c9bc300e235c145fb6bb459b3ea77a9.zip
src/main-window.vala: Drop deprecated Gdk.Screen.get_* functions
Diffstat (limited to 'src')
-rw-r--r--src/main-window.vala41
1 files changed, 39 insertions, 2 deletions
diff --git a/src/main-window.vala b/src/main-window.vala
index 176001b..88c6e7f 100644
--- a/src/main-window.vala
+++ b/src/main-window.vala
@@ -274,6 +274,39 @@ public class MainWindow : Gtk.Window
_set_struts (MenubarPositions.TOP, greeter.menubar_height);
}
+ private void getScreenSize (out int nScreenWidth, out int nScreenHeight)
+ {
+ Gdk.Display pDisplay = Gdk.Display.get_default ();
+ int nMonitors = pDisplay.get_n_monitors ();
+
+ if (nMonitors == 0)
+ {
+ nScreenWidth = 0;
+ nScreenHeight = 0;
+
+ return;
+ }
+
+ int x0 = int.MAX;
+ int y0 = int.MAX;
+ int x1 = int.MIN;
+ int y1 = int.MIN;
+
+ for (int nMonitor = 0; nMonitor < nMonitors; nMonitor++)
+ {
+ Gdk.Monitor pMonitor = pDisplay.get_monitor (nMonitor);
+ Gdk.Rectangle cRectangle = pMonitor.get_geometry ();
+
+ x0 = int.min (x0, cRectangle.x);
+ y0 = int.min (y0, cRectangle.y);
+ x1 = int.max (x1, cRectangle.x + cRectangle.width);
+ y1 = int.max (y1, cRectangle.y + cRectangle.height);
+ }
+
+ nScreenWidth = x1 - x0;
+ nScreenHeight = y1 - y0;
+ }
+
private void _set_struts (uint position, long menubar_size)
{
if (!get_realized()) {
@@ -292,6 +325,10 @@ public class MainWindow : Gtk.Window
/* Subtract (non-scaled) 5px border + 2px extra spacing (to make indicator menus render nicely below menubar) */
menubar_size = menubar_size - 7;
+ int nScreenWidth = 0;
+ int nScreenHeight = 0;
+ getScreenSize (out nScreenWidth, out nScreenHeight);
+
// Struts dependent on position
switch (position) {
case MenubarPositions.TOP:
@@ -305,13 +342,13 @@ public class MainWindow : Gtk.Window
struts[Struts.LEFT_END] = (primary_monitor.y + primary_monitor.height) * scale - 1;
break;
case MenubarPositions.RIGHT:
- struts[Struts.RIGHT] = (menubar_size + screen.get_width() - primary_monitor.x - primary_monitor.width) * scale;
+ struts[Struts.RIGHT] = (menubar_size + nScreenWidth - primary_monitor.x - primary_monitor.width) * scale;
struts[Struts.RIGHT_START] = primary_monitor.y * scale;
struts[Struts.RIGHT_END] = (primary_monitor.y + primary_monitor.height) * scale - 1;
break;
case MenubarPositions.BOTTOM:
default:
- struts[Struts.BOTTOM] = (menubar_size + screen.get_height() - primary_monitor.y - primary_monitor.height) * scale;
+ struts[Struts.BOTTOM] = (menubar_size + nScreenHeight - primary_monitor.y - primary_monitor.height) * scale;
struts[Struts.BOTTOM_START] = primary_monitor.x * scale;
struts[Struts.BOTTOM_END] = (primary_monitor.x + primary_monitor.width) * scale - 1;
break;