diff options
| -rw-r--r-- | tests/MockWindowManager.h | 1 | ||||
| -rw-r--r-- | unity-shared/PluginAdapter.cpp | 12 | ||||
| -rw-r--r-- | unity-shared/PluginAdapter.h | 1 | ||||
| -rw-r--r-- | unity-shared/StandaloneWindowManager.cpp | 5 | ||||
| -rw-r--r-- | unity-shared/StandaloneWindowManager.h | 1 | ||||
| -rw-r--r-- | unity-shared/WindowManager.h | 1 |
6 files changed, 21 insertions, 0 deletions
diff --git a/tests/MockWindowManager.h b/tests/MockWindowManager.h index 026d4baa3..3758bc520 100644 --- a/tests/MockWindowManager.h +++ b/tests/MockWindowManager.h @@ -33,6 +33,7 @@ class MockWindowManager : public WindowManager ~MockWindowManager(); MOCK_CONST_METHOD0(GetActiveWindow, Window()); + MOCK_CONST_METHOD0(GetWindowsInStackingOrder, std::vector<Window>()); MOCK_CONST_METHOD1(IsWindowDecorated, bool(Window)); MOCK_CONST_METHOD1(IsWindowMaximized, bool(Window)); MOCK_CONST_METHOD1(IsWindowOnCurrentDesktop, bool(Window)); diff --git a/unity-shared/PluginAdapter.cpp b/unity-shared/PluginAdapter.cpp index cea1a49f2..9fbc46598 100644 --- a/unity-shared/PluginAdapter.cpp +++ b/unity-shared/PluginAdapter.cpp @@ -431,6 +431,18 @@ Window PluginAdapter::GetActiveWindow() const return m_Screen->activeWindow(); } +std::vector<Window> PluginAdapter::GetWindowsInStackingOrder() const +{ + bool stacking_order = true; + auto const& windows = m_Screen->clientList(stacking_order); + + std::vector<Window> ret; + for (auto const& window : windows) + ret.push_back(window->id()); + + return ret; +} + bool PluginAdapter::IsWindowMaximized(Window window_id) const { CompWindow* window = m_Screen->findWindow(window_id); diff --git a/unity-shared/PluginAdapter.h b/unity-shared/PluginAdapter.h index ac0fbc588..0827a6cf7 100644 --- a/unity-shared/PluginAdapter.h +++ b/unity-shared/PluginAdapter.h @@ -120,6 +120,7 @@ public: void NotifyNewDecorationState(Window xid); Window GetActiveWindow() const; + std::vector<Window> GetWindowsInStackingOrder() const override; void Decorate(Window xid) const; void Undecorate(Window xid) const; diff --git a/unity-shared/StandaloneWindowManager.cpp b/unity-shared/StandaloneWindowManager.cpp index b086dda89..972a86ac7 100644 --- a/unity-shared/StandaloneWindowManager.cpp +++ b/unity-shared/StandaloneWindowManager.cpp @@ -105,6 +105,11 @@ StandaloneWindow::Ptr StandaloneWindowManager::GetWindowByXid(Window window_id) return StandaloneWindow::Ptr(); } +std::vector<Window> StandaloneWindowManager::GetWindowsInStackingOrder() const +{ + return standalone_windows_; +} + bool StandaloneWindowManager::IsWindowMaximized(Window window_id) const { auto window = GetWindowByXid(window_id); diff --git a/unity-shared/StandaloneWindowManager.h b/unity-shared/StandaloneWindowManager.h index be0fc7b50..d34836432 100644 --- a/unity-shared/StandaloneWindowManager.h +++ b/unity-shared/StandaloneWindowManager.h @@ -66,6 +66,7 @@ public: StandaloneWindowManager(); virtual Window GetActiveWindow() const; + std::vector<Window> GetWindowsInStackingOrder() const override; virtual bool IsWindowMaximized(Window window_id) const; virtual bool IsWindowDecorated(Window window_id) const; diff --git a/unity-shared/WindowManager.h b/unity-shared/WindowManager.h index f4df3822a..c24355d96 100644 --- a/unity-shared/WindowManager.h +++ b/unity-shared/WindowManager.h @@ -74,6 +74,7 @@ public: static WindowManager& Default(); virtual Window GetActiveWindow() const = 0; + virtual std::vector<Window> GetWindowsInStackingOrder() const = 0; virtual bool IsWindowMaximized(Window window_id) const = 0; virtual bool IsWindowDecorated(Window window_id) const = 0; |
