Invalidate wxDisplay cache under MSW when the displays change
The cache added in 990c8bfd73
was not
invalidated properly, meaning that wrong information was returned when
displays were [dis]connected after the application startup.
Fix this at least for MSW by invalidating the cache on receiving
WM_DISPLAYCHANGE (which means that sometimes we will do it
unnecessarily, as the change in resolution of an existing display
doesn't require cache invalidation, but this shouldn't be a big problem
in practice as the speed with which the user can change the display
resolution is not very high).
Closes https://github.com/wxWidgets/wxWidgets/pull/1090
This commit is contained in:
@@ -58,8 +58,9 @@
|
||||
#include "wx/ownerdrw.h"
|
||||
#endif
|
||||
|
||||
#include "wx/hashmap.h"
|
||||
#include "wx/display.h"
|
||||
#include "wx/evtloop.h"
|
||||
#include "wx/hashmap.h"
|
||||
#include "wx/popupwin.h"
|
||||
#include "wx/power.h"
|
||||
#include "wx/scopeguard.h"
|
||||
@@ -4692,6 +4693,8 @@ bool wxWindowMSW::HandleSysColorChange()
|
||||
|
||||
bool wxWindowMSW::HandleDisplayChange()
|
||||
{
|
||||
wxDisplay::InvalidateCache();
|
||||
|
||||
wxDisplayChangedEvent event;
|
||||
event.SetEventObject(this);
|
||||
|
||||
|
Reference in New Issue
Block a user