13
0

fix incorrect restoration of pane positions on Apple.

Code to check if we were to close to an edge (for window resizing) blocked all divider setting,
because it would be called with a current widget allocation of 1x1
This commit is contained in:
Paul Davis 2016-07-18 12:49:26 -04:00
parent 1364cd6a30
commit b8f5306d5b

View File

@ -167,6 +167,7 @@ Pane::on_remove (Widget* w)
void
Pane::on_size_allocate (Gtk::Allocation& alloc)
{
std::cerr << "pane @ " << this << " reallocated as " << alloc.get_width() << " x " << alloc.get_height() << std::endl;
reallocate (alloc);
Container::on_size_allocate (alloc);
}
@ -357,6 +358,15 @@ Pane::fract_is_ok (Dividers::size_type div, float fract)
return true;
}
if (get_allocation().get_width() == 1 && get_allocation().get_height() == 1) {
/* space not * allocated - * divider being set from startup code. Let it pass,
since our goal is mostly to catch drags to a position that will interfere with window
resizing.
*/
return true;
}
/* 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