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

List:       kde-commits
Subject:    [kdeplasma-addons] applets/kimpanel/src: use a transparent widget to workaround background artifects
From:       Weng Xuetian <wengxt () gmail ! com>
Date:       2012-08-31 21:04:12
Message-ID: 20120831210412.DD607A60A6 () git ! kde ! org
[Download RAW message or body]

Git commit d7379bbd107992e94fa09e8e56586839bd29f3b3 by Weng Xuetian.
Committed on 31/08/2012 at 22:52.
Pushed by xuetianweng into branch 'master'.

use a transparent widget to workaround background artifects bug.

M  +1    -0    applets/kimpanel/src/CMakeLists.txt
A  +17   -0    applets/kimpanel/src/dummywidget.cpp     [License: UNKNOWN]  \
* A  +37   -0    applets/kimpanel/src/dummywidget.h     [License: GPL \
(v2+)] M  +12   -1    applets/kimpanel/src/kimpanelinputpanelgraphics.cpp
M  +3    -0    applets/kimpanel/src/kimpanelinputpanelgraphics.h

The files marked with a * at the end have a non valid license. Please read: \
http://techbase.kde.org/Policies/Licensing_Policy and use the headers which \
are listed at that page.


http://commits.kde.org/kdeplasma-addons/d7379bbd107992e94fa09e8e56586839bd29f3b3


diff --git a/applets/kimpanel/src/CMakeLists.txt \
b/applets/kimpanel/src/CMakeLists.txt index 2d7863a..e3a7644 100644
--- a/applets/kimpanel/src/CMakeLists.txt
+++ b/applets/kimpanel/src/CMakeLists.txt
@@ -11,6 +11,7 @@ set(plasma_applet_kimpanel_SRCS
     kimpanelstatusbargraphics.cpp
     icongridlayout.cpp
     paintutils.cpp
+    dummywidget.cpp
 )
 
 kde4_add_ui_files(plasma_applet_kimpanel_SRCS config.ui)
diff --git a/applets/kimpanel/src/dummywidget.cpp \
b/applets/kimpanel/src/dummywidget.cpp new file mode 100644
index 0000000..ae8e2f2
--- /dev/null
+++ b/applets/kimpanel/src/dummywidget.cpp
@@ -0,0 +1,17 @@
+#include "dummywidget.h"
+#include <QPainter>
+#include <QStyleOption>
+
+DummyWidget::DummyWidget(QGraphicsWidget* parent) : \
QGraphicsWidget(parent) +{
+    setMinimumSize(0, 0);
+    setMaximumSize(INT_MAX, 1);
+    setSizePolicy(QSizePolicy::MinimumExpanding, \
QSizePolicy::MinimumExpanding); +}
+
+void DummyWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem \
*option, QWidget *widget) +{
+    Q_UNUSED(widget);
+    painter->fillRect(option->rect, QBrush(Qt::transparent));
+    // painter->fillRect(option->rect, QBrush(Qt::blue));
+}
diff --git a/applets/kimpanel/src/dummywidget.h \
b/applets/kimpanel/src/dummywidget.h new file mode 100644
index 0000000..5318f1b
--- /dev/null
+++ b/applets/kimpanel/src/dummywidget.h
@@ -0,0 +1,37 @@
+/***************************************************************************
 + *   Copyright (C) 2012 by CSSlayer <wengxt@gmail.com>                    \
* + *                                                                       \
* + *   This program is free software; you can redistribute it and/or \
modify  * + *   it under the terms of the GNU General Public License as \
published by  * + *   the Free Software Foundation; either version 2 of the \
License, or     * + *   (at your option) any later version.                 \
* + *                                                                       \
* + *   This program is distributed in the hope that it will be useful,     \
* + *   but WITHOUT ANY WARRANTY; without even the implied warranty of      \
* + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       \
* + *   GNU General Public License for more details.                        \
* + *                                                                       \
* + *   You should have received a copy of the GNU General Public License   \
* + *   along with this program; if not, write to the                       \
* + *   Free Software Foundation, Inc.,                                     \
* + *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .      \
* + ***************************************************************************/
 +
+#ifndef KIMPANEL_DUMMYWIDGET_H
+#define KIMPANEL_DUMMYWIDGET_H
+
+// Qt
+#include <QGraphicsWidget>
+
+class DummyWidget: public QGraphicsWidget
+{
+    Q_OBJECT
+public:
+
+    DummyWidget(QGraphicsWidget* parent = 0);
+
+protected:
+    virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem \
*option, QWidget *widget); +};
+
+#endif // KIMPANEL_LABELGRAPHICS_H
diff --git a/applets/kimpanel/src/kimpanelinputpanelgraphics.cpp \
b/applets/kimpanel/src/kimpanelinputpanelgraphics.cpp index \
                16b2187..1d511fd 100644
--- a/applets/kimpanel/src/kimpanelinputpanelgraphics.cpp
+++ b/applets/kimpanel/src/kimpanelinputpanelgraphics.cpp
@@ -21,6 +21,7 @@
 #include "kimpanelinputpanelgraphics.h"
 #include "kimpanellabelgraphics.h"
 #include "kimpanelsettings.h"
+#include "dummywidget.h"
 
 // KDE
 #include <KIconLoader>
@@ -40,6 +41,7 @@ KimpanelInputPanelGraphics::KimpanelInputPanelGraphics(QGraphicsItem* \
parent, Qt  m_preeditLabel(new KimpanelLabelGraphics(Preedit, this)),
     m_pageUpIcon(new Plasma::IconWidget(this)),
     m_pageDownIcon(new Plasma::IconWidget(this)),
+    m_dummyWidget(new DummyWidget(this)),
     m_tableEntryMapper(new QSignalMapper(this)),
     m_lastVisible(false),
     m_reverse(false),
@@ -59,9 +61,10 @@ KimpanelInputPanelGraphics::KimpanelInputPanelGraphics(QGraphicsItem* \
parent, Qt  
     m_upperLayout->setSpacing(0);
     m_upperLayout->setContentsMargins(0, 0, 0, 0);
-    m_upperLayout->setSizePolicy(QSizePolicy::Minimum, \
QSizePolicy::Minimum); +    \
m_upperLayout->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum); \
m_upperLayout->addItem(m_auxLabel);  \
m_upperLayout->addItem(m_preeditLabel); +    \
m_upperLayout->addItem(m_dummyWidget);  
     m_lowerLayout->setSpacing(0);
     m_lowerLayout->setContentsMargins(0, 0, 0, 0);
@@ -106,6 +109,8 @@ KimpanelInputPanelGraphics::KimpanelInputPanelGraphics(QGraphicsItem* \
                parent, Qt
     connect(m_pageUpIcon, SIGNAL(clicked()), this, \
                SIGNAL(lookupTablePageUp()));
     connect(m_pageDownIcon, SIGNAL(clicked()), this, \
                SIGNAL(lookupTablePageDown()));
     connect(KimpanelSettings::self(), SIGNAL(configChanged()), this, \
SLOT(loadSettings())); +    connect(m_preeditLabel, SIGNAL(sizeChanged()), \
this, SLOT(updateDummyWidget())); +    connect(m_auxLabel, \
SIGNAL(sizeChanged()), this, SLOT(updateDummyWidget()));  }
 
 KimpanelInputPanelGraphics::~KimpanelInputPanelGraphics()
@@ -292,6 +297,12 @@ void KimpanelInputPanelGraphics::updateVisible()
     }
 }
 
+void KimpanelInputPanelGraphics::updateDummyWidget()
+{
+    m_dummyWidget->setMinimumHeight(qMax(m_preeditLabel->minimumHeight(), \
m_auxLabel->minimumHeight())); +    \
m_dummyWidget->setMaximumHeight(qMax(m_preeditLabel->minimumHeight(), \
m_auxLabel->minimumHeight())); +}
+
 bool KimpanelInputPanelGraphics::markedVisible()
 {
     return m_lastVisible;
diff --git a/applets/kimpanel/src/kimpanelinputpanelgraphics.h \
b/applets/kimpanel/src/kimpanelinputpanelgraphics.h index c895645..7b4eebc \
                100644
--- a/applets/kimpanel/src/kimpanelinputpanelgraphics.h
+++ b/applets/kimpanel/src/kimpanelinputpanelgraphics.h
@@ -26,6 +26,7 @@
 #include <QGraphicsLinearLayout>
 #include <QSignalMapper>
 
+class DummyWidget;
 class KimpanelLabelGraphics;
 namespace Plasma
 {
@@ -76,6 +77,7 @@ protected:
 
 private slots:
     void loadSettings();
+    void updateDummyWidget();
 
 private:
     void clearLookupTable();
@@ -110,6 +112,7 @@ private:
     KimpanelLabelGraphics *m_preeditLabel;
     Plasma::IconWidget *m_pageUpIcon;
     Plasma::IconWidget *m_pageDownIcon;
+    DummyWidget* m_dummyWidget;
     QList<KimpanelLabelGraphics *> m_tableEntryLabels;
 
     QSignalMapper *m_tableEntryMapper;


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

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