Signed-off-by: Povilas Kanapickas <povilas@xxxxxxxx> --- ui/details.ui | 9 +++++++++ virtManager/console.py | 42 ++++++++++++++++++++++++++++++++++++++++-- virtManager/details.py | 5 +++++ 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/ui/details.ui b/ui/details.ui index c18070c8..d09a692c 100644 --- a/ui/details.ui +++ b/ui/details.ui @@ -254,6 +254,15 @@ <signal name="activate" handler="on_details_menu_view_fullscreen_activate" swapped="no"/> </object> </child> + <child> + <object class="GtkCheckMenuItem" id="details-menu-view-hide-decorations"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">_Hide decorations</property> + <property name="use_underline">True</property> + <signal name="activate" handler="on_details_menu_view_hide_decorations_activate" swapped="no"/> + </object> + </child> <child> <object class="GtkMenuItem" id="detains-menu-view-size-to-vm"> <property name="visible">True</property> diff --git a/virtManager/console.py b/virtManager/console.py index 34a0447a..0a0469b1 100644 --- a/virtManager/console.py +++ b/virtManager/console.py @@ -131,7 +131,7 @@ class vmmOverlayToolbar: self.send_key_button = None self.timed_revealer = None self.keycombo_toolbar = None - self.toolbar = None + self.overlay_toolbar = None self.send_key_button = None self.timed_revealer = None @@ -230,6 +230,16 @@ class vmmConsolePages(vmmGObjectUI): on_send_key_fn=self._do_send_key) self.widget("console-overlay").add_overlay(overlay) + self._overlay_toolbar_decorations = vmmOverlayToolbar() + overlay = self._overlay_toolbar_decorations.create( + name="Hidden Decorations Toolbar", + tooltip_text=_("Show decorations"), + accessible_name="Show Decorations", + send_key_accessible_name="Hidden Decorations Send Key", + on_leave_fn=self._leave_hidden_decorations, + on_send_key_fn=self._do_send_key) + self.widget("console-overlay").add_overlay(overlay) + # Make viewer widget background always be black black = Gdk.Color(0, 0, 0) self.widget("console-gfx-viewport").modify_bg(Gtk.StateType.NORMAL, @@ -275,6 +285,7 @@ class vmmConsolePages(vmmGObjectUI): self._viewer = None self._overlay_toolbar_fullscreen.cleanup() + self._overlay_toolbar_decorations.cleanup() for serial in self._serial_consoles: serial.cleanup() @@ -285,7 +296,6 @@ class vmmConsolePages(vmmGObjectUI): # Initialization helpers # ########################## - def _init_menus(self): # Serial list menu smenu = Gtk.Menu() @@ -548,6 +558,8 @@ class vmmConsolePages(vmmGObjectUI): self.widget("control-fullscreen").set_sensitive(allow_fullscreen) self.widget("details-menu-view-fullscreen").set_sensitive( allow_fullscreen) + self.widget("details-menu-view-hide-decorations").set_sensitive( + allow_fullscreen) def _leave_fullscreen(self, ignore=None): self._change_fullscreen(False) @@ -563,6 +575,8 @@ class vmmConsolePages(vmmGObjectUI): def _change_fullscreen(self, do_fullscreen): self.widget("control-fullscreen").set_active(do_fullscreen) + self.widget('details-menu-view-hide-decorations').set_sensitive( + not do_fullscreen) if do_fullscreen: self.topwin.fullscreen() @@ -574,6 +588,24 @@ class vmmConsolePages(vmmGObjectUI): self._change_menu_toolbar_hidden(do_fullscreen) self._sync_scaling_with_display() + def _leave_hidden_decorations(self, ignore=None): + self._change_hide_decorations(False) + + def _change_hide_decorations(self, do_hide): + self.widget('details-menu-view-fullscreen').set_sensitive(not do_hide) + # this function may be called from other code, so ensure that widget + # state corresponds to the actual situation + self.widget('details-menu-view-hide-decorations').set_active(do_hide) + + if do_hide: + self.topwin.get_window().set_decorations(0) + self._overlay_toolbar_decorations.timed_revealer.force_reveal(True) + else: + self._overlay_toolbar_decorations.timed_revealer.force_reveal(False) + self.topwin.get_window().set_decorations(Gdk.WMDecoration.ALL) + + self._change_menu_toolbar_hidden(do_hide) + self._sync_scaling_with_display() ########################## # State tracking methods # @@ -595,6 +627,7 @@ class vmmConsolePages(vmmGObjectUI): self._viewer = None self._leave_fullscreen() + self._leave_hidden_decorations() for serial in self._serial_consoles: serial.close() @@ -696,6 +729,7 @@ class vmmConsolePages(vmmGObjectUI): for c in self._keycombo_menu.get_children(): c.set_sensitive(can_sendkey) self._overlay_toolbar_fullscreen.set_sensitive(can_sendkey) + self._overlay_toolbar_decorations.set_sensitive(can_sendkey) self._refresh_can_fullscreen() @@ -1063,5 +1097,9 @@ class vmmConsolePages(vmmGObjectUI): do_fullscreen = src.get_active() self._change_fullscreen(do_fullscreen) + def details_toggle_hide_decorations(self, src): + do_hide = src.get_active() + self._change_hide_decorations(do_hide) + def details_auth_login(self, ignore): self._set_credentials() diff --git a/virtManager/details.py b/virtManager/details.py index b7e7fc14..b6a6cab4 100644 --- a/virtManager/details.py +++ b/virtManager/details.py @@ -602,6 +602,8 @@ class vmmDetails(vmmGObjectUI): # Listeners stored in vmmConsolePages "on_details_menu_view_fullscreen_activate": ( self.console.details_toggle_fullscreen), + "on_details_menu_view_hide_decorations_activate": ( + self.console.details_toggle_hide_decorations), "on_details_menu_view_size_to_vm_activate": ( self.console.details_size_to_vm), "on_details_menu_view_scale_always_toggled": ( @@ -720,6 +722,9 @@ class vmmDetails(vmmGObjectUI): def _close(self): fs = self.widget("details-menu-view-fullscreen") + if fs.get_active(): + fs.set_active(False) + fs = self.widget("details-menu-view-hide-decorations") if fs.get_active(): fs.set_active(False) -- 2.17.1 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list