On Tue, Nov 15, 2016 at 05:23:09PM -0500, Chris Siebenmann wrote: > > During immediate function execution fvwm tries to get exclusive > > control of the pointer (a "grab"). This failed in the given case > > because some other program held the grab. Fvwm retries grabbing > > for a second before giving up (the function is aborted). It seems > > that for whatever reason vmware grabbed control over the pointer > > for a long time, which it really should not do because it blocks > > all other applications, including the window manager. But this is > > not related to the vanishing window. > > I believe that VMWare grabs the X pointer when it converts the X > pointer into a virtual machine mouse (or non-mouse, if the virtual > machine isn't using it). The pointer stays grabbed until you manually > tell VMWare to release it or, under some conditions, until you move the > mouse pointer 'outside' the virtual machine's window. I think VMWare > also grabs the keyboard here for the same reason. > > (I believe that the VM needs to be using the mouse and have the VMWare > tools installed, at which point the in-VM driver signals VMWare itself > to let go of the mouse.) > > All of this is kind of a hack. VMWare wants 100% of the mouse and > keyboard events to go to the virtual machine without your host > environment getting in the way, even if what you're doing normally > has special meaning to the host.
I see. However, if it does that, it cannot expect to be able to communicate with the outside world, as it seems to do. Maybe this *is* the Problem after all. @Jürgen: Could you try whether the attached patch helps? (It disables all grabs during function execution and *does* break complex functions with non-immediate actions.) Ciao Dominik ^_^ ^_^ -- Dominik Vogt
>From d000725dce2e0fc1b155c9adda14cf0d28899f72 Mon Sep 17 00:00:00 2001 From: Dominik Vogt <[email protected]> Date: Wed, 16 Nov 2016 01:14:31 +0100 Subject: [PATCH] !try no grabs in function execution --- fvwm/functions.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fvwm/functions.c b/fvwm/functions.c index 298cdd3..4cbe25f 100644 --- a/fvwm/functions.c +++ b/fvwm/functions.c @@ -1018,6 +1018,7 @@ static void execute_complex_function( mask |= ECC_W; } +#if 0 /*!!!*/ /* we have to grab buttons before executing immediate actions because * these actions can move the window away from the pointer so that a * button release would go to the application below. */ @@ -1031,6 +1032,7 @@ static void execute_complex_function( __cf_cleanup(&depth, arguments, cond_rc); return; } +#endif exc2 = exc_clone_context(exc, &ecc, mask); __run_complex_function_items( cond_rc, CF_IMMEDIATE, func, exc2, arguments, @@ -1064,7 +1066,9 @@ static void execute_complex_function( { func->use_depth--; __cf_cleanup(&depth, arguments, cond_rc); +#if 0 /*!!!*/ UngrabEm(GRAB_NORMAL); +#endif return; } @@ -1078,7 +1082,9 @@ static void execute_complex_function( { func->use_depth--; __cf_cleanup(&depth, arguments, cond_rc); +#if 0 /*!!!*/ UngrabEm(GRAB_NORMAL); +#endif return; } } @@ -1182,7 +1188,9 @@ static void execute_complex_function( */ func->use_depth--; __cf_cleanup(&depth, arguments, cond_rc); +#if 0 /*!!!*/ UngrabEm(GRAB_NORMAL); +#endif return; } -- 1.7.10.4
