summaryrefslogtreecommitdiff
diff options
authorAndrea Azzarone <azzaronea@gmail.com>2013-02-05 00:09:24 +0100
committerAndrea Azzarone <azzaronea@gmail.com>2013-02-05 00:09:24 +0100
commit3338fe59dc78d42f60cebd76314411a66a6d4738 (patch)
tree6d9ef9ec589b57c79bbf0dba2a3e31e0b480fe8d
parent8a6f80ec34fb19e5b8e8428a5516bb62fb830602 (diff)
Add GetWindowInStackingOrder.
(bzr r3096.2.2)
-rw-r--r--tests/MockWindowManager.h1
-rw-r--r--unity-shared/PluginAdapter.cpp12
-rw-r--r--unity-shared/PluginAdapter.h1
-rw-r--r--unity-shared/StandaloneWindowManager.cpp5
-rw-r--r--unity-shared/StandaloneWindowManager.h1
-rw-r--r--unity-shared/WindowManager.h1
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 fd278c185..cba2db612 100644
--- a/unity-shared/StandaloneWindowManager.cpp
+++ b/unity-shared/StandaloneWindowManager.cpp
@@ -91,6 +91,11 @@ Window StandaloneWindowManager::GetActiveWindow() const
return 0;
}
+std::vector<Window> StandaloneWindowManager::GetWindowsInStackingOrder() const
+{
+ return std::vector<Window>();
+}
+
bool StandaloneWindowManager::IsWindowMaximized(Window window_id) const
{
auto it = standalone_windows_.find(window_id);
diff --git a/unity-shared/StandaloneWindowManager.h b/unity-shared/StandaloneWindowManager.h
index 1023ccd82..7e20f52e4 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;