diff options
author | Sebastian Geerken <devnull@localhost> | 2014-06-16 21:29:05 +0200 |
---|---|---|
committer | Sebastian Geerken <devnull@localhost> | 2014-06-16 21:29:05 +0200 |
commit | d23346d250cd18718f0540cfca49e2204fb40767 (patch) | |
tree | 58ee8e7a8590c104bdc0067dc89552d165ab991f /dw/layout.cc | |
parent | 3d05377424b220d8bddc45c062c54dd6aab66f26 (diff) |
Started work on more efficient handling of viewport size changes.
Diffstat (limited to 'dw/layout.cc')
-rw-r--r-- | dw/layout.cc | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/dw/layout.cc b/dw/layout.cc index 818effd2..bd519042 100644 --- a/dw/layout.cc +++ b/dw/layout.cc @@ -926,8 +926,7 @@ void Layout::resizeIdle () canvasHeightGreater = true; DBG_OBJ_SET_SYM ("canvasHeightGreater", canvasHeightGreater ? "true" : "false"); - assert (topLevel); // No toplevel widget would have no size. - containerSizeChanged (topLevel); + containerSizeChanged (); } // Set viewport sizes. @@ -1296,31 +1295,14 @@ void Layout::viewportSizeChanged (View *view, int width, int height) DBG_OBJ_SET_NUM ("viewportWidth", viewportWidth); DBG_OBJ_SET_NUM ("viewportHeight", viewportHeight); - if (topLevel) - containerSizeChanged (topLevel); + containerSizeChanged (); } -bool Layout::widgetAffectedByContainerSizeChange (Widget *widget) +void Layout::containerSizeChanged () { - return true; // TODO only absolute dimensions? Depending on widget class? -} - -void Layout::containerSizeChanged (Widget *widget) -{ - if (widgetAffectedByContainerSizeChange (widget)) { - widget->queueResize (0, false); - - // TODO Wrong! Iteration must stop when the *container* (not the - // *parent*!) is unaffected. (Does not matter as long as - // widgetAffectedByContainerSizeChange() returns always true.) - - Iterator *it = - widget->iterator ((Content::Type) - (Content::WIDGET_IN_FLOW | Content::WIDGET_OOF_CONT), - false); - while (it->next ()) - containerSizeChanged (it->getContent()->widget); - it->unref (); + if (topLevel) { + topLevel->containerSizeChanged (); + queueResize (true); } } |