If mask was set to a widget before the widget was shown,
the mask was not applied.
Also, if toplevel widgets were set a mask in Windows, the mask was
applied to frame coordinates instead of client coordinates.
Ported relevant code from Qt4 to fix these issues.
Change-Id: Id6187cf4952b81b5b60c167e2fd284b7dc83ed9c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
return;
}
const HRGN winRegion = qRegionToWinRegion(region);
+
+ // Mask is in client area coordinates, so offset it in case we have a frame
+ if (window()->isTopLevel()) {
+ const QMargins margins = frameMargins();
+ OffsetRgn(winRegion, margins.left(), margins.top());
+ }
+
// SetWindowRgn takes ownership.
if (!SetWindowRgn(m_data.hwnd, winRegion, true))
DeleteObject(winRegion);
// Check children and create windows for them if necessary
q_createNativeChildrenAndSetParent(q);
+ if (extra && !extra->mask.isEmpty())
+ setMask_sys(extra->mask);
+
// If widget is already shown, set window visible, too
if (q->isVisible())
win->setVisible(true);