From 6e0733e0de675dccc95ef8761a9f59b455f7a2c7 Mon Sep 17 00:00:00 2001 From: Hugo Pereira Da Costa Date: Tue, 28 Jun 2011 01:09:22 +0200 Subject: [PATCH] fixed button rendering when compositing is disabled. --- clients/oxygen/oxygenbutton.cpp | 32 +++++++++++++++++++++++++++++--- clients/oxygen/oxygenbutton.h | 3 +++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/clients/oxygen/oxygenbutton.cpp b/clients/oxygen/oxygenbutton.cpp index 1a9e3cac30..4069bfc3ba 100644 --- a/clients/oxygen/oxygenbutton.cpp +++ b/clients/oxygen/oxygenbutton.cpp @@ -172,9 +172,35 @@ namespace Oxygen if( _client.hideTitleBar() ) return; - QPainter painter(this); - painter.setClipRect(this->rect().intersected( event->rect() ) ); - painter.setRenderHints(QPainter::Antialiasing); + if( _client.compositingActive() ) + { + QPainter painter( this ); + painter.setClipRect( event->rect() ); + paint( painter ); + + } else { + + QPixmap pixmap( size() ); + { + + QPainter painter( &pixmap ); + painter.setRenderHints(QPainter::Antialiasing); + parentWidget()->render( &painter, QPoint(), geometry(), QWidget::DrawWindowBackground ); + paint( painter ); + + } + + QPainter painter(this); + painter.setClipRect( event->rect() ); + painter.drawPixmap( QPoint(), pixmap ); + + } + + } + + //___________________________________________________ + void Button::paint( QPainter& painter ) + { QPalette palette( this->palette() ); palette.setCurrentColorGroup( isActive() ? QPalette::Active : QPalette::Inactive); diff --git a/clients/oxygen/oxygenbutton.h b/clients/oxygen/oxygenbutton.h index 03c42891c4..7a07d7f1f1 100644 --- a/clients/oxygen/oxygenbutton.h +++ b/clients/oxygen/oxygenbutton.h @@ -109,6 +109,9 @@ namespace Oxygen //! paint void paintEvent(QPaintEvent* ); + //! paint + void paint(QPainter& ); + //! draw icon void drawIcon(QPainter*);