summaryrefslogtreecommitdiffstats
path: root/metacity-2.16.0-losing-focus.patch
blob: 6c6a28c73ee71fc572286845e57ace7972aafd29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
Index: src/display.c
===================================================================
RCS file: /cvs/gnome/metacity/src/display.c,v
retrieving revision 1.288
diff -p -u -r1.288 display.c
--- src/display.c	21 Aug 2006 18:38:21 -0000	1.288
+++ src/display.c	9 Sep 2006 18:55:33 -0000
@@ -3323,7 +3323,7 @@ meta_display_begin_grab_op (MetaDisplay 
 
       else
         display->grab_have_keyboard =
-                     meta_screen_grab_all_keys (screen);
+                     meta_screen_grab_all_keys (screen, timestamp);
       
       if (!display->grab_have_keyboard)
         {
@@ -3618,9 +3618,9 @@ meta_display_end_grab_op (MetaDisplay *d
       meta_topic (META_DEBUG_WINDOW_OPS,
                   "Ungrabbing all keys timestamp %lu\n", timestamp);
       if (display->grab_window)
-        meta_window_ungrab_all_keys (display->grab_window);
+        meta_window_ungrab_all_keys (display->grab_window, timestamp);
       else
-        meta_screen_ungrab_all_keys (display->grab_screen);
+        meta_screen_ungrab_all_keys (display->grab_screen, timestamp);
     }
 
 #ifdef HAVE_XSYNC
Index: src/keybindings.c
===================================================================
RCS file: /cvs/gnome/metacity/src/keybindings.c,v
retrieving revision 1.132
diff -p -u -r1.132 keybindings.c
--- src/keybindings.c	21 Aug 2006 19:06:25 -0000	1.132
+++ src/keybindings.c	9 Sep 2006 18:55:33 -0000
@@ -1208,18 +1208,17 @@ grab_status_to_string (int status)
 
 static gboolean
 grab_keyboard (MetaDisplay *display,
-               Window       xwindow)
+               Window       xwindow,
+               Time         timestamp)
 {
   int result;
   int grab_status;
-  Time timestamp;
   
   /* Grab the keyboard, so we get key releases and all key
    * presses
    */
   meta_error_trap_push_with_return (display);
 
-  timestamp = meta_display_get_current_time (display);
   grab_status = XGrabKeyboard (display->xdisplay,
                                xwindow, True,
                                GrabModeAsync, GrabModeAsync,
@@ -1251,12 +1250,8 @@ grab_keyboard (MetaDisplay *display,
 }
 
 static void
-ungrab_keyboard (MetaDisplay *display)
+ungrab_keyboard (MetaDisplay *display, Time timestamp)
 {
-  Time timestamp;
-
-  timestamp = meta_display_get_current_time (display);
-      
   meta_error_trap_push (display);
 
   meta_topic (META_DEBUG_KEYBINDINGS,
@@ -1267,7 +1262,7 @@ ungrab_keyboard (MetaDisplay *display)
 }
 
 gboolean
-meta_screen_grab_all_keys (MetaScreen *screen)
+meta_screen_grab_all_keys (MetaScreen *screen, Time timestamp)
 {
   gboolean retval;
 
@@ -1279,7 +1274,7 @@ meta_screen_grab_all_keys (MetaScreen *s
 
   meta_topic (META_DEBUG_KEYBINDINGS,
               "Grabbing all keys on RootWindow\n");
-  retval = grab_keyboard (screen->display, screen->xroot);
+  retval = grab_keyboard (screen->display, screen->xroot, timestamp);
   if (retval)
     screen->all_keys_grabbed = TRUE;
   else
@@ -1289,11 +1284,11 @@ meta_screen_grab_all_keys (MetaScreen *s
 }
 
 void
-meta_screen_ungrab_all_keys (MetaScreen *screen)
+meta_screen_ungrab_all_keys (MetaScreen *screen, Time timestamp)
 {
   if (screen->all_keys_grabbed)
     {
-      ungrab_keyboard (screen->display);
+      ungrab_keyboard (screen->display, timestamp);
 
       screen->all_keys_grabbed = FALSE;
       screen->keys_grabbed = FALSE;
@@ -1328,7 +1323,7 @@ meta_window_grab_all_keys (MetaWindow  *
 
   meta_topic (META_DEBUG_KEYBINDINGS,
               "Grabbing all keys on window %s\n", window->desc);
-  retval = grab_keyboard (window->display, grabwindow);
+  retval = grab_keyboard (window->display, grabwindow, timestamp);
   if (retval)
     {
       window->keys_grabbed = FALSE;
@@ -1340,11 +1335,11 @@ meta_window_grab_all_keys (MetaWindow  *
 }
 
 void
-meta_window_ungrab_all_keys (MetaWindow *window)
+meta_window_ungrab_all_keys (MetaWindow *window, Time timestamp)
 {
   if (window->all_keys_grabbed)
     {
-      ungrab_keyboard (window->display);
+      ungrab_keyboard (window->display, timestamp);
 
       window->grab_on_frame = FALSE;
       window->all_keys_grabbed = FALSE;
Index: src/keybindings.h
===================================================================
RCS file: /cvs/gnome/metacity/src/keybindings.h,v
retrieving revision 1.8
diff -p -u -r1.8 keybindings.h
--- src/keybindings.h	21 Aug 2006 18:38:21 -0000	1.8
+++ src/keybindings.h	9 Sep 2006 18:55:33 -0000
@@ -29,13 +29,16 @@ void     meta_display_init_keys         
 void     meta_display_shutdown_keys         (MetaDisplay *display);
 void     meta_screen_grab_keys              (MetaScreen  *screen);
 void     meta_screen_ungrab_keys            (MetaScreen  *screen);
-gboolean meta_screen_grab_all_keys          (MetaScreen *screen);
-void     meta_screen_ungrab_all_keys        (MetaScreen *screen);
+gboolean meta_screen_grab_all_keys          (MetaScreen *screen,
+                                             Time timestamp);
+void     meta_screen_ungrab_all_keys        (MetaScreen *screen, 
+                                             Time timestamp);
 void     meta_window_grab_keys              (MetaWindow  *window);
 void     meta_window_ungrab_keys            (MetaWindow  *window);
 gboolean meta_window_grab_all_keys          (MetaWindow  *window,
                                              Time         timestamp);
-void     meta_window_ungrab_all_keys        (MetaWindow  *window);
+void     meta_window_ungrab_all_keys        (MetaWindow  *window,
+                                             Time         timestamp);
 void     meta_display_process_key_event     (MetaDisplay *display,
                                              MetaWindow  *window,
                                              XEvent      *event);