From ceb0bce971026944d4cc2cc900acab7b4f68c57e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 13 Jun 2016 09:10:36 -0400 Subject: [PATCH] write some code to limit pane handle positions on OS X. So far untested, and uncompiled --- libs/gtkmm2ext/pane.cc | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/libs/gtkmm2ext/pane.cc b/libs/gtkmm2ext/pane.cc index e288e6f350..2cd05c1681 100644 --- a/libs/gtkmm2ext/pane.cc +++ b/libs/gtkmm2ext/pane.cc @@ -418,6 +418,46 @@ Pane::set_divider (Dividers::size_type div, float fract) fract = max (0.0f, min (1.0f, fract)); +#ifdef __APPLE__ + + /* On Quartz, if the pane handle (divider) gets to + be adjacent to the window edge, you can no longer grab it: + any attempt to do so is interpreted by the Quartz window + manager ("Finder") as a resize drag on the window edge. + */ + + if (horizontal) { + if (div == dividers.size() - 1) { + if (get_allocation().get_width() * (1.0 - fract) < (divider_width*2)) { + /* too close to right edge */ + return; + } + } + + if (div == dividers.size() - 1) { + if (get_allocation().get_width() * fract < (divider_width*2)) { + /* too close to left edge */ + return; + } + } + } else { + if (div == dividers.size() - 1) { + if (get_allocation().get_height() * (1.0 - fract) < (divider_width*2)) { + /* too close to bottom */ + return; + } + } + + if (div == dividers.size() - 1) { + if (get_allocation().get_width() * fract < (divider_width*2)) { + /* too close to top */ + return; + } + } + } + +#endif + if (fract != (*d)->fract) { (*d)->fract = fract; /* our size hasn't changed, but our internal allocations have */