diff options
| author | Neil Jagdish Patel <neil.patel@canonical.com> | 2010-12-16 10:38:31 +0000 |
|---|---|---|
| committer | Neil Jagdish Patel <neil.patel@canonical.com> | 2010-12-16 10:38:31 +0000 |
| commit | 544df0c05ed7ae719548d6af2c7ca1cb6a48d285 (patch) | |
| tree | d95de03ec458e40e144bb4ebb085bf9a113efa98 /src | |
| parent | 6576a24064d94ce2bfabd0dbcfac6dd7ee2dcf2a (diff) | |
Implement some basic features
(bzr r669.3.17)
Diffstat (limited to 'src')
| -rw-r--r-- | src/PanelMenuView.cpp | 18 | ||||
| -rw-r--r-- | src/PluginAdapter.cpp | 36 | ||||
| -rw-r--r-- | src/PluginAdapter.h | 4 | ||||
| -rw-r--r-- | src/WindowManager.cpp | 12 | ||||
| -rw-r--r-- | src/WindowManager.h | 9 |
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 |
