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,
|
InputMethodRequest = InputMethodEventFlag + 6,
|
||||||
ThemeChanged = ThemingEventFlag + 1,
|
ThemeChanged = ThemingEventFlag + 1,
|
||||||
DisplayChangedEvent = 437,
|
DisplayChangedEvent = 437,
|
||||||
|
SettingChangedEvent = DisplayChangedEvent + 1,
|
||||||
UnknownEvent = 542
|
UnknownEvent = 542
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -184,6 +185,11 @@ inline QtWindows::WindowsEventType windowsEventType(UINT message, WPARAM wParamI
|
|||||||
return QtWindows::FocusInEvent;
|
return QtWindows::FocusInEvent;
|
||||||
case WM_KILLFOCUS:
|
case WM_KILLFOCUS:
|
||||||
return QtWindows::FocusOutEvent;
|
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:
|
case WM_DISPLAYCHANGE:
|
||||||
return QtWindows::DisplayChangedEvent;
|
return QtWindows::DisplayChangedEvent;
|
||||||
case WM_THEMECHANGED:
|
case WM_THEMECHANGED:
|
||||||
|
@ -754,6 +754,8 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
|
|||||||
#endif
|
#endif
|
||||||
case QtWindows::DisplayChangedEvent:
|
case QtWindows::DisplayChangedEvent:
|
||||||
return d->m_screenManager.handleDisplayChange(wParam, lParam);
|
return d->m_screenManager.handleDisplayChange(wParam, lParam);
|
||||||
|
case QtWindows::SettingChangedEvent:
|
||||||
|
return d->m_screenManager.handleScreenChanges();
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -372,7 +372,7 @@ static inline int indexOfMonitor(const QList<QWindowsScreenData> &screenData,
|
|||||||
ones and propagates resolution changes to QWindowSystemInterface.
|
ones and propagates resolution changes to QWindowSystemInterface.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void QWindowsScreenManager::handleScreenChanges()
|
bool QWindowsScreenManager::handleScreenChanges()
|
||||||
{
|
{
|
||||||
// Look for changed monitors, add new ones
|
// Look for changed monitors, add new ones
|
||||||
const WindowsScreenDataList newDataList = monitorData();
|
const WindowsScreenDataList newDataList = monitorData();
|
||||||
@ -396,6 +396,7 @@ void QWindowsScreenManager::handleScreenChanges()
|
|||||||
delete m_screens.takeAt(i);
|
delete m_screens.takeAt(i);
|
||||||
} // not found
|
} // not found
|
||||||
} // for existing screens
|
} // for existing screens
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
@ -129,7 +129,7 @@ public:
|
|||||||
delete m_screens.takeLast();
|
delete m_screens.takeLast();
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleScreenChanges();
|
bool handleScreenChanges();
|
||||||
bool handleDisplayChange(WPARAM wParam, LPARAM lParam);
|
bool handleDisplayChange(WPARAM wParam, LPARAM lParam);
|
||||||
const WindowsScreenList &screens() const { return m_screens; }
|
const WindowsScreenList &screens() const { return m_screens; }
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user