From 02754e43ceb2d1d7a20b706c90d5aa9b2f6a95ad Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Wed, 17 Nov 2021 14:58:45 +0100 Subject: Fix Fl_Window::decorated_w() in some X11 situations. --- src/drivers/X11/Fl_X11_Window_Driver.cxx | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src') diff --git a/src/drivers/X11/Fl_X11_Window_Driver.cxx b/src/drivers/X11/Fl_X11_Window_Driver.cxx index ab15f275c..5dea0fb29 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Window_Driver.cxx @@ -159,6 +159,15 @@ void Fl_X11_Window_Driver::decorated_win_size(int &w, int &h) if (status == 0 || root == parent) return; XWindowAttributes attributes; XGetWindowAttributes(fl_display, parent, &attributes); + // sometimes, very wide window borders are reported + // ignore them all: + XWindowAttributes w_attributes; + XGetWindowAttributes(fl_display, Fl_X::i(win)->xid, &w_attributes); + if (attributes.width - w_attributes.width >= 20) { + attributes.height -= (attributes.width - w_attributes.width); + attributes.width = w_attributes.width; + } + int nscreen = screen_num(); float s = Fl::screen_driver()->scale(nscreen); w = attributes.width / s; -- cgit v1.2.3