summaryrefslogtreecommitdiff
path: root/src
diff options
authorNeil Jagdish Patel <neil.patel@canonical.com>2010-12-16 10:38:31 +0000
committerNeil Jagdish Patel <neil.patel@canonical.com>2010-12-16 10:38:31 +0000
commit544df0c05ed7ae719548d6af2c7ca1cb6a48d285 (patch)
treed95de03ec458e40e144bb4ebb085bf9a113efa98 /src
parent6576a24064d94ce2bfabd0dbcfac6dd7ee2dcf2a (diff)
Implement some basic features
(bzr r669.3.17)
Diffstat (limited to 'src')
-rw-r--r--src/PanelMenuView.cpp18
-rw-r--r--src/PluginAdapter.cpp36
-rw-r--r--src/PluginAdapter.h4
-rw-r--r--src/WindowManager.cpp12
-rw-r--r--src/WindowManager.h9
5 files changed, 69 insertions, 10 deletions
diff --git a/src/PanelMenuView.cpp b/src/PanelMenuView.cpp
index b8a52992d..fc7fefd33 100644
--- a/src/PanelMenuView.cpp
+++ b/src/PanelMenuView.cpp
@@ -465,19 +465,31 @@ PanelMenuView::OnActiveWindowChanged (BamfView *old_view,
void
PanelMenuView::OnCloseClicked ()
{
- g_debug ("close");
+ BamfWindow *window;
+
+ window = bamf_matcher_get_active_window (_matcher);
+ if (BAMF_IS_WINDOW (window))
+ WindowManager::Default ()->Close (bamf_window_get_xid (window));
}
void
PanelMenuView::OnMinimizeClicked ()
{
- g_debug ("minimize");
+ BamfWindow *window;
+
+ window = bamf_matcher_get_active_window (_matcher);
+ if (BAMF_IS_WINDOW (window))
+ WindowManager::Default ()->Minimize (bamf_window_get_xid (window));
}
void
PanelMenuView::OnRestoreClicked ()
{
- g_debug ("restore");
+ BamfWindow *window;
+
+ window = bamf_matcher_get_active_window (_matcher);
+ if (BAMF_IS_WINDOW (window))
+ WindowManager::Default ()->Restore (bamf_window_get_xid (window));
}
diff --git a/src/PluginAdapter.cpp b/src/PluginAdapter.cpp
index 25b8399d8..3ba3910d2 100644
--- a/src/PluginAdapter.cpp
+++ b/src/PluginAdapter.cpp
@@ -53,9 +53,15 @@ void
PluginAdapter::NotifyStateChange (CompWindow *window, unsigned int state, unsigned int last_state)
{
if (!(last_state & MAXIMIZE_STATE) && (state & MAXIMIZE_STATE))
- window_maximized.emit (window);
+ {
+ PluginAdapter::window_maximized.emit (window);
+ WindowManager::window_maximized.emit (window->id ());
+ }
else if ((last_state & MAXIMIZE_STATE) && !(state & MAXIMIZE_STATE))
- window_restored.emit (window);
+ {
+ PluginAdapter::window_restored.emit (window);
+ WindowManager::window_restored.emit (window->id ());
+ }
}
void
@@ -193,12 +199,34 @@ PluginAdapter::IsWindowMaximized (guint xid)
}
void
-PluginAdapter::Maximize (guint32 xid)
+PluginAdapter::Restore (guint32 xid)
+{
+ Window win = (Window)xid;
+ CompWindow *window;
+
+ window = m_Screen->findWindow (win);
+ if (window)
+ window->maximize (0);
+}
+
+void
+PluginAdapter::Minimize (guint32 xid)
+{
+ Window win = (Window)xid;
+ CompWindow *window;
+
+ window = m_Screen->findWindow (win);
+ if (window)
+ window->minimize ();
+}
+
+void
+PluginAdapter::Close (guint32 xid)
{
Window win = (Window)xid;
CompWindow *window;
window = m_Screen->findWindow (win);
if (window)
- window->maximize ();
+ window->close (CurrentTime);
}
diff --git a/src/PluginAdapter.h b/src/PluginAdapter.h
index 3eb180816..a81b485e1 100644
--- a/src/PluginAdapter.h
+++ b/src/PluginAdapter.h
@@ -51,7 +51,9 @@ public:
// WindowManager implementation
bool IsWindowMaximized (guint xid);
- void Maximize (guint32 xid);
+ void Restore (guint32 xid);
+ void Minimize (guint32 xid);
+ void Close (guint32 xid);
sigc::signal<void, CompWindow *> window_maximized;
sigc::signal<void, CompWindow *> window_restored;
diff --git a/src/WindowManager.cpp b/src/WindowManager.cpp
index 170be77ff..baa33da1a 100644
--- a/src/WindowManager.cpp
+++ b/src/WindowManager.cpp
@@ -27,7 +27,17 @@ class WindowManagerDummy : public WindowManager
return true;
}
- void Maximize (guint32 xid)
+ void Restore (guint32 xid)
+ {
+ g_debug ("%s", G_STRFUNC);
+ }
+
+ void Minimize (guint32 xid)
+ {
+ g_debug ("%s", G_STRFUNC);
+ }
+
+ void Close (guint32 xid)
{
g_debug ("%s", G_STRFUNC);
}
diff --git a/src/WindowManager.h b/src/WindowManager.h
index b899f1596..56c991e2a 100644
--- a/src/WindowManager.h
+++ b/src/WindowManager.h
@@ -20,6 +20,7 @@
#define WINDOW_MANAGER_H
#include <glib.h>
+#include <sigc++/sigc++.h>
class WindowManager
{
@@ -30,7 +31,13 @@ public:
virtual bool IsWindowMaximized (guint32 xid) = 0;
- virtual void Maximize (guint32 xid) = 0;
+ virtual void Restore (guint32 xid) = 0;
+ virtual void Minimize (guint32 xid) = 0;
+ virtual void Close (guint32 xid) = 0;
+
+ // Signals
+ sigc::signal<void, guint32> window_maximized;
+ sigc::signal<void, guint32> window_restored;
};
#endif // WINDOW_MANAGER_H