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

Marc Deslauriers marc.deslauriers at canonical.com
Tue Mar 24 11:16:23 UTC 2015


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
-- 
2.1.4






More information about the virt-tools-list mailing list