Windows QScreen: handle change in working area when the taskbar moves
Change-Id: Ic496419d89b9cca7653e77ef22978597abcb4e30 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
This commit is contained in:
parent
cae1eeafff
commit
02549ed219
@ -104,6 +104,7 @@ enum WindowsEventType // Simplify event types
|
||||
InputMethodRequest = InputMethodEventFlag + 6,
|
||||
ThemeChanged = ThemingEventFlag + 1,
|
||||
DisplayChangedEvent = 437,
|
||||
SettingChangedEvent = DisplayChangedEvent + 1,
|
||||
UnknownEvent = 542
|
||||
};
|
||||
|
||||
@ -184,6 +185,11 @@ inline QtWindows::WindowsEventType windowsEventType(UINT message, WPARAM wParamI
|
||||
return QtWindows::FocusInEvent;
|
||||
case WM_KILLFOCUS:
|
||||
return QtWindows::FocusOutEvent;
|
||||
// Among other things, WM_SETTINGCHANGE happens when the taskbar is moved
|
||||
// and therefore the "working area" changes.
|
||||
// http://msdn.microsoft.com/en-us/library/ms695534(v=vs.85).aspx
|
||||
case WM_SETTINGCHANGE:
|
||||
return QtWindows::SettingChangedEvent;
|
||||
case WM_DISPLAYCHANGE:
|
||||
return QtWindows::DisplayChangedEvent;
|
||||
case WM_THEMECHANGED:
|
||||
|
@ -754,6 +754,8 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
|
||||
#endif
|
||||
case QtWindows::DisplayChangedEvent:
|
||||
return d->m_screenManager.handleDisplayChange(wParam, lParam);
|
||||
case QtWindows::SettingChangedEvent:
|
||||
return d->m_screenManager.handleScreenChanges();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -372,7 +372,7 @@ static inline int indexOfMonitor(const QList<QWindowsScreenData> &screenData,
|
||||
ones and propagates resolution changes to QWindowSystemInterface.
|
||||
*/
|
||||
|
||||
void QWindowsScreenManager::handleScreenChanges()
|
||||
bool QWindowsScreenManager::handleScreenChanges()
|
||||
{
|
||||
// Look for changed monitors, add new ones
|
||||
const WindowsScreenDataList newDataList = monitorData();
|
||||
@ -396,6 +396,7 @@ void QWindowsScreenManager::handleScreenChanges()
|
||||
delete m_screens.takeAt(i);
|
||||
} // not found
|
||||
} // for existing screens
|
||||
return true;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
@ -129,7 +129,7 @@ public:
|
||||
delete m_screens.takeLast();
|
||||
}
|
||||
|
||||
void handleScreenChanges();
|
||||
bool handleScreenChanges();
|
||||
bool handleDisplayChange(WPARAM wParam, LPARAM lParam);
|
||||
const WindowsScreenList &screens() const { return m_screens; }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user