mirror of
git://source.winehq.org/git/wine.git
synced 2024-11-05 18:01:34 +00:00
winex11: Add an option to disable pointer grabs.
This commit is contained in:
parent
ae2b356361
commit
4d358bfee3
3 changed files with 21 additions and 13 deletions
|
@ -938,22 +938,25 @@ BOOL CDECL X11DRV_ClipCursor( LPCRECT clip )
|
||||||
if (GetWindowThreadProcessId( GetDesktopWindow(), NULL ) == GetCurrentThreadId())
|
if (GetWindowThreadProcessId( GetDesktopWindow(), NULL ) == GetCurrentThreadId())
|
||||||
return TRUE; /* don't clip in the desktop process */
|
return TRUE; /* don't clip in the desktop process */
|
||||||
|
|
||||||
TRACE( "clipping to %s\n", wine_dbgstr_rect(clip) );
|
if (grab_pointer)
|
||||||
wine_tsx11_lock();
|
|
||||||
XUnmapWindow( display, clip_window );
|
|
||||||
XMoveResizeWindow( display, clip_window,
|
|
||||||
clip->left - virtual_screen_rect.left, clip->top - virtual_screen_rect.top,
|
|
||||||
clip->right - clip->left, clip->bottom - clip->top );
|
|
||||||
XMapWindow( display, clip_window );
|
|
||||||
if (!XGrabPointer( display, clip_window, False,
|
|
||||||
PointerMotionMask | ButtonPressMask | ButtonReleaseMask,
|
|
||||||
GrabModeAsync, GrabModeAsync, clip_window, None, CurrentTime ))
|
|
||||||
{
|
{
|
||||||
|
TRACE( "clipping to %s\n", wine_dbgstr_rect(clip) );
|
||||||
|
wine_tsx11_lock();
|
||||||
|
XUnmapWindow( display, clip_window );
|
||||||
|
XMoveResizeWindow( display, clip_window,
|
||||||
|
clip->left - virtual_screen_rect.left, clip->top - virtual_screen_rect.top,
|
||||||
|
clip->right - clip->left, clip->bottom - clip->top );
|
||||||
|
XMapWindow( display, clip_window );
|
||||||
|
if (!XGrabPointer( display, clip_window, False,
|
||||||
|
PointerMotionMask | ButtonPressMask | ButtonReleaseMask,
|
||||||
|
GrabModeAsync, GrabModeAsync, clip_window, None, CurrentTime ))
|
||||||
|
{
|
||||||
|
wine_tsx11_unlock();
|
||||||
|
clip_rect = *clip;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
wine_tsx11_unlock();
|
wine_tsx11_unlock();
|
||||||
clip_rect = *clip;
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
wine_tsx11_unlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* release the grab if any */
|
/* release the grab if any */
|
||||||
|
|
|
@ -598,6 +598,7 @@ extern int use_take_focus;
|
||||||
extern int use_primary_selection;
|
extern int use_primary_selection;
|
||||||
extern int use_system_cursors;
|
extern int use_system_cursors;
|
||||||
extern int show_systray;
|
extern int show_systray;
|
||||||
|
extern int grab_pointer;
|
||||||
extern int usexcomposite;
|
extern int usexcomposite;
|
||||||
extern int managed_mode;
|
extern int managed_mode;
|
||||||
extern int decorated_mode;
|
extern int decorated_mode;
|
||||||
|
|
|
@ -84,6 +84,7 @@ int use_take_focus = 1;
|
||||||
int use_primary_selection = 0;
|
int use_primary_selection = 0;
|
||||||
int use_system_cursors = 1;
|
int use_system_cursors = 1;
|
||||||
int show_systray = 1;
|
int show_systray = 1;
|
||||||
|
int grab_pointer = 1;
|
||||||
int managed_mode = 1;
|
int managed_mode = 1;
|
||||||
int decorated_mode = 1;
|
int decorated_mode = 1;
|
||||||
int private_color_map = 0;
|
int private_color_map = 0;
|
||||||
|
@ -426,6 +427,9 @@ static void setup_options(void)
|
||||||
if (!get_config_key( hkey, appkey, "ShowSystray", buffer, sizeof(buffer) ))
|
if (!get_config_key( hkey, appkey, "ShowSystray", buffer, sizeof(buffer) ))
|
||||||
show_systray = IS_OPTION_TRUE( buffer[0] );
|
show_systray = IS_OPTION_TRUE( buffer[0] );
|
||||||
|
|
||||||
|
if (!get_config_key( hkey, appkey, "GrabPointer", buffer, sizeof(buffer) ))
|
||||||
|
grab_pointer = IS_OPTION_TRUE( buffer[0] );
|
||||||
|
|
||||||
screen_depth = 0;
|
screen_depth = 0;
|
||||||
if (!get_config_key( hkey, appkey, "ScreenDepth", buffer, sizeof(buffer) ))
|
if (!get_config_key( hkey, appkey, "ScreenDepth", buffer, sizeof(buffer) ))
|
||||||
screen_depth = atoi(buffer);
|
screen_depth = atoi(buffer);
|
||||||
|
|
Loading…
Reference in a new issue