mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 09:30:45 -05:00
Patch from Soeren to fix the modifier key breakage introduced by an Xorg
2004-10-20 Elijah Newren <newren@math.utah.edu> Patch from Soeren to fix the modifier key breakage introduced by an Xorg change. (fixes #151554) * src/keybindings.c: include X11/XKBlib.h if available, (handle_spew_mark): remove this unused function declaration, (end_keyboard_grab): new function, uses XKB if available, (process_tab_grab): use end_keyboard_grab to determine whether to end the grab, (error_on_command): make key a const char *, (process_workspace_switch_grab): use end_keyboard_grab to determine whether to end the grab
This commit is contained in:
parent
adc578e32d
commit
ccd4414a0f
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
2004-10-20 Elijah Newren <newren@math.utah.edu>
|
||||||
|
|
||||||
|
Patch from Soeren to fix the modifier key breakage introduced by
|
||||||
|
an Xorg change. (fixes #151554)
|
||||||
|
|
||||||
|
* src/keybindings.c: include X11/XKBlib.h if available,
|
||||||
|
(handle_spew_mark): remove this unused function declaration,
|
||||||
|
(end_keyboard_grab): new function, uses XKB if available,
|
||||||
|
(process_tab_grab): use end_keyboard_grab to determine whether to
|
||||||
|
end the grab, (error_on_command): make key a const char *,
|
||||||
|
(process_workspace_switch_grab): use end_keyboard_grab to
|
||||||
|
determine whether to end the grab
|
||||||
|
|
||||||
2004-10-19 Anders Carlsson <andersca@gnome.org>
|
2004-10-19 Anders Carlsson <andersca@gnome.org>
|
||||||
|
|
||||||
* src/frame.c: (meta_window_ensure_frame):
|
* src/frame.c: (meta_window_ensure_frame):
|
||||||
|
@ -36,6 +36,10 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_XKB
|
||||||
|
#include <X11/XKBlib.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
static gboolean all_bindings_disabled = FALSE;
|
static gboolean all_bindings_disabled = FALSE;
|
||||||
|
|
||||||
typedef void (* MetaKeyHandlerFunc) (MetaDisplay *display,
|
typedef void (* MetaKeyHandlerFunc) (MetaDisplay *display,
|
||||||
@ -191,12 +195,6 @@ static void handle_run_terminal (MetaDisplay *display,
|
|||||||
MetaKeyBinding *binding);
|
MetaKeyBinding *binding);
|
||||||
|
|
||||||
/* debug */
|
/* debug */
|
||||||
static void handle_spew_mark (MetaDisplay *display,
|
|
||||||
MetaScreen *screen,
|
|
||||||
MetaWindow *window,
|
|
||||||
XEvent *event,
|
|
||||||
MetaKeyBinding *binding);
|
|
||||||
|
|
||||||
static gboolean process_keyboard_move_grab (MetaDisplay *display,
|
static gboolean process_keyboard_move_grab (MetaDisplay *display,
|
||||||
MetaScreen *screen,
|
MetaScreen *screen,
|
||||||
MetaWindow *window,
|
MetaWindow *window,
|
||||||
@ -2317,6 +2315,33 @@ process_keyboard_resize_grab (MetaDisplay *display,
|
|||||||
return handled;
|
return handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
end_keyboard_grab (MetaDisplay *display,
|
||||||
|
unsigned int keycode)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_XKB
|
||||||
|
if (display->xkb_base_event_type > 0)
|
||||||
|
{
|
||||||
|
unsigned int primary_modifier;
|
||||||
|
XkbStateRec state;
|
||||||
|
|
||||||
|
primary_modifier = get_primary_modifier (display, display->grab_mask);
|
||||||
|
|
||||||
|
XkbGetState (display->xdisplay, XkbUseCoreKbd, &state);
|
||||||
|
|
||||||
|
if (!(primary_modifier & state.mods))
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
if (keycode_is_primary_modifier (display, keycode, display->grab_mask))
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
process_tab_grab (MetaDisplay *display,
|
process_tab_grab (MetaDisplay *display,
|
||||||
MetaScreen *screen,
|
MetaScreen *screen,
|
||||||
@ -2334,8 +2359,7 @@ process_tab_grab (MetaDisplay *display,
|
|||||||
g_return_val_if_fail (screen->tab_popup != NULL, FALSE);
|
g_return_val_if_fail (screen->tab_popup != NULL, FALSE);
|
||||||
|
|
||||||
if (event->type == KeyRelease &&
|
if (event->type == KeyRelease &&
|
||||||
keycode_is_primary_modifier (display, event->xkey.keycode,
|
end_keyboard_grab (display, event->xkey.keycode))
|
||||||
display->grab_mask))
|
|
||||||
{
|
{
|
||||||
/* We're done, move to the new window. */
|
/* We're done, move to the new window. */
|
||||||
Window target_xwindow;
|
Window target_xwindow;
|
||||||
@ -2510,7 +2534,7 @@ error_on_generic_command (const char *key,
|
|||||||
argv[3] = "--timestamp";
|
argv[3] = "--timestamp";
|
||||||
argv[4] = timestampbuf;
|
argv[4] = timestampbuf;
|
||||||
argv[5] = "--command-failed-error";
|
argv[5] = "--command-failed-error";
|
||||||
argv[6] = key;
|
argv[6] = (char *)key;
|
||||||
argv[7] = (char*) (command ? command : "");
|
argv[7] = (char*) (command ? command : "");
|
||||||
argv[8] = (char*) message;
|
argv[8] = (char*) message;
|
||||||
argv[9] = NULL;
|
argv[9] = NULL;
|
||||||
@ -2552,12 +2576,13 @@ error_on_command (int command_index,
|
|||||||
g_free (key);
|
g_free (key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
error_on_terminal_command (const char *command,
|
error_on_terminal_command (const char *command,
|
||||||
const char *message,
|
const char *message,
|
||||||
int screen_number,
|
int screen_number,
|
||||||
Time timestamp)
|
Time timestamp)
|
||||||
{
|
{
|
||||||
char *key;
|
const char *key;
|
||||||
|
|
||||||
meta_warning ("Error on terminal command \"%s\": %s\n", command, message);
|
meta_warning ("Error on terminal command \"%s\": %s\n", command, message);
|
||||||
|
|
||||||
@ -2691,8 +2716,7 @@ process_workspace_switch_grab (MetaDisplay *display,
|
|||||||
g_return_val_if_fail (screen->tab_popup != NULL, FALSE);
|
g_return_val_if_fail (screen->tab_popup != NULL, FALSE);
|
||||||
|
|
||||||
if (event->type == KeyRelease &&
|
if (event->type == KeyRelease &&
|
||||||
keycode_is_primary_modifier (display, event->xkey.keycode,
|
end_keyboard_grab (display, event->xkey.keycode))
|
||||||
display->grab_mask))
|
|
||||||
{
|
{
|
||||||
/* We're done, move to the new workspace. */
|
/* We're done, move to the new workspace. */
|
||||||
MetaWorkspace *target_workspace;
|
MetaWorkspace *target_workspace;
|
||||||
|
Loading…
Reference in New Issue
Block a user