On 09/22/2015 09:34 AM, Martin Kolman wrote:
From: David Shea <dshea(a)redhat.com>
A fullscreen anaconda is inconvenient when running outside of the
regular installer media, since on Live installs some things are only
configurable in the desktop environment, and on dir and image installs
you might have other things to do while anaconda is running. Instead,
maximize anaconda and use the hide-titlebar-when-maximized property to
hide the titlebar on window managers that support it, which is really
just GNOME.
Add an option to GraphicalUserInterface to start with a fullscreen
anaconda for downstream users of the GUI that would prefer that
behavior.
Related: rhbz#1231856
Signed-off-by: Martin Kolman <mkolman(a)redhat.com>
---
pyanaconda/anaconda.py | 5 ++++-
pyanaconda/ui/gui/__init__.py | 26 +++++++++++++++++---------
2 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/pyanaconda/anaconda.py b/pyanaconda/anaconda.py
index 8e9e777..f88c42a 100644
--- a/pyanaconda/anaconda.py
+++ b/pyanaconda/anaconda.py
@@ -206,8 +206,11 @@ class Anaconda(object):
if self.displayMode == 'g':
from pyanaconda.ui.gui import GraphicalUserInterface
+ # Run the GUI in non-fullscreen mode, so live installs can still
+ # use the window manager
self._intf = GraphicalUserInterface(self.storage, self.payload,
- self.instClass,
gui_lock=self.gui_initialized)
+ self.instClass,
gui_lock=self.gui_initialized,
+ fullscreen=False)
# needs to be refreshed now we know if gui or tui will take place
addon_paths = addons.collect_addon_paths(constants.ADDON_PATHS,
diff --git a/pyanaconda/ui/gui/__init__.py b/pyanaconda/ui/gui/__init__.py
index e50aeb4..aedaa57 100644
--- a/pyanaconda/ui/gui/__init__.py
+++ b/pyanaconda/ui/gui/__init__.py
@@ -370,9 +370,18 @@ class ErrorDialog(GUIObject):
class MainWindow(Gtk.Window):
"""This is a top-level, full size window containing the Anaconda
screens."""
- def __init__(self):
+ def __init__(self, fullscreen):
+ """Create a new anaconda main window.
+
+ :param bool fullscreen: if True, fullscreen the window, if false maximize
+ """
Gtk.Window.__init__(self)
+ # Hide the titlebar when maximized if the window manager allows it.
+ # This makes anaconda look full-screenish but without covering parts
+ # needed to interact with the window manager, like the GNOME top bar.
+ self.set_hide_titlebar_when_maximized(True)
+
# Treat an attempt to close the window the same as hitting quit
self.connect("delete-event", self._on_delete_event)
@@ -400,12 +409,11 @@ class MainWindow(Gtk.Window):
self._accel_group = Gtk.AccelGroup()
self.add_accel_group(self._accel_group)
- # Connect to window-state-event changes to catch when the user
- # maxmizes/unmaximizes the window.
- self.connect("window-state-event", self._on_window_state_event)
-
- # Start the window as full screen
- self.fullscreen()
+ # Make the window big
+ if fullscreen:
+ self.fullscreen()
+ else:
+ self.maximize()
self._overlay.add(self._stack)
self.add(self._overlay)
Since you're removing the use of _on_window_state_event, you can remove
the method, too.
@@ -595,7 +603,7 @@ class GraphicalUserInterface(UserInterface):
"""
def __init__(self, storage, payload, instclass,
distributionText = product.distributionText, isFinal =
product.isFinal,
- quitDialog = QuitDialog, gui_lock = None):
+ quitDialog = QuitDialog, gui_lock = None, fullscreen=False):
UserInterface.__init__(self, storage, payload, instclass)
@@ -606,7 +614,7 @@ class GraphicalUserInterface(UserInterface):
self.data = None
- self.mainWindow = MainWindow()
+ self.mainWindow = MainWindow(fullscreen=fullscreen)
self._distributionText = distributionText
self._isFinal = isFinal
Looks good otherwise.