On Friday 18 September 2009, Marco Martin wrote:
> On Friday 18 September 2009, Marco Martin wrote:
> > On Friday 18 September 2009, Lucas Murray wrote:
> > > On Fri, Sep 18, 2009 at 2:31 AM, Marco Martin <notm...@gmail.com> wrote:
> > > > hi all,
> > > > one of the things we need for the plasma netbook shell is to have
> > > > windows fullscreen most of the time, so be maximized and without
> > > > borders (title and controls to unmaximize and close are directly into
> > > > the panel) but keeping the possibility to have not maximized windows
> > > > with normal borders as usual. a while ago talking with martin we had
> > > > the idea to use decoration, directly in kdecoration, so here it is..
> > >
> > > This is not the correct way to go about it. You will want to use
> > > fullscreen windows and not maximisation. No point hacking maximisation
> > > to act identical to an already-existing functionality.
> > >
> > > > anoter idea could be modifying window rules to match also geometry,
> > > > maximized state etc..
> > >
> > > This is probably better.
> >
> > i tried expanding the window rules, but it seems that rules are stored
> > per- client and only the ones that match, so a match of a thing that
> > continuosly changes like the maximize state can't work.
> > it could perhaps be solved by being able to access the client in
> > WindowRules::check##rule and return a value that depends from the match,
> > but doesn't seem particularly feasible?
> >
> > i think the best way is still in kcommondecoration  (custom decoration
> > would still be able to access the config option and manage it by
> > temselves)
> >
> > another plasce could be in the Client class, in changeMaximize(), but
> > doesn't seem to be possible to access the configuration from there?
>
> this is done in the Client class, the border should get actually destroyed
> and recreated and is where the patch is smaller :)

now the config option is managed in Options, a bit better

> > > > another thing we need is to start windows always maximized, for that
> > > > using a rule could be a good idea, however a problem is that we
> > > > should maximize only windows with a decoration, because plasma popups
> > > > are of window type (not dialog, yeah, bad, but kinda needed for drag
> > > > and drop of extenders)
> > >
> > > KWin already has a "maximizing" placement algorithm. It can be enabled
> > > in System Settings -> Window Behavior -> Advanced -> Placement.


-- 
Marco Martin
Index: options.h
===================================================================
--- options.h	(revision 1023932)
+++ options.h	(working copy)
@@ -310,6 +310,8 @@
         */
         bool electricBorderTiling() const { return electric_border_tiling; }
 
+        bool borderlessMaximizedWindows() const { return borderless_maximized_windows; }
+
         bool topMenuEnabled() const { return topmenus; }
         bool desktopTopMenu() const { return desktop_topmenu; }
 
@@ -376,6 +378,7 @@
         int electric_border_pushback_pixels;
         bool electric_border_maximize;
         bool electric_border_tiling;
+        bool borderless_maximized_windows;
         bool show_geometry_tip;
         bool topmenus;
         bool desktop_topmenu;
Index: options.cpp
===================================================================
--- options.cpp	(revision 1023932)
+++ options.cpp	(working copy)
@@ -193,6 +193,8 @@
     config=KConfigGroup(_config,"Compositing");
     refreshRate = config.readEntry( "RefreshRate", 0 );
 
+    borderless_maximized_windows = config.readEntry( "BorderlessMaximizedWindows", false );
+
     // Read button tooltip animation effect from kdeglobals
     // Since we want to allow users to enable window decoration tooltips
     // and not kstyle tooltips and vise-versa, we don't read the
Index: geometry.cpp
===================================================================
--- geometry.cpp	(revision 1023932)
+++ geometry.cpp	(working copy)
@@ -2218,6 +2218,9 @@
 
     QRect clientArea = workspace()->clientArea( MaximizeArea, this );
 
+    if( options->borderlessMaximizedWindows() )
+        setNoBorder(max_mode == MaximizeFull);
+
     // save sizes for restoring, if maximalizing
     if( !adjust && !( y() == clientArea.top() && height() == clientArea.height()))
         {
_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel

Reply via email to