mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-01-04 01:40:13 +01:00
XQuartz: Enable a defaults option to toggle off the vnc bug workaround
This commit is contained in:
parent
cbb0a8a3fb
commit
4af2acc5fd
1 changed files with 23 additions and 11 deletions
|
|
@ -67,6 +67,7 @@ extern BOOL xpbproxy_init (void);
|
|||
#define VNCMODIFIERBUGWORKAROUND 1
|
||||
|
||||
#ifdef VNCMODIFIERBUGWORKAROUND
|
||||
static BOOL vncModifierBugWorkaround = YES;
|
||||
static NSEventType keyState[NUM_KEYCODES];
|
||||
#endif
|
||||
|
||||
|
|
@ -207,10 +208,12 @@ static void message_kit_thread (SEL selector, NSObject *arg) {
|
|||
}
|
||||
} else {
|
||||
#ifdef VNCMODIFIERBUGWORKAROUND
|
||||
DarwinUpdateModKeys(0);
|
||||
for(i=0; i < NUM_KEYCODES; i++) {
|
||||
if(keyState[i] == NSKeyDown)
|
||||
DarwinSendKeyboardEvents(KeyRelease, i);
|
||||
if(vncModifierBugWorkaround) {
|
||||
DarwinUpdateModKeys(0);
|
||||
for(i=0; i < NUM_KEYCODES; i++) {
|
||||
if(keyState[i] == NSKeyDown)
|
||||
DarwinSendKeyboardEvents(KeyRelease, i);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
DarwinSendDDXEvent(kXquartzDeactivate, 0);
|
||||
|
|
@ -694,7 +697,11 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
|
|||
{
|
||||
NSString *nsstr;
|
||||
const char *tem;
|
||||
|
||||
|
||||
#ifdef VNCMODIFIERBUGWORKAROUND
|
||||
vncModifierBugWorkaround = [self prefs_get_boolean:@"vncModifierBugWorkaround" default:vncModifierBugWorkaround];
|
||||
#endif
|
||||
|
||||
quartzUseSysBeep = [self prefs_get_boolean:@PREFS_SYSBEEP
|
||||
default:quartzUseSysBeep];
|
||||
quartzEnableRootless = [self prefs_get_boolean:@PREFS_ROOTLESS
|
||||
|
|
@ -898,8 +905,10 @@ void X11ApplicationMain (int argc, char **argv, char **envp) {
|
|||
name:NSWindowDidBecomeKeyNotification object:nil];
|
||||
|
||||
#ifdef VNCMODIFIERBUGWORKAROUND
|
||||
for(i=0; i < NUM_KEYCODES; i++) {
|
||||
keyState[i] = NSKeyUp;
|
||||
if(vncModifierBugWorkaround) {
|
||||
for(i=0; i < NUM_KEYCODES; i++) {
|
||||
keyState[i] = NSKeyUp;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -976,14 +985,15 @@ extern int darwin_modifier_flags; // darwinEvents.c
|
|||
tilt_x = 0;
|
||||
tilt_y = 0;
|
||||
|
||||
#ifndef VNCMODIFIERBUGWORKAROUND
|
||||
/* We don't receive modifier key events while out of focus, and 3button
|
||||
* emulation mucks this up, so we need to check our modifier flag state
|
||||
* on every event... ugg
|
||||
*/
|
||||
#ifdef VNCMODIFIERBUGWORKAROUND
|
||||
if(!vncModifierBugWorkaround)
|
||||
#endif
|
||||
if(darwin_modifier_flags != [e modifierFlags])
|
||||
DarwinUpdateModKeys([e modifierFlags]);
|
||||
#endif
|
||||
|
||||
switch ([e type]) {
|
||||
case NSLeftMouseDown: ev_button=1; ev_type=ButtonPress; goto handle_mouse;
|
||||
|
|
@ -1124,7 +1134,8 @@ extern int darwin_modifier_flags; // darwinEvents.c
|
|||
}
|
||||
|
||||
#ifdef VNCMODIFIERBUGWORKAROUND
|
||||
keyState[[e keyCode]] == [e type];
|
||||
if(vncModifierBugWorkaround)
|
||||
keyState[[e keyCode]] == [e type];
|
||||
#endif
|
||||
|
||||
DarwinSendKeyboardEvents(([e type] == NSKeyDown) ? KeyPress : KeyRelease, [e keyCode]);
|
||||
|
|
@ -1132,7 +1143,8 @@ extern int darwin_modifier_flags; // darwinEvents.c
|
|||
|
||||
#ifdef VNCMODIFIERBUGWORKAROUND
|
||||
case NSFlagsChanged:
|
||||
DarwinUpdateModKeys([e modifierFlags]);
|
||||
if(vncModifierBugWorkaround)
|
||||
DarwinUpdateModKeys([e modifierFlags]);
|
||||
break;
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue