Dialog: Simplify handling of min/max width/height changed

Review Request #119945 - Created Aug. 26, 2014 and discarded

Vishesh Handa

When the minimumWidth/Height of the attached Layout of the mainItem
would change. The following events would happen -

  • updateMinimumWidth is called
    --> results in resizeEvent being called
    --> results in syncMainItemToSize
    --> results in slots connected to mainItem widthChanged
    ---> syncMainItemToSize + syncToMainItemSize being called a few more
    times. It's not entirely apparent why at thist point.

This kind of logic is quite hard to follow and more importantly because
of the timers in the middle, an extra paint event is called. This means
the user can first see the window resize and then the item getting

This patch introduces a little bit of code duplication (can be fixed in
future commits) to clearly establish what updateMinimumWidth should be
doing -
disconnect signals to make sure mainItem's widthChange is not triggered
update window size + item size + borders
* reposition if required

The repositioning is useful as currently if a dialog becomes wider if
will not reposition itself and will overflow. With this patch we always
make sure the entire dialog is shown.

Minor Point: On testing without the patch the dialog does reposition
itself if it is not already overflowing. I suspect this is kwin moving
the window.

A test called dialog_minWidthHeighRepositioning.qml can be used to see
how the change occurs before and after.



  • 0
  • 1
  • 1
  • 2
Description From Last Updated
Marco Martin
Marco Martin
Vishesh Handa
Review request changed

Status: Discarded