[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/kwin
From:       Luboš Luňák <l.lunak () kde ! org>
Date:       2005-08-08 14:23:00
Message-ID: 1123510980.958005.16519.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 444046 by lunakl:

Placement policy 'maximizing'.



 M  +3 -3      client.h  
 M  +8 -1      kcmkwin/kwinoptions/windows.cpp  
 M  +7 -6      kcmkwin/kwinoptions/windows.h  
 M  +8 -6      kcmkwin/kwinrules/ruleswidget.cpp  
 M  +5 -0      kcmkwin/kwinrules/ruleswidgetbase.ui  
 M  +23 -1     placement.cpp  
 M  +3 -1      placement.h  


--- trunk/KDE/kdebase/kwin/client.h #444045:444046
@@ -204,6 +204,9 @@
         // plainResize() simply resizes
         void plainResize( int w, int h, ForceGeometry_t force = NormalGeometrySet );
         void plainResize( const QSize& s, ForceGeometry_t force = NormalGeometrySet \
); +        // resizeWithChecks() resizes according to gravity, and checks workarea \
position +        void resizeWithChecks( int w, int h, ForceGeometry_t force = \
NormalGeometrySet ); +        void resizeWithChecks( const QSize& s, ForceGeometry_t \
force = NormalGeometrySet );  void keepInArea( QRect area, bool partial = false );
 
         void growHorizontal();
@@ -376,9 +379,6 @@
         void checkDirection( int new_diff, int old_diff, QRect& rect, const QRect& \
                area );
         static int computeWorkareaDiff( int left, int right, int a_left, int a_right \
                );
         void configureRequest( int value_mask, int rx, int ry, int rw, int rh, int \
                gravity, bool from_tool );
-        // resizeWithChecks() resizes according to gravity, and checks workarea \
                position
-        void resizeWithChecks( int w, int h, ForceGeometry_t force = \
                NormalGeometrySet );
-        void resizeWithChecks( const QSize& s, ForceGeometry_t force = \
NormalGeometrySet );  NETExtendedStrut strut() const;
         bool hasStrut() const;
         int checkShadeGeometry( int w, int h );
--- trunk/KDE/kdebase/kwin/kcmkwin/kwinoptions/windows.cpp #444045:444046
@@ -848,6 +848,7 @@
 
     placementCombo = new QComboBox(false, windowsBox);
     placementCombo->insertItem(i18n("Smart"), SMART_PLACEMENT);
+    placementCombo->insertItem(i18n("Maximizing"), MAXIMIZING_PLACEMENT);
     placementCombo->insertItem(i18n("Cascade"), CASCADE_PLACEMENT);
     placementCombo->insertItem(i18n("Random"), RANDOM_PLACEMENT);
     placementCombo->insertItem(i18n("Centered"), CENTERED_PLACEMENT);
@@ -862,6 +863,9 @@
                  " will appear on the desktop."
                  " <ul>"
                  " <li><em>Smart</em> will try to achieve a minimum overlap of \
windows</li>" +                 " <li><em>Maximizing</em> will try to maximize every \
window to fill the whole screen." +                 " It might be useful to \
selectively affect placement of some windows using" +                 " the \
window-specific settings.</li>"  " <li><em>Cascade</em> will cascade the \
windows</li>"  " <li><em>Random</em> will use a random position</li>"
                  " <li><em>Centered</em> will place the window centered</li>"
@@ -1068,7 +1072,8 @@
         setPlacement(CENTERED_PLACEMENT);
     else if( key == "ZeroCornered")
         setPlacement(ZEROCORNERED_PLACEMENT);
-
+    else if( key == "Maximizing")
+        setPlacement(MAXIMIZING_PLACEMENT);
     else
         setPlacement(SMART_PLACEMENT);
 //  }
@@ -1115,6 +1120,8 @@
         config->writeEntry(KWIN_PLACEMENT, "Centered");
     else if (v == ZEROCORNERED_PLACEMENT)
         config->writeEntry(KWIN_PLACEMENT, "ZeroCornered");
+    else if (v == MAXIMIZING_PLACEMENT)
+        config->writeEntry(KWIN_PLACEMENT, "Maximizing");
 //CT 13mar98 manual and interactive placement
 //   else if (v == MANUAL_PLACEMENT)
 //     config->writeEntry(KWIN_PLACEMENT, "Manual");
--- trunk/KDE/kdebase/kwin/kcmkwin/kwinoptions/windows.h #444045:444046
@@ -53,12 +53,13 @@
 #define RESIZE_OPAQUE       1
 
 #define SMART_PLACEMENT        0
-#define CASCADE_PLACEMENT      1
-#define RANDOM_PLACEMENT       2
-#define CENTERED_PLACEMENT     3
-#define ZEROCORNERED_PLACEMENT 4
-#define INTERACTIVE_PLACEMENT  5
-#define MANUAL_PLACEMENT       6
+#define MAXIMIZING_PLACEMENT   1
+#define CASCADE_PLACEMENT      2
+#define RANDOM_PLACEMENT       3
+#define CENTERED_PLACEMENT     4
+#define ZEROCORNERED_PLACEMENT 5
+#define INTERACTIVE_PLACEMENT  6
+#define MANUAL_PLACEMENT       7
 
 #define  CLICK_TO_FOCUS               0
 #define  FOCUS_FOLLOWS_MOUSE          1
--- trunk/KDE/kdebase/kwin/kcmkwin/kwinrules/ruleswidget.cpp #444045:444046
@@ -267,13 +267,14 @@
         {
         1, // NoPlacement
         0, // Default
-        5, // Random
+        6, // Random
         2, // Smart
-        3, // Cascade
-        4, // Centered
-        6, // ZeroCornered
-        7, // UnderMouse
-        8 // OnMainWindow
+        4, // Cascade
+        5, // Centered
+        7, // ZeroCornered
+        8, // UnderMouse
+        9, // OnMainWindow
+        3  // Maximizing
         };
     return conv[ placement ];
     }
@@ -285,6 +286,7 @@
         Placement::Default,
         Placement::NoPlacement,
         Placement::Smart,
+        Placement::Maximizing,
         Placement::Cascade,
         Placement::Centered,
         Placement::Random,
--- trunk/KDE/kdebase/kwin/kcmkwin/kwinrules/ruleswidgetbase.ui #444045:444046
@@ -1123,6 +1123,11 @@
                         </item>
                         <item>
                             <property name="text">
+                                <string>Maximizing</string>
+                            </property>
+                        </item>
+                        <item>
+                            <property name="text">
                                 <string>Cascade</string>
                             </property>
                         </item>
--- trunk/KDE/kdebase/kwin/placement.cpp #444045:444046
@@ -80,6 +80,8 @@
         placeUnderMouse(c, area);
     else if (policy == OnMainWindow)
         placeOnMainWindow(c, area);
+    else if( policy == Maximizing )
+        placeMaximizing(c, area);
     else
         placeSmart(c, area);
     }
@@ -479,6 +481,24 @@
     c->keepInArea( area ); // make sure it's kept inside workarea
     }
 
+void Placement::placeMaximizing(Client* c, const QRect& area )
+    {
+    if( c->isMaximizable() && c->maxSize().width() >= area.width() && \
c->maxSize().height() >= area.height()) +        {
+        if( m_WorkspacePtr->clientArea( MaximizeArea, c ) == area )
+            c->maximize( Client::MaximizeFull );
+        else // if the geometry doesn't match default maximize area (xinerama \
case?), +            { // it's probably better to use the given area
+            c->setGeometry( area );
+            }
+        }
+    else
+        {
+        c->resizeWithChecks( c->maxSize().boundedTo( area.size()));
+        placeSmart( c, area );
+        }
+    }
+
 QRect Placement::checkArea( const Client* c, const QRect& area )
     {
     if( area.isNull())
@@ -507,6 +527,8 @@
         return UnderMouse;
     else if( policy == "OnMainWindow" && !no_special)
         return OnMainWindow;
+    else if( policy == "Maximizing" )
+        return Maximizing;
     else
         return Smart;
     }
@@ -515,7 +537,7 @@
     {
     const char* const policies[] =
         { "NoPlacement", "Default", "Random", "Smart", "Cascade", "Centered",
-            "ZeroCornered", "UnderMouse", "OnMainWindow" };
+            "ZeroCornered", "UnderMouse", "OnMainWindow", "Maximizing" };
     assert( policy < int( sizeof( policies ) / sizeof( policies[ 0 ] )));
     return policies[ policy ];
     }
--- trunk/KDE/kdebase/kwin/placement.h #444045:444046
@@ -34,6 +34,7 @@
         void placeAtRandom            (Client* c, const QRect& area );
         void placeCascaded            (Client* c, const QRect& area, bool re_init = \
false);  void placeSmart               (Client* c, const QRect& area );
+        void placeMaximizing          (Client* c, const QRect& area );
         void placeCentered    (Client* c, const QRect& area );
         void placeZeroCornered(Client* c, const QRect& area );
         void placeDialog      (Client* c, QRect& area );
@@ -55,7 +56,8 @@
             Centered,
             ZeroCornered,
             UnderMouse, // special
-            OnMainWindow // special
+            OnMainWindow, // special
+            Maximizing
             };
 
         static Policy policyFromString( const QString& policy, bool no_special );


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic