Fix wxMSW rendering artifacts with modal dialogs.
When a modal dialog showed another modal dialog, parts of the parent window weren't refreshed correctly. This demonstrated itself as rendering artifacts when moving the child dialog to another position: parts of the dialog were shown as disabled, parts as enabled. Fixed by explicitly refreshing the window. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65556 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -141,6 +141,8 @@ protected:
|
|||||||
virtual void DoFreeze();
|
virtual void DoFreeze();
|
||||||
virtual void DoThaw();
|
virtual void DoThaw();
|
||||||
|
|
||||||
|
virtual void DoEnable(bool enable);
|
||||||
|
|
||||||
// helper of SetIcons(): calls gets the icon with the size specified by the
|
// helper of SetIcons(): calls gets the icon with the size specified by the
|
||||||
// given system metrics (SM_C{X|Y}[SM]ICON) from the bundle and sets it
|
// given system metrics (SM_C{X|Y}[SM]ICON) from the bundle and sets it
|
||||||
// using WM_SETICON with the specified wParam (ICOM_SMALL or ICON_BIG);
|
// using WM_SETICON with the specified wParam (ICOM_SMALL or ICON_BIG);
|
||||||
|
@@ -1279,6 +1279,17 @@ bool wxTopLevelWindowMSW::CanSetTransparent()
|
|||||||
return (os_type == wxOS_WINDOWS_NT && ver_major >= 5);
|
return (os_type == wxOS_WINDOWS_NT && ver_major >= 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxTopLevelWindowMSW::DoEnable(bool enable)
|
||||||
|
{
|
||||||
|
wxTopLevelWindowBase::DoEnable(enable);
|
||||||
|
|
||||||
|
// Enabling or disabling a window may change its appearance. Unfortunately,
|
||||||
|
// in at least some situation, toplevel windows don't repaint themselves,
|
||||||
|
// so we have to issue explicit refresh to avoid rendering artifacts.
|
||||||
|
//
|
||||||
|
// TODO: find out just what exactly is wrong here
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
void wxTopLevelWindowMSW::DoFreeze()
|
void wxTopLevelWindowMSW::DoFreeze()
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user