[PATCH] Maximize anaconda instead of running fullscreen (#1231856)

Martin Kolman mkolman at redhat.com
Tue Sep 22 15:29:25 UTC 2015


On Tue, 2015-09-22 at 11:25 -0400, David Shea wrote:
> On 09/22/2015 09:34 AM, Martin Kolman wrote:
> > From: David Shea <dshea at 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 at 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.
Sure! Changing locally.
> 
> > @@ -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.
Thanks! :)


More information about the anaconda-patches mailing list