Textures for buttons too. Necessary now that titlebar can be large
enough for you to see them. Oh yes, the titlebar now changes size with your font size. See http://www.geoid.clara.net/silly.jpg for a (silly) example of this. This is in fact an essential feature IMO, for people who can't read titlebar text at the restricted sizes that the other styles allow. New funky iconify animation, but I haven't made it available via a config key yet, so you can't use it :P svn path=/trunk/kdebase/kwin/; revision=69021
This commit is contained in:
parent
8f36a1cb5c
commit
abd2f3d6fd
6 changed files with 369 additions and 383 deletions
|
@ -34,8 +34,8 @@ Button::Button(QWidget * parent)
|
||||||
active_ (false)
|
active_ (false)
|
||||||
{
|
{
|
||||||
setBackgroundColor(Qt::black);
|
setBackgroundColor(Qt::black);
|
||||||
setFixedSize(19, 20);
|
|
||||||
connect(parent, SIGNAL(activeChanged(bool)), this, SLOT(setActive(bool)));
|
connect(parent, SIGNAL(activeChanged(bool)), this, SLOT(setActive(bool)));
|
||||||
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
Button::~Button()
|
Button::~Button()
|
||||||
|
@ -77,6 +77,15 @@ Button::mouseReleaseEvent(QMouseEvent *)
|
||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Button::update()
|
||||||
|
{
|
||||||
|
setFixedSize(
|
||||||
|
Static::instance()->titleHeight() - 1,
|
||||||
|
Static::instance()->titleHeight()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Button::setPixmap(const QPixmap & p)
|
Button::setPixmap(const QPixmap & p)
|
||||||
{
|
{
|
||||||
|
@ -128,10 +137,12 @@ Button::paintEvent(QPaintEvent *)
|
||||||
bitBlt(this, alignment_ == Left ? 1 : 0, 0,
|
bitBlt(this, alignment_ == Left ? 1 : 0, 0,
|
||||||
&Static::instance()->buttonBase(active_, down_));
|
&Static::instance()->buttonBase(active_, down_));
|
||||||
|
|
||||||
|
int i = width() / 2 - 6;
|
||||||
|
|
||||||
if (active_)
|
if (active_)
|
||||||
bitBlt(this, alignment_ == Left ? 4 : 3, 4, &aPixmap_);
|
bitBlt(this, alignment_ == Left ? i + 1 : i, i + 1, &aPixmap_);
|
||||||
else
|
else
|
||||||
bitBlt(this, alignment_ == Left ? 4 : 3, 4, &iPixmap_);
|
bitBlt(this, alignment_ == Left ? i + 1 : i, i + 1, &iPixmap_);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // End namespace
|
} // End namespace
|
||||||
|
|
|
@ -44,6 +44,8 @@ class Button : public QWidget
|
||||||
|
|
||||||
Alignment alignment() const;
|
Alignment alignment() const;
|
||||||
|
|
||||||
|
void update();
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
|
|
||||||
void setActive(bool);
|
void setActive(bool);
|
||||||
|
|
|
@ -22,11 +22,13 @@
|
||||||
|
|
||||||
#include <unistd.h> // for usleep
|
#include <unistd.h> // for usleep
|
||||||
#include <config.h> // for usleep on non-linux platforms
|
#include <config.h> // for usleep on non-linux platforms
|
||||||
|
#include <math.h> // for sin and cos
|
||||||
|
|
||||||
#include <qpainter.h>
|
#include <qpainter.h>
|
||||||
#include <qimage.h>
|
#include <qimage.h>
|
||||||
#include <qlayout.h>
|
#include <qlayout.h>
|
||||||
|
|
||||||
|
#include <kapp.h>
|
||||||
#include <netwm.h>
|
#include <netwm.h>
|
||||||
|
|
||||||
#include "../../options.h"
|
#include "../../options.h"
|
||||||
|
@ -106,8 +108,14 @@ Manager::Manager(
|
||||||
if (buttonDict_[*it])
|
if (buttonDict_[*it])
|
||||||
titleLayout->addWidget(buttonDict_[*it]);
|
titleLayout->addWidget(buttonDict_[*it]);
|
||||||
|
|
||||||
titleSpacer_ = new QSpacerItem(0, 20, QSizePolicy::Expanding,
|
titleSpacer_ =
|
||||||
QSizePolicy::Fixed);
|
new QSpacerItem(
|
||||||
|
0,
|
||||||
|
Static::instance()->titleHeight(),
|
||||||
|
QSizePolicy::Expanding,
|
||||||
|
QSizePolicy::Fixed
|
||||||
|
);
|
||||||
|
|
||||||
titleLayout->addItem(titleSpacer_);
|
titleLayout->addItem(titleSpacer_);
|
||||||
|
|
||||||
for (it = rightButtons.begin(); it != rightButtons.end(); ++it)
|
for (it = rightButtons.begin(); it != rightButtons.end(); ++it)
|
||||||
|
@ -120,7 +128,7 @@ Manager::Manager(
|
||||||
midLayout->addWidget(windowWrapper());
|
midLayout->addWidget(windowWrapper());
|
||||||
midLayout->addSpacing(1);
|
midLayout->addSpacing(1);
|
||||||
|
|
||||||
l->addSpacing(10);
|
l->addSpacing(Static::instance()->resizeHeight());
|
||||||
|
|
||||||
connect(options, SIGNAL(resetClients()), this, SLOT(slotReset()));
|
connect(options, SIGNAL(resetClients()), this, SLOT(slotReset()));
|
||||||
}
|
}
|
||||||
|
@ -157,36 +165,42 @@ Manager::paintEvent(QPaintEvent * e)
|
||||||
|
|
||||||
bool active = isActive();
|
bool active = isActive();
|
||||||
|
|
||||||
QRect tr = titleSpacer_->geometry();
|
|
||||||
|
|
||||||
// Title bar.
|
// Title bar.
|
||||||
p.drawPixmap(tr.left(), 0, s->titleTextLeft(active));
|
|
||||||
|
|
||||||
p.drawTiledPixmap(tr.left() + 3, 0, tr.width() - 6, 20, s->titleTextMid(active));
|
QRect tr = titleSpacer_->geometry();
|
||||||
p.setPen(options->color(Options::Font, active));
|
bitBlt(this, tr.topLeft(), &titleBuf_);
|
||||||
p.setFont(options->font(true)); // XXX false doesn't work right at the moment
|
|
||||||
p.drawText(tr.left() + 4, 0, tr.width() - 8, 18, AlignCenter, caption());
|
|
||||||
|
|
||||||
p.drawPixmap(tr.right() - 2, 0, s->titleTextRight(active));
|
|
||||||
|
|
||||||
// Resize bar.
|
// Resize bar.
|
||||||
|
|
||||||
int rbt = height() - 10; // Resize bar top.
|
int rbt = height() - Static::instance()->resizeHeight(); // Resize bar top.
|
||||||
|
|
||||||
p.drawPixmap(0, rbt, s->resize(active));
|
bitBlt(this, 0, rbt, &(s->resize(active)));
|
||||||
|
bitBlt(this, 30, rbt, &(s->resizeMidLeft(active)));
|
||||||
|
|
||||||
p.drawPixmap(30, rbt, s->resizeMidLeft(active));
|
p.drawTiledPixmap(
|
||||||
p.drawTiledPixmap(32, rbt, width() - 34, 10, s->resizeMidMid(active));
|
32,
|
||||||
p.drawPixmap(width() - 32, rbt, s->resizeMidRight(active));
|
rbt,
|
||||||
|
width() - 34,
|
||||||
|
Static::instance()->resizeHeight(),
|
||||||
|
s->resizeMidMid(active)
|
||||||
|
);
|
||||||
|
|
||||||
p.drawPixmap(width() - 30, rbt, s->resize(active));
|
bitBlt(this, width() - 32, rbt, &(s->resizeMidRight(active)));
|
||||||
|
bitBlt(this, width() - 30, rbt, &(s->resize(active)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Manager::resizeEvent(QResizeEvent * e)
|
Manager::resizeEvent(QResizeEvent * e)
|
||||||
{
|
{
|
||||||
Client::resizeEvent(e);
|
Client::resizeEvent(e);
|
||||||
|
updateButtonVisibility();
|
||||||
|
updateTitleBuffer();
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Manager::updateButtonVisibility()
|
||||||
|
{
|
||||||
int sizeProblem = 0;
|
int sizeProblem = 0;
|
||||||
|
|
||||||
if (width() < 80) sizeProblem = 3;
|
if (width() < 80) sizeProblem = 3;
|
||||||
|
@ -233,8 +247,44 @@ Manager::resizeEvent(QResizeEvent * e)
|
||||||
close_ ->show();
|
close_ ->show();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
repaint();
|
void
|
||||||
|
Manager::updateTitleBuffer()
|
||||||
|
{
|
||||||
|
bool active = isActive();
|
||||||
|
|
||||||
|
Static * s = Static::instance();
|
||||||
|
|
||||||
|
QRect tr = titleSpacer_->geometry();
|
||||||
|
|
||||||
|
titleBuf_.resize(tr.size());
|
||||||
|
|
||||||
|
QPainter p(&titleBuf_);
|
||||||
|
|
||||||
|
p.drawPixmap(0, 0, s->titleTextLeft(active));
|
||||||
|
|
||||||
|
p.drawTiledPixmap(
|
||||||
|
3,
|
||||||
|
0,
|
||||||
|
tr.width() - 6,
|
||||||
|
Static::instance()->titleHeight(),
|
||||||
|
s->titleTextMid(active)
|
||||||
|
);
|
||||||
|
|
||||||
|
p.setPen(options->color(Options::Font, active));
|
||||||
|
|
||||||
|
p.setFont(options->font(true)); // XXX false doesn't work right at the moment
|
||||||
|
|
||||||
|
p.drawText(
|
||||||
|
4,
|
||||||
|
2,
|
||||||
|
tr.width() - 8,
|
||||||
|
Static::instance()->titleHeight() - 4,
|
||||||
|
AlignCenter, caption()
|
||||||
|
);
|
||||||
|
|
||||||
|
p.drawPixmap(tr.width() - 3, 0, s->titleTextRight(active));
|
||||||
}
|
}
|
||||||
|
|
||||||
Client::MousePosition
|
Client::MousePosition
|
||||||
|
@ -242,7 +292,7 @@ Manager::mousePosition(const QPoint & p) const
|
||||||
{
|
{
|
||||||
MousePosition m = Center;
|
MousePosition m = Center;
|
||||||
|
|
||||||
if (p.y() > (height() - 10)) {
|
if (p.y() > (height() - Static::instance()->resizeHeight())) {
|
||||||
// Keep order !
|
// Keep order !
|
||||||
if (p.x() >= (width() - 30))
|
if (p.x() >= (width() - 30))
|
||||||
m = BottomRight;
|
m = BottomRight;
|
||||||
|
@ -267,6 +317,8 @@ Manager::mouseDoubleClickEvent(QMouseEvent * e)
|
||||||
void
|
void
|
||||||
Manager::slotReset()
|
Manager::slotReset()
|
||||||
{
|
{
|
||||||
|
for (QDictIterator<Button> it(buttonDict_); it.current(); ++it)
|
||||||
|
it.current()->update();
|
||||||
Static::instance()->update();
|
Static::instance()->update();
|
||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
|
@ -274,20 +326,21 @@ Manager::slotReset()
|
||||||
void
|
void
|
||||||
Manager::captionChange(const QString &)
|
Manager::captionChange(const QString &)
|
||||||
{
|
{
|
||||||
|
updateTitleBuffer();
|
||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Manager::paletteChange(const QPalette &)
|
Manager::paletteChange(const QPalette &)
|
||||||
{
|
{
|
||||||
Static::instance()->update();
|
slotReset();
|
||||||
repaint();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Manager::activeChange(bool b)
|
Manager::activeChange(bool b)
|
||||||
{
|
{
|
||||||
emit(activeChanged(b));
|
emit(activeChanged(b));
|
||||||
|
updateTitleBuffer();
|
||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -336,43 +389,146 @@ Manager::slotHelp()
|
||||||
void
|
void
|
||||||
Manager::animateIconifyOrDeiconify(bool iconify)
|
Manager::animateIconifyOrDeiconify(bool iconify)
|
||||||
{
|
{
|
||||||
NETRect r = netWinInfo()->iconGeometry();
|
animate(iconify, Static::instance()->animationStyle());
|
||||||
|
}
|
||||||
|
|
||||||
QRect icongeom(r.pos.x, r.pos.y, r.size.width, r.size.height);
|
void Manager::animate(bool iconify, int style)
|
||||||
|
{
|
||||||
|
switch (style) {
|
||||||
|
|
||||||
if (!icongeom.isValid())
|
case 1:
|
||||||
return;
|
{
|
||||||
|
// Double twisting double back, with pike ;)
|
||||||
|
|
||||||
QRect wingeom(x(), y(), width(), height());
|
if (!iconify) // No animation for restore.
|
||||||
|
return;
|
||||||
|
|
||||||
XGrabServer(qt_xdisplay());
|
// Go away quick.
|
||||||
|
hide();
|
||||||
|
qApp->syncX();
|
||||||
|
|
||||||
QPainter p(workspace()->desktopWidget());
|
NETRect r = netWinInfo()->iconGeometry();
|
||||||
|
|
||||||
p.setRasterOp(Qt::NotROP);
|
if (!QRect(r.pos.x, r.pos.y, r.size.width, r.size.height).isValid())
|
||||||
|
return;
|
||||||
|
|
||||||
if (iconify)
|
// Algorithm taken from Window Maker (http://www.windowmaker.org)
|
||||||
p.setClipRegion(QRegion(workspace()->desktopWidget()->rect()) - wingeom);
|
|
||||||
|
|
||||||
p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
|
int sx = x();
|
||||||
p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
|
int sy = y();
|
||||||
p.drawLine(wingeom.topLeft(), icongeom.topLeft());
|
int sw = width();
|
||||||
p.drawLine(wingeom.topRight(), icongeom.topRight());
|
int sh = height();
|
||||||
|
int dx = r.pos.x;
|
||||||
|
int dy = r.pos.y;
|
||||||
|
int dw = r.size.width;
|
||||||
|
int dh = r.size.height;
|
||||||
|
|
||||||
p.flush();
|
double steps = 12;
|
||||||
|
|
||||||
XSync( qt_xdisplay(), FALSE );
|
double xstep = double((dx-sx)/steps);
|
||||||
|
double ystep = double((dy-sy)/steps);
|
||||||
|
double wstep = double((dw-sw)/steps);
|
||||||
|
double hstep = double((dh-sh)/steps);
|
||||||
|
|
||||||
usleep(30000);
|
double cx = sx;
|
||||||
|
double cy = sy;
|
||||||
|
double cw = sw;
|
||||||
|
double ch = sh;
|
||||||
|
|
||||||
p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
|
double finalAngle = 3.14159265358979323846;
|
||||||
p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
|
|
||||||
p.drawLine(wingeom.topLeft(), icongeom.topLeft());
|
|
||||||
p.drawLine(wingeom.topRight(), icongeom.topRight());
|
|
||||||
|
|
||||||
p.end();
|
double delta = finalAngle / steps;
|
||||||
|
|
||||||
XUngrabServer( qt_xdisplay() );
|
QPainter p(workspace()->desktopWidget());
|
||||||
|
p.setRasterOp(Qt::NotROP);
|
||||||
|
|
||||||
|
for (double angle = 0; ; angle += delta) {
|
||||||
|
|
||||||
|
if (angle > finalAngle)
|
||||||
|
angle = finalAngle;
|
||||||
|
|
||||||
|
double dx = (cw / 10) - ((cw / 5) * sin(angle));
|
||||||
|
double dch = (ch / 2) * cos(angle);
|
||||||
|
double midy = cy + (ch / 2);
|
||||||
|
|
||||||
|
QPoint p1(cx + dx, midy - dch);
|
||||||
|
QPoint p2(cx + cw - dx, p1.y());
|
||||||
|
QPoint p3(cx + dw + dx, midy + dch);
|
||||||
|
QPoint p4(cx - dx, p3.y());
|
||||||
|
|
||||||
|
XGrabServer(qt_xdisplay());
|
||||||
|
|
||||||
|
p.drawLine(p1, p2);
|
||||||
|
p.drawLine(p2, p3);
|
||||||
|
p.drawLine(p3, p4);
|
||||||
|
p.drawLine(p4, p1);
|
||||||
|
|
||||||
|
p.flush();
|
||||||
|
|
||||||
|
usleep(500);
|
||||||
|
|
||||||
|
p.drawLine(p1, p2);
|
||||||
|
p.drawLine(p2, p3);
|
||||||
|
p.drawLine(p3, p4);
|
||||||
|
p.drawLine(p4, p1);
|
||||||
|
|
||||||
|
XUngrabServer(qt_xdisplay());
|
||||||
|
|
||||||
|
kapp->processEvents();
|
||||||
|
|
||||||
|
cx += xstep;
|
||||||
|
cy += ystep;
|
||||||
|
cw += wstep;
|
||||||
|
ch += hstep;
|
||||||
|
|
||||||
|
if (angle >= finalAngle)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
NETRect r = netWinInfo()->iconGeometry();
|
||||||
|
|
||||||
|
QRect icongeom(r.pos.x, r.pos.y, r.size.width, r.size.height);
|
||||||
|
|
||||||
|
if (!icongeom.isValid())
|
||||||
|
return;
|
||||||
|
|
||||||
|
QRect wingeom(x(), y(), width(), height());
|
||||||
|
|
||||||
|
QPainter p(workspace()->desktopWidget());
|
||||||
|
|
||||||
|
p.setRasterOp(Qt::NotROP);
|
||||||
|
|
||||||
|
if (iconify)
|
||||||
|
p.setClipRegion(
|
||||||
|
QRegion(workspace()->desktopWidget()->rect()) - wingeom
|
||||||
|
);
|
||||||
|
|
||||||
|
XGrabServer(qt_xdisplay());
|
||||||
|
|
||||||
|
p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
|
||||||
|
p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
|
||||||
|
p.drawLine(wingeom.topLeft(), icongeom.topLeft());
|
||||||
|
p.drawLine(wingeom.topRight(), icongeom.topRight());
|
||||||
|
|
||||||
|
p.flush();
|
||||||
|
|
||||||
|
qApp->syncX();
|
||||||
|
|
||||||
|
usleep(30000);
|
||||||
|
|
||||||
|
p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
|
||||||
|
p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
|
||||||
|
p.drawLine(wingeom.topLeft(), icongeom.topLeft());
|
||||||
|
p.drawLine(wingeom.topRight(), icongeom.topRight());
|
||||||
|
|
||||||
|
XUngrabServer(qt_xdisplay());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -382,231 +538,14 @@ ToolManager::ToolManager(
|
||||||
QWidget * parent,
|
QWidget * parent,
|
||||||
const char * name
|
const char * name
|
||||||
)
|
)
|
||||||
: Client(workSpace, id, parent, name)
|
: Manager(workSpace, id, parent, name)
|
||||||
{
|
{
|
||||||
setBackgroundMode(NoBackground);
|
|
||||||
|
|
||||||
QStringList leftButtons = Static::instance()->leftButtons();
|
|
||||||
QStringList rightButtons = Static::instance()->rightButtons();
|
|
||||||
|
|
||||||
QVBoxLayout * l = new QVBoxLayout(this, 0, 0);
|
|
||||||
|
|
||||||
close_ = new CloseButton (this);
|
|
||||||
help_ = new HelpButton (this);
|
|
||||||
|
|
||||||
buttonDict_.insert("Close", close_);
|
|
||||||
buttonDict_.insert("Help", help_);
|
|
||||||
|
|
||||||
if (!providesContextHelp())
|
|
||||||
help_->hide();
|
|
||||||
|
|
||||||
QStringList::ConstIterator it;
|
|
||||||
|
|
||||||
for (it = leftButtons.begin(); it != leftButtons.end(); ++it)
|
|
||||||
if (buttonDict_[*it])
|
|
||||||
buttonDict_[*it]->setAlignment(Button::Left);
|
|
||||||
|
|
||||||
for (it = rightButtons.begin(); it != rightButtons.end(); ++it)
|
|
||||||
if (buttonDict_[*it])
|
|
||||||
buttonDict_[*it]->setAlignment(Button::Left);
|
|
||||||
|
|
||||||
QHBoxLayout * titleLayout = new QHBoxLayout(l);
|
|
||||||
|
|
||||||
for (it = leftButtons.begin(); it != leftButtons.end(); ++it)
|
|
||||||
if (buttonDict_[*it])
|
|
||||||
titleLayout->addWidget(buttonDict_[*it]);
|
|
||||||
|
|
||||||
titleSpacer_ = new QSpacerItem(0, 20);
|
|
||||||
titleLayout->addItem(titleSpacer_);
|
|
||||||
|
|
||||||
for (it = rightButtons.begin(); it != rightButtons.end(); ++it)
|
|
||||||
if (buttonDict_[*it])
|
|
||||||
titleLayout->addWidget(buttonDict_[*it]);
|
|
||||||
|
|
||||||
QHBoxLayout * midLayout = new QHBoxLayout(l);
|
|
||||||
midLayout->addSpacing(1);
|
|
||||||
midLayout->addWidget(windowWrapper());
|
|
||||||
midLayout->addSpacing(1);
|
|
||||||
|
|
||||||
l->addSpacing(10);
|
|
||||||
|
|
||||||
connect(options, SIGNAL(resetClients()), this, SLOT(slotReset()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolManager::~ToolManager()
|
ToolManager::~ToolManager()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
ToolManager::paintEvent(QPaintEvent * e)
|
|
||||||
{
|
|
||||||
QPainter p(this);
|
|
||||||
|
|
||||||
QRect r(e->rect());
|
|
||||||
|
|
||||||
bool intersectsLeft =
|
|
||||||
r.intersects(QRect(0, 0, 1, height()));
|
|
||||||
|
|
||||||
bool intersectsRight =
|
|
||||||
r.intersects(QRect(width() - 1, 0, width(), height()));
|
|
||||||
|
|
||||||
if (intersectsLeft || intersectsRight) {
|
|
||||||
|
|
||||||
p.setPen(Qt::black);
|
|
||||||
|
|
||||||
if (intersectsLeft)
|
|
||||||
p.drawLine(0, r.top(), 0, r.bottom());
|
|
||||||
|
|
||||||
if (intersectsRight)
|
|
||||||
p.drawLine(width() - 1, r.top(), width() - 1, r.bottom());
|
|
||||||
}
|
|
||||||
|
|
||||||
Static * s = Static::instance();
|
|
||||||
|
|
||||||
bool active = isActive();
|
|
||||||
|
|
||||||
QRect tr = titleSpacer_->geometry();
|
|
||||||
|
|
||||||
// Title bar.
|
|
||||||
p.drawPixmap(tr.left(), 0, s->titleTextLeft(active));
|
|
||||||
|
|
||||||
p.drawTiledPixmap(tr.left() + 3, 0, tr.width() - 6, 20, s->titleTextMid(active));
|
|
||||||
p.setPen(options->color(Options::Font, active));
|
|
||||||
p.setFont(options->font(active));
|
|
||||||
p.drawText(tr.left() + 4, 0, tr.width() - 8, 18, AlignCenter, caption());
|
|
||||||
|
|
||||||
p.drawPixmap(tr.right() - 2, 0, s->titleTextRight(active));
|
|
||||||
|
|
||||||
// Resize bar.
|
|
||||||
|
|
||||||
int rbt = height() - 10; // Resize bar top.
|
|
||||||
|
|
||||||
p.drawPixmap(0, rbt, s->resize(active));
|
|
||||||
|
|
||||||
p.drawPixmap(30, rbt, s->resizeMidLeft(active));
|
|
||||||
p.drawTiledPixmap(32, rbt, width() - 34, 10, s->resizeMidMid(active));
|
|
||||||
p.drawPixmap(width() - 32, rbt, s->resizeMidRight(active));
|
|
||||||
|
|
||||||
p.drawPixmap(width() - 30, rbt, s->resize(active));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ToolManager::resizeEvent(QResizeEvent *)
|
|
||||||
{
|
|
||||||
if (width() < 80) {
|
|
||||||
help_ ->hide();
|
|
||||||
close_ ->hide();
|
|
||||||
} else {
|
|
||||||
if (providesContextHelp())
|
|
||||||
help_ ->show();
|
|
||||||
close_ ->show();
|
|
||||||
}
|
|
||||||
|
|
||||||
repaint();
|
|
||||||
}
|
|
||||||
|
|
||||||
Client::MousePosition
|
|
||||||
ToolManager::mousePosition(const QPoint & p) const
|
|
||||||
{
|
|
||||||
MousePosition m = Center;
|
|
||||||
|
|
||||||
if (p.y() > (height() - 10)) {
|
|
||||||
// Keep order !
|
|
||||||
if (p.x() >= (width() - 30))
|
|
||||||
m = BottomRight;
|
|
||||||
else if (p.x() <= 30)
|
|
||||||
m = BottomLeft;
|
|
||||||
else
|
|
||||||
m = Bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
return m;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ToolManager::mouseDoubleClickEvent(QMouseEvent * e)
|
|
||||||
{
|
|
||||||
if (titleSpacer_->geometry().contains(e->pos()))
|
|
||||||
workspace()
|
|
||||||
->performWindowOperation(this, options->operationTitlebarDblClick());
|
|
||||||
workspace()->requestFocus(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ToolManager::slotReset()
|
|
||||||
{
|
|
||||||
Static::instance()->update();
|
|
||||||
repaint();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ToolManager::captionChange(const QString &)
|
|
||||||
{
|
|
||||||
repaint();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ToolManager::paletteChange(const QPalette &)
|
|
||||||
{
|
|
||||||
Static::instance()->update();
|
|
||||||
repaint();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ToolManager::activeChange(bool b)
|
|
||||||
{
|
|
||||||
emit(activeChanged(b));
|
|
||||||
repaint();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ToolManager::slotHelp()
|
|
||||||
{
|
|
||||||
contextHelp();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ToolManager::animateIconifyOrDeiconify(bool iconify)
|
|
||||||
{
|
|
||||||
NETRect r = netWinInfo()->iconGeometry();
|
|
||||||
|
|
||||||
QRect icongeom(r.pos.x, r.pos.y, r.size.width, r.size.height);
|
|
||||||
|
|
||||||
if (!icongeom.isValid())
|
|
||||||
return;
|
|
||||||
|
|
||||||
QRect wingeom(x(), y(), width(), height());
|
|
||||||
|
|
||||||
XGrabServer(qt_xdisplay());
|
|
||||||
|
|
||||||
QPainter p(workspace()->desktopWidget());
|
|
||||||
|
|
||||||
p.setRasterOp(Qt::NotROP);
|
|
||||||
|
|
||||||
if (iconify)
|
|
||||||
p.setClipRegion(QRegion(workspace()->desktopWidget()->rect()) - wingeom);
|
|
||||||
|
|
||||||
p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
|
|
||||||
p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
|
|
||||||
p.drawLine(wingeom.topLeft(), icongeom.topLeft());
|
|
||||||
p.drawLine(wingeom.topRight(), icongeom.topRight());
|
|
||||||
|
|
||||||
p.flush();
|
|
||||||
|
|
||||||
XSync( qt_xdisplay(), FALSE );
|
|
||||||
|
|
||||||
usleep(30000);
|
|
||||||
|
|
||||||
p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
|
|
||||||
p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
|
|
||||||
p.drawLine(wingeom.topLeft(), icongeom.topLeft());
|
|
||||||
p.drawLine(wingeom.topRight(), icongeom.topRight());
|
|
||||||
|
|
||||||
p.end();
|
|
||||||
|
|
||||||
XUngrabServer( qt_xdisplay() );
|
|
||||||
}
|
|
||||||
|
|
||||||
} // End namespace
|
} // End namespace
|
||||||
|
|
||||||
// vim:ts=2:sw=2:tw=78
|
// vim:ts=2:sw=2:tw=78
|
||||||
|
|
|
@ -74,6 +74,9 @@ class Manager : public Client
|
||||||
void resizeEvent(QResizeEvent *);
|
void resizeEvent(QResizeEvent *);
|
||||||
void mouseDoubleClickEvent(QMouseEvent *);
|
void mouseDoubleClickEvent(QMouseEvent *);
|
||||||
void animateIconifyOrDeiconify(bool);
|
void animateIconifyOrDeiconify(bool);
|
||||||
|
void animate(bool, int);
|
||||||
|
void updateButtonVisibility();
|
||||||
|
void updateTitleBuffer();
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
|
|
||||||
|
@ -92,9 +95,11 @@ class Manager : public Client
|
||||||
QSpacerItem * titleSpacer_;
|
QSpacerItem * titleSpacer_;
|
||||||
|
|
||||||
QDict<Button> buttonDict_;
|
QDict<Button> buttonDict_;
|
||||||
|
|
||||||
|
QPixmap titleBuf_;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ToolManager : public Client
|
class ToolManager : public Manager
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
@ -102,38 +107,6 @@ class ToolManager : public Client
|
||||||
|
|
||||||
ToolManager(Workspace *, WId, QWidget * parent = 0, const char * name = 0);
|
ToolManager(Workspace *, WId, QWidget * parent = 0, const char * name = 0);
|
||||||
~ToolManager();
|
~ToolManager();
|
||||||
|
|
||||||
signals:
|
|
||||||
|
|
||||||
void activeChanged(bool);
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
|
|
||||||
void slotHelp();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
Client::MousePosition mousePosition(const QPoint &) const;
|
|
||||||
void paletteChange(const QPalette &);
|
|
||||||
void activeChange(bool);
|
|
||||||
void paintEvent(QPaintEvent *);
|
|
||||||
void resizeEvent(QResizeEvent *);
|
|
||||||
void mouseDoubleClickEvent(QMouseEvent *);
|
|
||||||
void animateIconifyOrDeiconify(bool);
|
|
||||||
|
|
||||||
protected slots:
|
|
||||||
|
|
||||||
void captionChange(const QString &);
|
|
||||||
void slotReset();
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
CloseButton * close_;
|
|
||||||
HelpButton * help_;
|
|
||||||
|
|
||||||
QSpacerItem * titleSpacer_;
|
|
||||||
|
|
||||||
QDict<Button> buttonDict_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -57,12 +57,6 @@ static const char * const texture_xpm[] = {
|
||||||
" a a aab b b aa aab a b ",
|
" a a aab b b aa aab a b ",
|
||||||
" b a b b aaa a b bb b b b b"};
|
" b a b b aaa a b bb b b b b"};
|
||||||
|
|
||||||
void
|
|
||||||
Static::_drawButtonBorder(QPixmap & pix)
|
|
||||||
{
|
|
||||||
_drawBorder(pix, 17, 17);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Static::_drawBorder(QPixmap & pix, int w, int h)
|
Static::_drawBorder(QPixmap & pix, int w, int h)
|
||||||
{
|
{
|
||||||
|
@ -149,46 +143,10 @@ Static * Static::instance_ = 0L;
|
||||||
void
|
void
|
||||||
Static::_init()
|
Static::_init()
|
||||||
{
|
{
|
||||||
aResize_ .resize(30, 10);
|
animationStyle_ = 0;
|
||||||
iResize_ .resize(30, 10);
|
|
||||||
aTitleTextLeft_ .resize(3, 20);
|
|
||||||
aTitleTextRight_ .resize(3, 20);
|
|
||||||
iTitleTextLeft_ .resize(3, 20);
|
|
||||||
iTitleTextRight_ .resize(3, 20);
|
|
||||||
aTitleTextMid_ .resize(64, 20);
|
|
||||||
iTitleTextMid_ .resize(64, 20);
|
|
||||||
aResizeMidLeft_ .resize(3, 12);
|
|
||||||
aResizeMidRight_ .resize(3, 12);
|
|
||||||
iResizeMidLeft_ .resize(3, 12);
|
|
||||||
iResizeMidRight_ .resize(3, 12);
|
|
||||||
aResizeMid_ .resize(64, 10);
|
|
||||||
iResizeMid_ .resize(64, 10);
|
|
||||||
aButtonUp_ .resize(19, 19);
|
|
||||||
iButtonUp_ .resize(19, 19);
|
|
||||||
aButtonDown_ .resize(19, 19);
|
|
||||||
iButtonDown_ .resize(19, 19);
|
|
||||||
|
|
||||||
aResize_ .fill(Qt::black);
|
aButtonUp_ .setOptimization(QPixmap::BestOptim);
|
||||||
iResize_ .fill(Qt::black);
|
aButtonDown_ .setOptimization(QPixmap::BestOptim);
|
||||||
aTitleTextLeft_ .fill(Qt::black);
|
|
||||||
aTitleTextRight_ .fill(Qt::black);
|
|
||||||
iTitleTextLeft_ .fill(Qt::black);
|
|
||||||
iTitleTextRight_ .fill(Qt::black);
|
|
||||||
aTitleTextMid_ .fill(Qt::black);
|
|
||||||
iTitleTextMid_ .fill(Qt::black);
|
|
||||||
aResizeMidLeft_ .fill(Qt::black);
|
|
||||||
aResizeMidRight_ .fill(Qt::black);
|
|
||||||
iResizeMidLeft_ .fill(Qt::black);
|
|
||||||
iResizeMidRight_ .fill(Qt::black);
|
|
||||||
aResizeMid_ .fill(Qt::black);
|
|
||||||
iResizeMid_ .fill(Qt::black);
|
|
||||||
aButtonUp_ .fill(Qt::black);
|
|
||||||
iButtonUp_ .fill(Qt::black);
|
|
||||||
aButtonDown_ .fill(Qt::black);
|
|
||||||
iButtonDown_ .fill(Qt::black);
|
|
||||||
|
|
||||||
aButtonUp_ .setOptimization(QPixmap::MemoryOptim);
|
|
||||||
aButtonDown_ .setOptimization(QPixmap::MemoryOptim);
|
|
||||||
|
|
||||||
iButtonUp_ .setOptimization(QPixmap::MemoryOptim);
|
iButtonUp_ .setOptimization(QPixmap::MemoryOptim);
|
||||||
iButtonDown_ .setOptimization(QPixmap::MemoryOptim);
|
iButtonDown_ .setOptimization(QPixmap::MemoryOptim);
|
||||||
|
@ -218,6 +176,61 @@ Static::_init()
|
||||||
void
|
void
|
||||||
Static::update()
|
Static::update()
|
||||||
{
|
{
|
||||||
|
QFont f(options->font(true)); // XXX false doesn't work right at the moment
|
||||||
|
|
||||||
|
QFontMetrics fm(f);
|
||||||
|
|
||||||
|
int h = fm.height();
|
||||||
|
|
||||||
|
titleHeight_ = h + 6;
|
||||||
|
|
||||||
|
if (titleHeight_ < 20)
|
||||||
|
titleHeight_ = 20;
|
||||||
|
|
||||||
|
int buttonSize = titleHeight_ - 1;
|
||||||
|
|
||||||
|
resizeHeight_ = 10;
|
||||||
|
|
||||||
|
// Sizes.
|
||||||
|
|
||||||
|
aResize_ .resize(30, resizeHeight_);
|
||||||
|
iResize_ .resize(30, resizeHeight_);
|
||||||
|
aTitleTextLeft_ .resize(3, titleHeight_);
|
||||||
|
aTitleTextRight_ .resize(3, titleHeight_);
|
||||||
|
iTitleTextLeft_ .resize(3, titleHeight_);
|
||||||
|
iTitleTextRight_ .resize(3, titleHeight_);
|
||||||
|
aTitleTextMid_ .resize(64, titleHeight_);
|
||||||
|
iTitleTextMid_ .resize(64, titleHeight_);
|
||||||
|
aResizeMidLeft_ .resize(3, resizeHeight_);
|
||||||
|
aResizeMidRight_ .resize(3, resizeHeight_);
|
||||||
|
iResizeMidLeft_ .resize(3, resizeHeight_);
|
||||||
|
iResizeMidRight_ .resize(3, resizeHeight_);
|
||||||
|
aResizeMid_ .resize(64, resizeHeight_);
|
||||||
|
iResizeMid_ .resize(64, resizeHeight_);
|
||||||
|
aButtonUp_ .resize(buttonSize, buttonSize);
|
||||||
|
iButtonUp_ .resize(buttonSize, buttonSize);
|
||||||
|
aButtonDown_ .resize(buttonSize, buttonSize);
|
||||||
|
iButtonDown_ .resize(buttonSize, buttonSize);
|
||||||
|
|
||||||
|
aResize_ .fill(Qt::black);
|
||||||
|
iResize_ .fill(Qt::black);
|
||||||
|
aTitleTextLeft_ .fill(Qt::black);
|
||||||
|
aTitleTextRight_ .fill(Qt::black);
|
||||||
|
iTitleTextLeft_ .fill(Qt::black);
|
||||||
|
iTitleTextRight_ .fill(Qt::black);
|
||||||
|
aTitleTextMid_ .fill(Qt::black);
|
||||||
|
iTitleTextMid_ .fill(Qt::black);
|
||||||
|
aResizeMidLeft_ .fill(Qt::black);
|
||||||
|
aResizeMidRight_ .fill(Qt::black);
|
||||||
|
iResizeMidLeft_ .fill(Qt::black);
|
||||||
|
iResizeMidRight_ .fill(Qt::black);
|
||||||
|
aResizeMid_ .fill(Qt::black);
|
||||||
|
iResizeMid_ .fill(Qt::black);
|
||||||
|
aButtonUp_ .fill(Qt::black);
|
||||||
|
iButtonUp_ .fill(Qt::black);
|
||||||
|
aButtonDown_ .fill(Qt::black);
|
||||||
|
iButtonDown_ .fill(Qt::black);
|
||||||
|
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
// Palettes
|
// Palettes
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
|
@ -239,6 +252,10 @@ Static::update()
|
||||||
setPalette(aResizePal_, options->color(Options::TitleBar, true));
|
setPalette(aResizePal_, options->color(Options::TitleBar, true));
|
||||||
setPalette(iResizePal_, options->color(Options::TitleBar, false));
|
setPalette(iResizePal_, options->color(Options::TitleBar, false));
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
// Convert colours in texture to match colour scheme.
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
QRgb light, dark;
|
QRgb light, dark;
|
||||||
QRgb * data;
|
QRgb * data;
|
||||||
QRgb w = qRgb(255,255,255);
|
QRgb w = qRgb(255,255,255);
|
||||||
|
@ -276,19 +293,18 @@ Static::update()
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
// Bevels
|
// Title text area sides
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
QPixmap temp(4, titleHeight_);
|
||||||
|
|
||||||
transx = transy = 0.0;
|
transx = transy = 0.0;
|
||||||
|
|
||||||
// Create sides of title text area and resize bar middle.
|
|
||||||
|
|
||||||
QPixmap temp(4, 20);
|
|
||||||
temp.fill(Qt::black);
|
temp.fill(Qt::black);
|
||||||
palette_ = aTitlePal_;
|
palette_ = aTitlePal_;
|
||||||
down_ = false;
|
down_ = false;
|
||||||
|
|
||||||
_drawBorder(temp, 4, 18);
|
_drawBorder(temp, 4, titleHeight_ - 2);
|
||||||
|
|
||||||
painter_.begin(&aTitleTextLeft_);
|
painter_.begin(&aTitleTextLeft_);
|
||||||
painter_.drawPixmap(1, 1, temp, 0, 1);
|
painter_.drawPixmap(1, 1, temp, 0, 1);
|
||||||
|
@ -299,7 +315,7 @@ Static::update()
|
||||||
painter_.end();
|
painter_.end();
|
||||||
|
|
||||||
palette_ = iTitlePal_;
|
palette_ = iTitlePal_;
|
||||||
_drawBorder(temp, 4, 18);
|
_drawBorder(temp, 4, titleHeight_ - 2);
|
||||||
|
|
||||||
painter_.begin(&iTitleTextLeft_);
|
painter_.begin(&iTitleTextLeft_);
|
||||||
painter_.drawPixmap(1, 1, temp, 0, 1);
|
painter_.drawPixmap(1, 1, temp, 0, 1);
|
||||||
|
@ -309,12 +325,18 @@ Static::update()
|
||||||
painter_.drawPixmap(0, 1, temp, 2, 1);
|
painter_.drawPixmap(0, 1, temp, 2, 1);
|
||||||
painter_.end();
|
painter_.end();
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------
|
||||||
|
// Resize central area sides.
|
||||||
|
// -------------------------------------------------------------------------
|
||||||
|
|
||||||
transy = 1.0;
|
transy = 1.0;
|
||||||
|
|
||||||
palette_ = aResizePal_;
|
palette_ = aResizePal_;
|
||||||
temp.resize(4, 10);
|
temp.resize(4, resizeHeight_);
|
||||||
temp.fill(Qt::black);
|
temp.fill(Qt::black);
|
||||||
_drawBorder(temp, 4, 7);
|
|
||||||
|
_drawBorder(temp, 4, resizeHeight_ - 3);
|
||||||
|
|
||||||
painter_.begin(&aResizeMidLeft_);
|
painter_.begin(&aResizeMidLeft_);
|
||||||
painter_.drawPixmap(0, 1, temp, 0, 1);
|
painter_.drawPixmap(0, 1, temp, 0, 1);
|
||||||
|
@ -325,7 +347,7 @@ Static::update()
|
||||||
painter_.end();
|
painter_.end();
|
||||||
|
|
||||||
palette_ = iResizePal_;
|
palette_ = iResizePal_;
|
||||||
_drawBorder(temp, 4, 7);
|
_drawBorder(temp, 4, resizeHeight_ - 3);
|
||||||
|
|
||||||
painter_.begin(&iResizeMidLeft_);
|
painter_.begin(&iResizeMidLeft_);
|
||||||
painter_.drawPixmap(0, 1, temp, 0, 1);
|
painter_.drawPixmap(0, 1, temp, 0, 1);
|
||||||
|
@ -335,41 +357,48 @@ Static::update()
|
||||||
painter_.drawPixmap(0, 1, temp, 2, 1);
|
painter_.drawPixmap(0, 1, temp, 2, 1);
|
||||||
painter_.end();
|
painter_.end();
|
||||||
|
|
||||||
transx = transy = 0.0;
|
|
||||||
|
|
||||||
temp.resize(70, 20);
|
// -------------------------------------------------------------------------
|
||||||
|
// Title text area background
|
||||||
|
// -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
transx = transy = 0.0;
|
||||||
|
temp.resize(70, titleHeight_);
|
||||||
temp.fill(Qt::black);
|
temp.fill(Qt::black);
|
||||||
|
|
||||||
palette_ = aTitlePal_;
|
palette_ = aTitlePal_;
|
||||||
_drawBorder(temp, 70, 17);
|
_drawBorder(temp, 70, titleHeight_ - 3);
|
||||||
|
|
||||||
painter_.begin(&aTitleTextMid_);
|
painter_.begin(&aTitleTextMid_);
|
||||||
painter_.drawPixmap(0, 1, temp, 2, 0);
|
painter_.drawPixmap(0, 1, temp, 2, 0);
|
||||||
if (hicolour)
|
if (hicolour)
|
||||||
painter_.drawPixmap(0, 4, aTexture);
|
painter_.drawTiledPixmap(0, 4, 64, titleHeight_ - 8, aTexture);
|
||||||
painter_.end();
|
painter_.end();
|
||||||
|
|
||||||
palette_ = iTitlePal_;
|
palette_ = iTitlePal_;
|
||||||
_drawBorder(temp, 70, 17);
|
_drawBorder(temp, 70, titleHeight_ - 3);
|
||||||
|
|
||||||
painter_.begin(&iTitleTextMid_);
|
painter_.begin(&iTitleTextMid_);
|
||||||
painter_.drawPixmap(0, 1, temp, 2, 0);
|
painter_.drawPixmap(0, 1, temp, 2, 0);
|
||||||
if (hicolour)
|
if (hicolour)
|
||||||
painter_.drawPixmap(0, 4, iTexture);
|
painter_.drawTiledPixmap(0, 4, 64, titleHeight_ - 8, iTexture);
|
||||||
painter_.end();
|
painter_.end();
|
||||||
|
|
||||||
transy = 1.0;
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------
|
||||||
|
// Resize central area background
|
||||||
|
// -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
transy = 1.0;
|
||||||
temp.fill(Qt::black);
|
temp.fill(Qt::black);
|
||||||
|
|
||||||
palette_ = aResizePal_;
|
palette_ = aResizePal_;
|
||||||
_drawBorder(temp, 70, 7);
|
_drawBorder(temp, 70, resizeHeight_ - 3);
|
||||||
|
|
||||||
painter_.begin(&aResizeMid_);
|
painter_.begin(&aResizeMid_);
|
||||||
painter_.drawPixmap(0, 0, temp, 2, 0);
|
painter_.drawPixmap(0, 0, temp, 2, 0);
|
||||||
if (hicolour)
|
if (hicolour)
|
||||||
painter_.drawPixmap(0, 3, aTexture, 0, 0, 64, 4);
|
painter_.drawTiledPixmap(0, 4, 64, resizeHeight_ - 8, aTexture);
|
||||||
painter_.end();
|
painter_.end();
|
||||||
|
|
||||||
palette_ = iResizePal_;
|
palette_ = iResizePal_;
|
||||||
|
@ -378,23 +407,9 @@ Static::update()
|
||||||
painter_.begin(&iResizeMid_);
|
painter_.begin(&iResizeMid_);
|
||||||
painter_.drawPixmap(0, 0, temp, 2, 0);
|
painter_.drawPixmap(0, 0, temp, 2, 0);
|
||||||
if (hicolour)
|
if (hicolour)
|
||||||
painter_.drawPixmap(0, 3, iTexture, 0, 0, 64, 4);
|
painter_.drawTiledPixmap(0, 4, 64, resizeHeight_ - 8, iTexture);
|
||||||
painter_.end();
|
painter_.end();
|
||||||
|
|
||||||
down_ = false;
|
|
||||||
|
|
||||||
transx = 0.0;
|
|
||||||
|
|
||||||
palette_ = aBut;
|
|
||||||
_drawButtonBorder(aButtonUp_);
|
|
||||||
down_ = true;
|
|
||||||
_drawButtonBorder(aButtonDown_);
|
|
||||||
|
|
||||||
palette_ = iBut;
|
|
||||||
_drawButtonBorder(iButtonDown_);
|
|
||||||
down_ = false;
|
|
||||||
_drawButtonBorder(iButtonUp_);
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
// Resize handles
|
// Resize handles
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
|
@ -404,23 +419,56 @@ Static::update()
|
||||||
down_ = false;
|
down_ = false;
|
||||||
|
|
||||||
palette_ = aResizePal_;
|
palette_ = aResizePal_;
|
||||||
_drawBorder(aResize_, 28, 7);
|
_drawBorder(aResize_, 28, resizeHeight_ - 3);
|
||||||
|
|
||||||
if (hicolour) {
|
if (hicolour) {
|
||||||
painter_.begin(&aResize_);
|
painter_.begin(&aResize_);
|
||||||
painter_.drawPixmap(3, 3, aTexture, 0, 0, 24, 4);
|
painter_.drawTiledPixmap(4, 4, 20, resizeHeight_ - 8, aTexture);
|
||||||
painter_.end();
|
painter_.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
palette_ = iResizePal_;
|
palette_ = iResizePal_;
|
||||||
_drawBorder(iResize_, 28, 7);
|
_drawBorder(iResize_, 28, resizeHeight_ - 3);
|
||||||
|
|
||||||
if (hicolour) {
|
if (hicolour) {
|
||||||
painter_.begin(&iResize_);
|
painter_.begin(&iResize_);
|
||||||
painter_.drawPixmap(3, 3, iTexture, 0, 0, 24, 4);
|
painter_.drawTiledPixmap(4, 4, 20, resizeHeight_ - 8, iTexture);
|
||||||
painter_.end();
|
painter_.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------
|
||||||
|
// Button backgrounds
|
||||||
|
// -------------------------------------------------------------------------
|
||||||
|
qDebug("buttonSize == %d", buttonSize);
|
||||||
|
|
||||||
|
buttonSize -=2;
|
||||||
|
|
||||||
|
down_ = false;
|
||||||
|
transx = 0.0;
|
||||||
|
transy = 1.0;
|
||||||
|
palette_ = aBut;
|
||||||
|
_drawBorder(aButtonUp_, buttonSize, buttonSize);
|
||||||
|
down_ = true;
|
||||||
|
_drawBorder(aButtonDown_, buttonSize, buttonSize);
|
||||||
|
|
||||||
|
palette_ = iBut;
|
||||||
|
_drawBorder(iButtonDown_, buttonSize, buttonSize);
|
||||||
|
down_ = false;
|
||||||
|
_drawBorder(iButtonUp_, buttonSize, buttonSize);
|
||||||
|
|
||||||
|
painter_.begin(&aButtonUp_);
|
||||||
|
|
||||||
|
if (hicolour)
|
||||||
|
painter_.drawTiledPixmap(4, 4, buttonSize - 8, buttonSize - 8, aTexture);
|
||||||
|
|
||||||
|
painter_.end();
|
||||||
|
|
||||||
|
painter_.begin(&iButtonUp_);
|
||||||
|
if (hicolour)
|
||||||
|
painter_.drawTiledPixmap(4, 4, buttonSize - 8, buttonSize - 8, iTexture);
|
||||||
|
|
||||||
|
painter_.end();
|
||||||
|
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
// Button order
|
// Button order
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
|
|
|
@ -92,9 +92,17 @@ class Static
|
||||||
const QStringList & rightButtons() const
|
const QStringList & rightButtons() const
|
||||||
{ return rightButtons_; }
|
{ return rightButtons_; }
|
||||||
|
|
||||||
|
int animationStyle() const
|
||||||
|
{ return animationStyle_; }
|
||||||
|
|
||||||
|
int titleHeight() const
|
||||||
|
{ return titleHeight_; }
|
||||||
|
|
||||||
|
int resizeHeight() const
|
||||||
|
{ return resizeHeight_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void _drawButtonBorder (QPixmap &);
|
|
||||||
void _drawBorder (QPixmap &, int, int);
|
void _drawBorder (QPixmap &, int, int);
|
||||||
|
|
||||||
void _init();
|
void _init();
|
||||||
|
@ -121,6 +129,11 @@ class Static
|
||||||
double transx, transy;
|
double transx, transy;
|
||||||
|
|
||||||
QStringList leftButtons_, rightButtons_;
|
QStringList leftButtons_, rightButtons_;
|
||||||
|
|
||||||
|
int animationStyle_;
|
||||||
|
|
||||||
|
int titleHeight_;
|
||||||
|
int resizeHeight_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // End namespace
|
} // End namespace
|
||||||
|
|
Loading…
Reference in a new issue