[virt-tools-list] [PATCH] virt-manager: Don't clear all page visibilities during initialization

Cole Robinson crobinso at redhat.com
Tue Mar 24 16:36:48 UTC 2015


On 03/24/2015 07:16 AM, Marc Deslauriers wrote:
> Hi,
> 
> On 2015-03-16 02:55 PM, Cole Robinson wrote:
>> On 03/13/2015 09:31 AM, Marc Deslauriers wrote:
>>> Hello,
>>>
>>> Here is a patch to correct grab issues when windows overlap stemming from
>>> incorrect page visibilities.
>>>
>>> Thanks,
>>>
>>> Marc.
>>>
>>> >From a11986b10f13bc85f0be578e5460369a1ecafb57 Mon Sep 17 00:00:00 2001
>>> From: Marc Deslauriers <marc.deslauriers at ubuntu.com>
>>> Date: Fri, 13 Mar 2015 09:28:02 -0400
>>> Subject: [PATCH] Don't clear all page visibilities during initialization
>>>
>>> Since commit dfa23765, page_changed() sets page visibilities based on the
>>> value of the newpage parameter. Calling the function without it being set
>>> makes all pages invisible at once during initialization, resulting in a
>>> weird scenario which prevents the window from getting proper focus events
>>> when another window partially overlaps it, resulting in stuck grabs.
>>
>> Can we instead take the bit added in dfa23765 and stick it under:
>>
>> if newpage is not None:
>>     <code>
>>
>> page_changed has other initial init bits (like setting fullscreen state) and
>> could grow more in the future.
> 
> Sure, that works. Here is an updated patch.
> 
> Marc.
> 
> From a0590babada24dc00f1de86644350c9e1f23461e Mon Sep 17 00:00:00 2001
> From: Marc Deslauriers <marc.deslauriers at ubuntu.com>
> Date: Tue, 24 Mar 2015 07:14:31 -0400
> Subject: [PATCH] Don't clear all page visibilities during initialization
> 
> Since commit dfa23765, page_changed() sets page visibilities based on the
> value of the newpage parameter. Calling the function without it being set
> makes all pages invisible at once during initialization, resulting in a
> weird scenario which prevents the window from getting proper focus events
> when another window partially overlaps it, resulting in stuck grabs.
> ---
>  virtManager/console.py | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/virtManager/console.py b/virtManager/console.py
> index 749c165..e6f472e 100644
> --- a/virtManager/console.py
> +++ b/virtManager/console.py
> @@ -1095,9 +1095,10 @@ class vmmConsolePages(vmmGObjectUI):
>      def page_changed(self, ignore1=None, ignore2=None, newpage=None):
>          pagenum = self.widget("console-pages").get_current_page()
> 
> -        for i in range(self.widget("console-pages").get_n_pages()):
> -            w = self.widget("console-pages").get_nth_page(i)
> -            w.set_visible(i == newpage)
> +        if newpage is not None:
> +            for i in range(self.widget("console-pages").get_n_pages()):
> +                w = self.widget("console-pages").get_nth_page(i)
> +                w.set_visible(i == newpage)
> 
>          if pagenum < CONSOLE_PAGE_OFFSET:
>              self.last_gfx_page = pagenum
> 

Thanks Marc, pushed now

- Cole




More information about the virt-tools-list mailing list