[mutter] Make it possible to reimplement move-to-workspace keybindings from plugins
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] Make it possible to reimplement move-to-workspace keybindings from plugins
- Date: Wed, 27 Jun 2012 18:07:09 +0000 (UTC)
commit f65b7c59d377b77d0851b176c52c3f0c10b42bec
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Sat Apr 14 15:12:48 2012 +0200
Make it possible to reimplement move-to-workspace keybindings from plugins
Export the necessary functions so that a plugin that wishes to do
so can reimplement those keybindings without loss of functionality.
https://bugzilla.gnome.org/show_bug.cgi?id=674104
src/core/display.c | 15 +++++++++++++++
src/core/keybindings.c | 2 +-
src/core/window.c | 3 +++
src/meta/display.h | 2 ++
src/meta/window.h | 2 ++
5 files changed, 23 insertions(+), 1 deletions(-)
---
diff --git a/src/core/display.c b/src/core/display.c
index a789fcb..661480e 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -5535,3 +5535,18 @@ meta_display_get_leader_window (MetaDisplay *display)
{
return display->leader_window;
}
+
+/**
+ * meta_display_clear_mouse_mode:
+ * @display: a #MetaDisplay
+ *
+ * Sets the mouse-mode flag to %FALSE, which means that motion events are
+ * no longer ignored in mouse or sloppy focus.
+ * This is an internal function. It should be used only for reimplementing
+ * keybindings, and only in a manner compatible with core code.
+ */
+void
+meta_display_clear_mouse_mode (MetaDisplay *display)
+{
+ display->mouse_mode = FALSE;
+}
diff --git a/src/core/keybindings.c b/src/core/keybindings.c
index 9c41fc0..cba90f3 100644
--- a/src/core/keybindings.c
+++ b/src/core/keybindings.c
@@ -3434,7 +3434,7 @@ handle_move_to_workspace (MetaDisplay *display,
meta_topic (META_DEBUG_FOCUS,
"Resetting mouse_mode to FALSE due to "
"handle_move_to_workspace() call with flip set.\n");
- workspace->screen->display->mouse_mode = FALSE;
+ meta_display_clear_mouse_mode (workspace->screen->display);
meta_workspace_activate_with_focus (workspace,
window,
event->xkey.time);
diff --git a/src/core/window.c b/src/core/window.c
index d93026c..9f1c99d 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -5677,6 +5677,9 @@ meta_window_change_workspace (MetaWindow *window,
{
g_return_if_fail (!window->override_redirect);
+ if (window->always_sticky)
+ return;
+
meta_window_change_workspace_without_transients (window, workspace);
meta_window_foreach_transient (window, change_workspace_foreach,
diff --git a/src/meta/display.h b/src/meta/display.h
index afdfac4..04d545c 100644
--- a/src/meta/display.h
+++ b/src/meta/display.h
@@ -175,4 +175,6 @@ void meta_display_unmanage_screen (MetaDisplay *display,
MetaScreen *screen,
guint32 timestamp);
+void meta_display_clear_mouse_mode (MetaDisplay *display);
+
#endif
diff --git a/src/meta/window.h b/src/meta/window.h
index 1d2f59b..48ce79a 100644
--- a/src/meta/window.h
+++ b/src/meta/window.h
@@ -116,6 +116,8 @@ void meta_window_change_workspace_by_index (MetaWindow *window,
gint space_index,
gboolean append,
guint32 timestamp);
+void meta_window_change_workspace (MetaWindow *window,
+ MetaWorkspace *workspace);
GObject *meta_window_get_compositor_private (MetaWindow *window);
void meta_window_set_compositor_private (MetaWindow *window, GObject *priv);
void meta_window_configure_notify (MetaWindow *window, XConfigureEvent *event);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]