Do not paint anything inheriting Widget and do not paint LineEdit when in desktop view. LineEdit is currently just a temporary solution, because it doesn't inherit Widget for some reason.

svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=695323
This commit is contained in:
Aaron Eisenberg 2007-08-01 20:51:27 +00:00
parent 8ccfa4e4dd
commit d40669a2d2
10 changed files with 52 additions and 11 deletions

View File

@ -81,7 +81,7 @@ QPen Label::pen() const
return d->textPen; return d->textPen;
} }
void Label::paint(QPainter *p, const QStyleOptionGraphicsItem *option, QWidget *widget) void Label::paintWidget(QPainter *p, const QStyleOptionGraphicsItem *option, QWidget *widget)
{ {
Q_UNUSED(option); Q_UNUSED(option);
Q_UNUSED(widget); Q_UNUSED(widget);

View File

@ -101,7 +101,7 @@ class PLASMA_EXPORT Label : public Plasma::Widget
/** /**
* Paint function. * Paint function.
*/ */
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); void paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
private: private:
class Private; class Private;

View File

@ -21,6 +21,8 @@
#include <QStyleOptionFrameV2> #include <QStyleOptionFrameV2>
#include <QTextDocument> #include <QTextDocument>
#include <QKeyEvent> #include <QKeyEvent>
#include <QPainter>
#include <KDebug> #include <KDebug>
namespace Plasma namespace Plasma
@ -39,8 +41,15 @@ class LineEdit::Private
bool styled; bool styled;
bool multiline; bool multiline;
bool shouldPaint(QPainter *painter, const QTransform &transform);
}; };
bool LineEdit::Private::shouldPaint(QPainter *painter, const QTransform &transform)
{
qreal zoomLevel = painter->transform().m11() / transform.m11();
return zoomLevel == scalingFactor(Plasma::DesktopZoom);
}
LineEdit::LineEdit(QGraphicsItem *parent, QGraphicsScene *scene) LineEdit::LineEdit(QGraphicsItem *parent, QGraphicsScene *scene)
: QGraphicsTextItem(parent, scene), : QGraphicsTextItem(parent, scene),
d(new Private()) d(new Private())
@ -56,6 +65,15 @@ LineEdit::~LineEdit()
} }
void LineEdit::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) void LineEdit::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
//TODO: Deal with paint and shouldPaint, since they are just copies of the ones in Widget
if (d->shouldPaint(painter, transform())) {
paintWidget(painter, option, widget);
}
return;
}
void LineEdit::paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{ {
QStyleOptionFrameV2 panel; QStyleOptionFrameV2 panel;
panel.initFrom(widget); panel.initFrom(widget);

View File

@ -43,6 +43,7 @@ class PLASMA_EXPORT LineEdit : public QGraphicsTextItem, public LayoutItem
~LineEdit(); ~LineEdit();
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
void paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
Qt::Orientations expandingDirections() const; Qt::Orientations expandingDirections() const;

View File

@ -81,7 +81,7 @@ void PushButton::updated(const QString&, const DataEngine::Data &data)
Q_UNUSED(data) Q_UNUSED(data)
} }
void PushButton::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) void PushButton::paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{ {
QStyleOptionButton options; QStyleOptionButton options;
options.initFrom(widget); options.initFrom(widget);

View File

@ -90,7 +90,7 @@ class PLASMA_EXPORT PushButton : public QObject,
/** /**
* Paint function. * Paint function.
*/ */
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual void paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
/** /**
* Reimplemented from Plasma::Widget. * Reimplemented from Plasma::Widget.

View File

@ -38,7 +38,7 @@ Qt::Orientations Rectangle::expandingDirections() const
return Qt::Horizontal | Qt::Vertical; return Qt::Horizontal | Qt::Vertical;
} }
void Rectangle::paint(QPainter *p, const QStyleOptionGraphicsItem *option, QWidget *widget) void Rectangle::paintWidget(QPainter *p, const QStyleOptionGraphicsItem *option, QWidget *widget)
{ {
Q_UNUSED(option); Q_UNUSED(option);
Q_UNUSED(widget); Q_UNUSED(widget);

View File

@ -31,7 +31,7 @@ class PLASMA_EXPORT Rectangle : public Plasma::Widget
Qt::Orientations expandingDirections() const; Qt::Orientations expandingDirections() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); void paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
private: private:
class Private; class Private;

View File

@ -23,8 +23,10 @@
#include <KDebug> #include <KDebug>
#include <QtCore/QList> #include <QtCore/QList>
#include <QPainter>
#include "layout.h" #include "layout.h"
#include "plasma/plasma.h"
namespace Plasma namespace Plasma
{ {
@ -43,8 +45,16 @@ class Widget::Private
Widget *parent; Widget *parent;
QList<Widget *> childList; QList<Widget *> childList;
bool shouldPaint(QPainter *painter, const QTransform &transform);
}; };
bool Widget::Private::shouldPaint(QPainter *painter, const QTransform &transform)
{
qreal zoomLevel = painter->transform().m11() / transform.m11();
return zoomLevel == scalingFactor(Plasma::DesktopZoom);
}
Widget::Widget(QGraphicsItem *parent) Widget::Widget(QGraphicsItem *parent)
: QGraphicsItem(parent), : QGraphicsItem(parent),
d(new Private) d(new Private)
@ -199,13 +209,20 @@ void Widget::addChild(Widget *w)
} }
void Widget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) void Widget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
if (d->shouldPaint(painter, transform())) {
paintWidget(painter, option, widget);
}
return;
}
void Widget::paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{ {
Q_UNUSED(painter); Q_UNUSED(painter);
Q_UNUSED(option); Q_UNUSED(option);
Q_UNUSED(widget); Q_UNUSED(widget);
// do nothing, but we need to reimp so we can create Widget items as this method // Replaced by widget's own function
// is pure virtual in QGraphicsItem
} }
void Widget::reparent(Widget *w) void Widget::reparent(Widget *w)

View File

@ -177,9 +177,14 @@ class PLASMA_EXPORT Widget : public QGraphicsItem,
void addChild(Widget *w); void addChild(Widget *w);
/** /**
* Paint function. Reimplement to draw on this Widget. * Paint function.
*/ */
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
/**
* Paints the widget. Called by the paint function under correct conditions.
*/
virtual void paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
private: private:
class Private; class Private;