From 1b1444f245f053ab517d481476270b8ac798a0d6 Mon Sep 17 00:00:00 2001 From: Abou Al Montacir Date: Sat, 24 Jun 2023 10:50:28 +0200 Subject: [PATCH] GTK3: Fixed workarea handling on systems with frequent monitor removals. Closes: #40333. Thanks To: Anton Kavalenka. Check number of connected monitors and fail if none. Fall back to first monitory id no primary monitor is defined. --- lcl/interfaces/gtk3/gtk3winapi.inc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lcl/interfaces/gtk3/gtk3winapi.inc b/lcl/interfaces/gtk3/gtk3winapi.inc index 2da3ed326b..6442a561ca 100644 --- a/lcl/interfaces/gtk3/gtk3winapi.inc +++ b/lcl/interfaces/gtk3/gtk3winapi.inc @@ -3949,6 +3949,11 @@ begin SPI_GETWORKAREA: begin pdisp:=TGdkDisplay.get_default; pmon:=pdisp^.get_primary_monitor(); + if not Assigned(pmon) then begin + if pdisp^.get_n_monitors = 0 then + Exit(False); + pmon := pdisp^.get_monitor(0); + end; pmon^.get_workarea(@wa); pr:=PRect(pvParam); pr^.Left:=wa.x;