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

List:       kwin
Subject:    [PATCH] tabstrip deco: make outline color configurable
From:       Melchior FRANZ <mfranz () kde ! org>
Date:       2011-08-25 15:37:55
Message-ID: 201108251737.55960 () rk-nord ! at
[Download RAW message or body]

From 43c2607cd7bbf91b5a920bf5708b42d5c5e5e007 Mon Sep 17 00:00:00 2001
From: Melchior FRANZ <mfranz@aon.at>
Date: Thu, 25 Aug 2011 16:30:45 +0200
Subject: [PATCH 1/1] tabstrip: make outline color configurable

In addition to the foreground and background color the tabstrip window
decoration also has an outline color, which is currently hardcoded as
white. This doesn't fit very well in certain color combinations, so it
is desirable to make this color configurable.

Signed-off-by: Melchior FRANZ <mfranz@aon.at>
---
The config dialog (attached screenshot) isn't particularly pleasing,
but I found it hard to align the three different widgets in a meaningful
way. The first screenshot shows the deco with grouped windows and black
as outline color. You see that the widget composition doesn't become
unclear. The second screenshot shows windows with different combinations
copied together as an illustration. The top row corresponds to the
currently hardcoded outline color white.


 kwin/clients/tabstrip/config/tabstripconfig.cpp |    4 ++++
 kwin/clients/tabstrip/config/tabstripconfig.ui  |   20 ++++++++++++++++++++
 kwin/clients/tabstrip/tabstripdecoration.cpp    |    8 ++++----
 kwin/clients/tabstrip/tabstripfactory.cpp       |    2 ++
 kwin/clients/tabstrip/tabstripfactory.h         |    6 ++++++
 5 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/kwin/clients/tabstrip/config/tabstripconfig.cpp \
b/kwin/clients/tabstrip/config/tabstripconfig.cpp index 4174cba..4ddd8fd 100644
--- a/kwin/clients/tabstrip/config/tabstripconfig.cpp
+++ b/kwin/clients/tabstrip/config/tabstripconfig.cpp
@@ -49,6 +49,7 @@ TabstripConfig::TabstripConfig( KConfig *c, QWidget *parent )
     connect( ui->center, SIGNAL(clicked()), SIGNAL(changed()) );
     connect( ui->right, SIGNAL(clicked()), SIGNAL(changed()) );
     connect( ui->showIcon, SIGNAL(clicked()), SIGNAL(changed()) );
+    connect( ui->outlineColor, SIGNAL(clicked()), SIGNAL(changed()) );
     load( cg );
     ui->show();
     }
@@ -67,6 +68,7 @@ void TabstripConfig::load( KConfigGroup &c )
     ui->center->setChecked( align == "Center" );
     ui->right->setChecked( align == "Right" );
     ui->showIcon->setChecked( c.readEntry( "ShowIcon", true ) );
+    ui->outlineColor->setColor( c.readEntry( "OutlineColor", QColor( Qt::white ) ) \
);  }
 
 void TabstripConfig::save( KConfigGroup &c )
@@ -79,6 +81,7 @@ void TabstripConfig::save( KConfigGroup &c )
     else
         c.writeEntry( "TitleAlignment", "Right" );
     c.writeEntry( "ShowIcon", ui->showIcon->isChecked() );
+    c.writeEntry( "OutlineColor", ui->outlineColor->color() );
     config->sync();
     }
 
@@ -88,5 +91,6 @@ void TabstripConfig::defaults()
     ui->center->setChecked( true );
     ui->right->setChecked( false );
     ui->showIcon->setChecked( true );
+    ui->outlineColor->setColor( Qt::white );
     emit changed();
     }
diff --git a/kwin/clients/tabstrip/config/tabstripconfig.ui \
b/kwin/clients/tabstrip/config/tabstripconfig.ui index 1a21e05..8927f9d 100644
--- a/kwin/clients/tabstrip/config/tabstripconfig.ui
+++ b/kwin/clients/tabstrip/config/tabstripconfig.ui
@@ -51,6 +51,26 @@
      </property>
     </widget>
    </item>
+   <item>
+    <layout class="QHBoxLayout" name="outlineColorLayout">
+     <item>
+      <widget class="QLabel" name="outline">
+       <property name="text">
+        <string>O&amp;utline Color:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+       <property name="buddy">
+        <cstring>outlineColor</cstring>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="KColorButton" name="outlineColor"/>
+     </item>
+    </layout>
+   </item>
   </layout>
  </widget>
  <resources/>
diff --git a/kwin/clients/tabstrip/tabstripdecoration.cpp \
b/kwin/clients/tabstrip/tabstripdecoration.cpp index ae46872..a159a96 100644
--- a/kwin/clients/tabstrip/tabstripdecoration.cpp
+++ b/kwin/clients/tabstrip/tabstripdecoration.cpp
@@ -81,7 +81,7 @@ void TabstripDecoration::paintTab( QPainter &painter, const QRect \
&geom, ClientG  // Draw border around the tab
     painter.setPen( Qt::black );
     painter.drawRect( geom.adjusted( 0, 0, -1, -1 ));
-    painter.setPen( Qt::white );
+    painter.setPen( TabstripFactory::outlineColor() );
     painter.drawRect( geom.adjusted( 1, 1, -2, -2 ));
 
     // Background
@@ -132,7 +132,7 @@ void TabstripDecoration::paintEvent( QPaintEvent * )
     // Draw black/white border around the main window
     painter.setPen( Qt::black );
     painter.drawRect( 0, titlebar.height() - 1, frame.width() - 1, frame.height() - \
                titlebar.height() );
-    painter.setPen( Qt::white );
+    painter.setPen( TabstripFactory::outlineColor() );
     painter.drawRect( 1, titlebar.height(), frame.width() - 3, frame.height() - \
titlebar.height() - 2 );  
     QList< ClientGroupItem > tabList = clientGroupItems();
@@ -176,7 +176,7 @@ void TabstripDecoration::paintEvent( QPaintEvent * )
         painter.setPen( Qt::black );
         painter.drawRect( 0, 0, allTabGeom.left(), allTabGeom.height() - 1 );
         painter.drawRect( allTabGeom.right() - 1, 0, frame.width() - \
                allTabGeom.right(), allTabGeom.height() - 1 );
-        painter.setPen( Qt::white );
+        painter.setPen( TabstripFactory::outlineColor() );
         painter.drawRect( 1, 1, allTabGeom.left() - 2, allTabGeom.height() - 3 );
         painter.drawRect( allTabGeom.right(), 1, frame.width() - allTabGeom.right() \
- 2, allTabGeom.height() - 3 );  
@@ -189,7 +189,7 @@ void TabstripDecoration::paintEvent( QPaintEvent * )
         // Draw border around the titlebar
         painter.setPen( Qt::black );
         painter.drawRect( titlebar.adjusted( 0, 0, -1, -1 ));
-        painter.setPen( Qt::white );
+        painter.setPen( TabstripFactory::outlineColor() );
         painter.drawRect( titlebar.adjusted( 1, 1, -2, -2 ));
 
         // Background
diff --git a/kwin/clients/tabstrip/tabstripfactory.cpp \
b/kwin/clients/tabstrip/tabstripfactory.cpp index 591a148..6b34c01 100644
--- a/kwin/clients/tabstrip/tabstripfactory.cpp
+++ b/kwin/clients/tabstrip/tabstripfactory.cpp
@@ -36,6 +36,7 @@ extern "C"
 
 Qt::AlignmentFlag TabstripFactory::titlealign = Qt::AlignCenter;
 bool TabstripFactory::show_icon = true;
+QColor TabstripFactory::outline_color = Qt::white;
 
 TabstripFactory::TabstripFactory()
     {
@@ -88,6 +89,7 @@ bool TabstripFactory::readConfig()
     else if( align == "Right" )
         titlealign = Qt::AlignRight;
     show_icon = cg.readEntry( "ShowIcon", true );
+    outline_color = cg.readEntry( "OutlineColor", QColor( Qt::white ) );
     return ( titlealign != oldalign );
     }
 
diff --git a/kwin/clients/tabstrip/tabstripfactory.h \
b/kwin/clients/tabstrip/tabstripfactory.h index 2b667f0..0b610c2 100644
--- a/kwin/clients/tabstrip/tabstripfactory.h
+++ b/kwin/clients/tabstrip/tabstripfactory.h
@@ -37,11 +37,13 @@ class TabstripFactory : public KDecorationFactoryUnstable
         QList< KDecorationDefines::BorderSize > borderSizes() const;
         static Qt::AlignmentFlag titleAlign();
         static bool showIcon();
+        static QColor &outlineColor();
     private:
         bool readConfig();
         bool initialized;
         static Qt::AlignmentFlag titlealign;
         static bool show_icon;
+        static QColor outline_color;
     };
 
 inline Qt::AlignmentFlag TabstripFactory::titleAlign()
@@ -53,5 +55,9 @@ inline bool TabstripFactory::showIcon()
     {
     return show_icon;
     }
+inline QColor &TabstripFactory::outlineColor()
+    {
+    return outline_color;
+    }
 
 #endif
-- 
1.7.6.GIT


["tabstrip.png" (image/png)]
["tabstrip2.png" (image/png)]
["config.jpg" (image/jpeg)]

_______________________________________________
kwin mailing list
kwin@kde.org
https://mail.kde.org/mailman/listinfo/kwin


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

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