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

List:       kde-commits
Subject:    playground/artwork/Oxygen/style/code
From:       Casper Boemann <cbr () boemann ! dk>
Date:       2007-06-08 19:09:33
Message-ID: 1181329773.918864.10894.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 673012 by boemann:

Frame around menus like on windows. Still no transparent rounded 
corners.
But the frame is rounded which looks a bit silly if you notice it


 M  +33 -14    drawprimitive.cpp  
 M  +3 -3      pixelmetric.cpp  


--- trunk/playground/artwork/Oxygen/style/code/drawprimitive.cpp #673011:673012
@@ -444,21 +444,39 @@
       break;
    }
    case PE_FrameMenu: { // Frame for popup windows/menus; see also QMenu.
-#if 0
       SAVE_PEN;
-      QPalette::ColorRole role = QPalette::Window;
-      if (widget)
-         role = widget->inherits("QComboBox") ? // this is a combo popup
-         QPalette::WindowText : widget->backgroundRole();
-      QColor c = PAL.color(role);
-      painter->setPen(c);
-      painter->drawLine(RECT.x(), RECT.top(), RECT.right(), RECT.top());
-      painter->setPen(c.dark(110));
-      painter->drawLine(RECT.x(), RECT.top(), RECT.x(), RECT.bottom());
-      painter->drawLine(RECT.x(), RECT.bottom(), RECT.right(), RECT.bottom());
-      painter->drawLine(RECT.right(), RECT.top(), RECT.right(), RECT.bottom());
+    QRect frame = RECT;
+    int x,y,w,h;
+    frame.getRect(&x, &y, &w, &h);
+
+    painter->setRenderHint(QPainter::Antialiasing);
+    painter->setBrush(Qt::NoBrush);
+    QLinearGradient lg(0, 0, 0, 10);
+    QGradientStops stops;
+    stops << QGradientStop( 0, QColor(255,255,255, 110) )
+           << QGradientStop( 1, QColor(128,128,128, 60) );
+    lg.setStops(stops);
+    painter->setPen(QPen(QBrush(lg),1));
+    painter->drawLine(QPointF(6.3, 0.5), QPointF(w-6.3, 0.5));
+    painter->drawArc(QRectF(0.5, 0.5, 9.5, 9.5),90*16, 90*16);
+    painter->drawArc(QRectF(w-9.5-0.5, 0.5, 9.5, 9.5), 0, 90*16);
+
+    painter->setPen(QColor(128,128,128, 60));
+    painter->drawLine(QPointF(0.5, 6.3), QPointF(0.5, h-6.3));
+    painter->drawLine(QPointF(w-0.5, 6.3), QPointF(w-0.5, h-6.3));
+
+    lg = QLinearGradient(0, h-10, 0, h);
+    stops.clear();
+    stops << QGradientStop( 0, QColor(128,128,128, 60) )
+           << QGradientStop( 1, QColor(0,0,0, 50) );
+    lg.setStops(stops);
+    painter->setPen(QPen(QBrush(lg),1));
+    painter->drawArc(QRectF(0.5, h-9.5-0.5, 9.5, 9.5),180*16, 90*16);
+    painter->drawArc(QRectF(w-9.5-0.5, h-9.5-0.5, 9.5, 9.5), 270*16, 90*16);
+    painter->drawLine(QPointF(6.3, h-0.5), QPointF(w-6.3, h-0.5));
+
       RESTORE_PEN;
-#endif
+#if 0
       if (config.glassMenus) {
          painter->save();
          painter->setPen(Qt::white);
@@ -478,7 +496,8 @@
          shadows.line[true][Sunken].render(rect, painter, Tile::Full, false);
          shadows.line[true][Sunken].render(rect, painter, Tile::Full, true);
       }
-      break;
+#endif
+     break;
    }
    case PE_PanelMenuBar: // Panel for menu bars.
    case PE_FrameDockWidget: // Panel frame for dock windows and toolbars.
--- trunk/playground/artwork/Oxygen/style/code/pixelmetric.cpp #673011:673012
@@ -161,11 +161,11 @@
    case PM_ExclusiveIndicatorHeight: // Height of a radio button indicator
       return dpi.ExclusiveIndicator;
    case PM_MenuPanelWidth: // Border width (applied on all sides) for a QMenu
-      return 1; // cosmetic, qt hates 0 sized popupframes
+      return dpi.$3; 
    case PM_MenuHMargin: // Additional border (used on left and right) for a QMenu
-      return dpi.$2;
+      return 0; //dpi.$2;
    case PM_MenuVMargin: // Additional border (used for bottom and top) for a QMenu
-      return dpi.$1;
+      return 0; //dpi.$1;
 //    case PM_MenuScrollerHeight: // Height of the scroller area in a QMenu
 //    case PM_MenuTearoffHeight: // Height of a tear off area in a QMenu
 //    case PM_MenuDesktopFrameWidth: //  
[prev in list] [next in list] [prev in thread] [next in thread] 

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