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 :)

> > > 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: client.cpp
===================================================================
--- client.cpp	(revision 1023932)
+++ client.cpp	(working copy)
@@ -180,6 +180,10 @@
     ready_for_painting = false; // wait for first damage or sync reply
 #endif
 
+    KSharedConfigPtr c( KGlobal::config() );
+    const KConfigGroup cg = c->group( "Windows" );
+    borderlessMaximizedWindows = cg.readEntry( "BorderlessMaximizedWindows", false );
+
     // SELI TODO: Initialize xsizehints??
     }
 
Index: client.h
===================================================================
--- client.h	(revision 1023932)
+++ client.h	(working copy)
@@ -608,6 +608,7 @@
 
         bool electricMaximizing;
         ElectricMaximizingMode electricMode;
+        bool borderlessMaximizedWindows;
 
         friend bool performTransiencyCheck();
     };
Index: geometry.cpp
===================================================================
--- geometry.cpp	(revision 1023932)
+++ geometry.cpp	(working copy)
@@ -2218,6 +2218,9 @@
 
     QRect clientArea = workspace()->clientArea( MaximizeArea, this );
 
+    if( 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