File 3_5_BRANCH.diff of Package kdebase3
package: kdebase-3.5.10.tar.bz2
kdemod: kdebase
--- BRANCH_STATUS
+++ BRANCH_STATUS
@@ -0,0 +1,2 @@
+current HEAD: 865247
+svn di between //tags/KDE/3.5.10/kdebase and //branches/KDE/3.5/kdebase
--- kcontrol/background/bgrender.cpp
+++ kcontrol/background/bgrender.cpp
@@ -1163,9 +1163,8 @@
m_pPixmap = new QPixmap(m_size);
m_pPixmap->fill(Qt::black);
}
-
- for (unsigned i=0; i<m_numRenderers; ++i)
- m_renderer[i]->desktopResized();
+
+ initRenderers();
}
--- kcontrol/info/opengl.cpp
+++ kcontrol/info/opengl.cpp
@@ -608,7 +608,6 @@
}
else {
kdDebug() << "Error: glXMakeCurrent failed\n";
- glXDestroyContext(dpy, ctx);
}
glXDestroyContext(dpy, ctx);
--- kicker/taskbar/taskcontainer.cpp
+++ kicker/taskbar/taskcontainer.cpp
@@ -202,6 +202,8 @@
}
return;
}
+
+ KickerTip::Client::updateKickerTip();
QToolButton::update();
}
@@ -1524,86 +1526,90 @@
}
QPixmap pixmap;
- if (TaskBarSettings::showThumbnails() &&
- m_filteredTasks.count() == 1)
- {
- Task::Ptr t = m_filteredTasks.first();
-
- pixmap = t->thumbnail(TaskBarSettings::thumbnailMaxDimension());
- }
-
- if (pixmap.isNull() && tasks.last())
- {
- // try to load icon via net_wm
- pixmap = KWin::icon(tasks.last()->window(),
- KIcon::SizeMedium,
- KIcon::SizeMedium,
- true);
- }
-
- // Collect all desktops the tasks are on. Sort naturally.
- QMap<int, QString> desktopMap;
- bool demandsAttention = false;
- bool modified = false;
- bool allDesktops = false;
- Task::List::const_iterator itEnd = m_filteredTasks.constEnd();
- for (Task::List::const_iterator it = m_filteredTasks.constBegin(); it != itEnd; ++it)
+ QString name;
+ QString details;
+
+ if (m_filteredTasks.count() > 0)
{
- Task::Ptr t = *it;
- if (t->demandsAttention())
+ if (TaskBarSettings::showThumbnails() &&
+ m_filteredTasks.count() == 1)
{
- demandsAttention = true;
- }
-
- if (t->isModified())
- {
- modified = true;
+ Task::Ptr t = m_filteredTasks.first();
+
+ pixmap = t->thumbnail(TaskBarSettings::thumbnailMaxDimension());
}
-
- if (t->isOnAllDesktops())
+
+ if (pixmap.isNull() && tasks.count())
{
- allDesktops = true;
- desktopMap.clear();
+ // try to load icon via net_wm
+ pixmap = KWin::icon(tasks.last()->window(),
+ KIcon::SizeMedium,
+ KIcon::SizeMedium,
+ true);
}
- else if (!allDesktops)
+
+ // Collect all desktops the tasks are on. Sort naturally.
+ QMap<int, QString> desktopMap;
+ bool demandsAttention = false;
+ bool modified = false;
+ bool allDesktops = false;
+ Task::List::const_iterator itEnd = m_filteredTasks.constEnd();
+ for (Task::List::const_iterator it = m_filteredTasks.constBegin(); it != itEnd; ++it)
{
- desktopMap.insert(t->desktop(),
- TaskManager::the()->desktopName(t->desktop()));
+ Task::Ptr t = *it;
+ if (t->demandsAttention())
+ {
+ demandsAttention = true;
+ }
+
+ if (t->isModified())
+ {
+ modified = true;
+ }
+
+ if (t->isOnAllDesktops())
+ {
+ allDesktops = true;
+ desktopMap.clear();
+ }
+ else if (!allDesktops)
+ {
+ desktopMap.insert(t->desktop(),
+ TaskManager::the()->desktopName(t->desktop()));
+ }
}
- }
-
- QString details;
-
- if (TaskBarSettings::showAllWindows() && KWin::numberOfDesktops() > 1)
- {
- if (desktopMap.isEmpty())
+
+ if (TaskBarSettings::showAllWindows() && KWin::numberOfDesktops() > 1)
{
- details.append(i18n("On all desktops"));
+ if (desktopMap.isEmpty())
+ {
+ details.append(i18n("On all desktops"));
+ }
+ else
+ {
+ QStringList desktopNames = desktopMap.values();
+ details.append(i18n("On %1").arg(QStyleSheet::escape(desktopNames.join(", "))) + "<br>");
+ }
}
- else
+
+ if (demandsAttention)
{
- QStringList desktopNames = desktopMap.values();
- details.append(i18n("On %1").arg(QStyleSheet::escape(desktopNames.join(", "))) + "<br>");
+ details.append(i18n("Requesting attention") + "<br>");
}
- }
-
- if (demandsAttention)
- {
- details.append(i18n("Requesting attention") + "<br>");
- }
-
- QString name = this->name();
- if (modified)
- {
- details.append(i18n("Has unsaved changes"));
-
- static QString modStr = "[" + i18n( "modified" ) + "]";
- int modStrPos = name.find(modStr);
-
- if (modStrPos >= 0)
+
+ name = this->name();
+ if (modified)
{
- // +1 because we include a space after the closing brace.
- name.remove(modStrPos, modStr.length() + 1);
+ details.append(i18n("Has unsaved changes"));
+
+ static QString modStr = "[" + i18n( "modified" ) + "]";
+ int modStrPos = name.find(modStr);
+
+ if (modStrPos >= 0)
+ {
+ // +1 because we include a space after the closing brace.
+ name.remove(modStrPos, modStr.length() + 1);
+ }
}
}
--- kicker/taskbar/taskbar.cpp
+++ kicker/taskbar/taskbar.cpp
@@ -61,8 +61,6 @@
m_textShadowEngine(0),
m_ignoreUpdates(false)
{
- setFrameStyle( NoFrame );
-
arrowType = LeftArrow;
blocklayout = true;
@@ -81,6 +79,8 @@
connect(&m_relayoutTimer, SIGNAL(timeout()),
this, SLOT(reLayout()));
+ connect(this, SIGNAL(contentsMoving(int, int)), SLOT(setBackground()));
+
// connect manager
connect(TaskManager::the(), SIGNAL(taskAdded(Task::Ptr)),
this, SLOT(add(Task::Ptr)));
@@ -647,7 +647,7 @@
if (!blocklayout && !m_ignoreUpdates)
{
- m_relayoutTimer.start(100, true);
+ m_relayoutTimer.start(25, true);
}
}
@@ -814,24 +814,16 @@
QTimer::singleShot(100, this, SLOT(publishIconGeometry()));
}
-void TaskBar::viewportResizeEvent( QResizeEvent* e )
-{
- Panner::viewportResizeEvent(e);
- setViewportBackground();
-}
-
void TaskBar::setViewportBackground()
{
const QPixmap *bg = parentWidget()->backgroundPixmap();
- viewport()->unsetPalette();
-
if (bg)
{
QPixmap pm(parentWidget()->size());
pm.fill(parentWidget(), pos() + viewport()->pos());
viewport()->setPaletteBackgroundPixmap(pm);
- viewport()->setBackgroundOrigin( WidgetOrigin );
+ viewport()->setBackgroundOrigin(WidgetOrigin);
}
else
viewport()->setPaletteBackgroundColor(paletteBackgroundColor());
--- kicker/taskbar/taskbar.h
+++ kicker/taskbar/taskbar.h
@@ -63,12 +63,11 @@
QImage* blendGradient(const QSize& size);
- void setBackground();
-
KTextShadowEngine *textShadowEngine();
public slots:
void configure();
+ void setBackground();
signals:
void containerCountChanged();
@@ -98,7 +97,6 @@
void viewportMouseReleaseEvent( QMouseEvent* );
void viewportMouseDoubleClickEvent( QMouseEvent* );
void viewportMouseMoveEvent( QMouseEvent* );
- void viewportResizeEvent( QResizeEvent * );
void wheelEvent(QWheelEvent*);
void propagateMouseEvent( QMouseEvent* );
void resizeEvent( QResizeEvent* );
--- kicker/libkicker/panner.cpp
+++ kicker/libkicker/panner.cpp
@@ -35,28 +35,28 @@
#include "panner.h"
#include "panner.moc"
-
Panner::Panner( QWidget* parent, const char* name )
- : QScrollView( parent, name ),
+ : QWidget( parent, name ),
_luSB(0),
- _rdSB(0)
+ _rdSB(0),
+ _cwidth(0), _cheight(0),
+ _cx(0), _cy(0)
{
KGlobal::locale()->insertCatalogue("libkicker");
setBackgroundOrigin( AncestorOrigin );
_updateScrollButtonsTimer = new QTimer(this);
connect(_updateScrollButtonsTimer, SIGNAL(timeout()), this, SLOT(reallyUpdateScrollButtons()));
-
- setResizePolicy(Manual);
- setVScrollBarMode( QScrollView::AlwaysOff );
- setHScrollBarMode( QScrollView::AlwaysOff );
-
- viewport()->setBackgroundMode( PaletteBackground );
- viewport()->setBackgroundOrigin( AncestorOrigin );
+ _clipper = new QWidget(this);
+ _clipper->setBackgroundOrigin(AncestorOrigin);
+ _clipper->installEventFilter( this );
+ _viewport = new QWidget(_clipper);
+ _viewport->setBackgroundOrigin(AncestorOrigin);
+
// layout
_layout = new QBoxLayout(this, QBoxLayout::LeftToRight);
- _layout->addWidget(viewport(), 1);
+ _layout->addWidget(_clipper, 1);
setOrientation(Horizontal);
}
@@ -64,6 +64,37 @@
{
}
+void Panner::createScrollButtons()
+{
+ if (_luSB)
+ {
+ return;
+ }
+
+ // left/up scroll button
+ _luSB = new SimpleArrowButton(this);
+ _luSB->installEventFilter(this);
+ //_luSB->setAutoRepeat(true);
+ _luSB->setMinimumSize(12, 12);
+ _luSB->hide();
+ _layout->addWidget(_luSB);
+ connect(_luSB, SIGNAL(pressed()), SLOT(startScrollLeftUp()));
+ connect(_luSB, SIGNAL(released()), SLOT(stopScroll()));
+
+ // right/down scroll button
+ _rdSB = new SimpleArrowButton(this);
+ _rdSB->installEventFilter(this);
+ //_rdSB->setAutoRepeat(true);
+ _rdSB->setMinimumSize(12, 12);
+ _rdSB->hide();
+ _layout->addWidget(_rdSB);
+ connect(_rdSB, SIGNAL(pressed()), SLOT(startScrollRightDown()));
+ connect(_rdSB, SIGNAL(released()), SLOT(stopScroll()));
+
+ // set up the buttons
+ setupButtons();
+}
+
void Panner::setupButtons()
{
if (orientation() == Horizontal)
@@ -110,55 +141,54 @@
reallyUpdateScrollButtons();
}
-void Panner::resizeEvent( QResizeEvent* e )
+void Panner::resizeEvent( QResizeEvent* )
{
- QScrollView::resizeEvent( e );
- updateScrollButtons();
+ //QScrollView::resizeEvent( e );
+ //updateScrollButtons();
}
void Panner::scrollRightDown()
{
if(orientation() == Horizontal) // scroll right
- scrollBy( 40, 0 );
+ scrollBy( _step, 0 );
else // scroll down
- scrollBy( 0, 40 );
+ scrollBy( 0, _step );
+ if (_step < 64)
+ _step++;
}
void Panner::scrollLeftUp()
{
if(orientation() == Horizontal) // scroll left
- scrollBy( -40, 0 );
+ scrollBy( -_step, 0 );
else // scroll up
- scrollBy( 0, -40 );
+ scrollBy( 0, -_step );
+ if (_step < 64)
+ _step++;
}
-void Panner::createScrollButtons()
+void Panner::startScrollRightDown()
{
- if (_luSB)
- {
- return;
- }
-
- // left/up scroll button
- _luSB = new SimpleArrowButton(this);
- _luSB->installEventFilter(this);
- _luSB->setAutoRepeat(true);
- _luSB->setMinimumSize(12, 12);
- _luSB->hide();
- _layout->addWidget(_luSB);
- connect(_luSB, SIGNAL(clicked()), SLOT(scrollLeftUp()));
+ _scrollTimer = new QTimer(this);
+ connect(_scrollTimer, SIGNAL(timeout()), SLOT(scrollRightDown()));
+ _scrollTimer->start(50);
+ _step = 8;
+ scrollRightDown();
+}
- // right/down scroll button
- _rdSB = new SimpleArrowButton(this);
- _rdSB->installEventFilter(this);
- _rdSB->setAutoRepeat(true);
- _rdSB->setMinimumSize(12, 12);
- _rdSB->hide();
- _layout->addWidget(_rdSB);
- connect(_rdSB, SIGNAL(clicked()), SLOT(scrollRightDown()));
+void Panner::startScrollLeftUp()
+{
+ _scrollTimer = new QTimer(this);
+ connect(_scrollTimer, SIGNAL(timeout()), SLOT(scrollLeftUp()));
+ _scrollTimer->start(50);
+ _step = 8;
+ scrollLeftUp();
+}
- // set up the buttons
- setupButtons();
+void Panner::stopScroll()
+{
+ delete _scrollTimer;
+ _scrollTimer = 0;
}
void Panner::reallyUpdateScrollButtons()
@@ -176,7 +206,7 @@
delta = contentsHeight() - height();
}
- if (delta > 1)
+ if (delta >= 1)
{
createScrollButtons();
@@ -184,21 +214,11 @@
// we need to do this every single time
_luSB->show();
_rdSB->show();
-
- if (orientation() == Horizontal)
- {
- setMargins(0, 0, _luSB->width() + _rdSB->width(), 0);
- }
- else
- {
- setMargins(0, 0, 0, _luSB->height() + _rdSB->height());
- }
}
else if (_luSB && _luSB->isVisibleTo(this))
{
_luSB->hide();
_rdSB->hide();
- setMargins(0, 0, 0, 0);
}
}
@@ -207,8 +227,170 @@
_updateScrollButtonsTimer->start(200, true);
}
+void Panner::setContentsPos(int x, int y)
+{
+ if (x < 0)
+ x = 0;
+ else if (x > (contentsWidth() - visibleWidth()))
+ x = contentsWidth() - visibleWidth();
+
+ if (y < 0)
+ y = 0;
+ else if (y > (contentsHeight() - visibleHeight()))
+ y = contentsHeight() - visibleHeight();
+
+ if (x == contentsX() && y == contentsY())
+ return;
+
+ _viewport->move(-x, -y);
+ emit contentsMoving(x, y);
+}
+
+void Panner::scrollBy(int dx, int dy)
+{
+ setContentsPos(contentsX() + dx, contentsY() + dy);
+}
+
void Panner::resizeContents( int w, int h )
{
- QScrollView::resizeContents( w, h );
+ _viewport->resize(w, h);
+ setContentsPos(contentsX(), contentsY());
updateScrollButtons();
}
+
+QPoint Panner::contentsToViewport( const QPoint& p ) const
+{
+ return QPoint(p.x() - contentsX() - _clipper->x(), p.y() - contentsY() - _clipper->y());
+}
+
+QPoint Panner::viewportToContents( const QPoint& vp ) const
+{
+ return QPoint(vp.x() + contentsX() + _clipper->x(), vp.y() + contentsY() + _clipper->y());
+}
+
+void Panner::contentsToViewport( int x, int y, int& vx, int& vy ) const
+{
+ const QPoint v = contentsToViewport(QPoint(x,y));
+ vx = v.x();
+ vy = v.y();
+}
+
+void Panner::viewportToContents( int vx, int vy, int& x, int& y ) const
+{
+ const QPoint c = viewportToContents(QPoint(vx,vy));
+ x = c.x();
+ y = c.y();
+}
+
+void Panner::ensureVisible( int x, int y )
+{
+ ensureVisible(x, y, 50, 50);
+}
+
+void Panner::ensureVisible( int x, int y, int xmargin, int ymargin )
+{
+ int pw=visibleWidth();
+ int ph=visibleHeight();
+
+ int cx=-contentsX();
+ int cy=-contentsY();
+ int cw=contentsWidth();
+ int ch=contentsHeight();
+
+ if ( pw < xmargin*2 )
+ xmargin=pw/2;
+ if ( ph < ymargin*2 )
+ ymargin=ph/2;
+
+ if ( cw <= pw ) {
+ xmargin=0;
+ cx=0;
+ }
+ if ( ch <= ph ) {
+ ymargin=0;
+ cy=0;
+ }
+
+ if ( x < -cx+xmargin )
+ cx = -x+xmargin;
+ else if ( x >= -cx+pw-xmargin )
+ cx = -x+pw-xmargin;
+
+ if ( y < -cy+ymargin )
+ cy = -y+ymargin;
+ else if ( y >= -cy+ph-ymargin )
+ cy = -y+ph-ymargin;
+
+ if ( cx > 0 )
+ cx=0;
+ else if ( cx < pw-cw && cw>pw )
+ cx=pw-cw;
+
+ if ( cy > 0 )
+ cy=0;
+ else if ( cy < ph-ch && ch>ph )
+ cy=ph-ch;
+
+ setContentsPos( -cx, -cy );
+}
+
+bool Panner::eventFilter( QObject *obj, QEvent *e )
+{
+ if ( obj == _viewport || obj == _clipper )
+ {
+ switch ( e->type() )
+ {
+ case QEvent::Resize:
+ viewportResizeEvent((QResizeEvent *)e);
+ break;
+ case QEvent::MouseButtonPress:
+ viewportMousePressEvent( (QMouseEvent*)e );
+ if ( ((QMouseEvent*)e)->isAccepted() )
+ return true;
+ break;
+ case QEvent::MouseButtonRelease:
+ viewportMouseReleaseEvent( (QMouseEvent*)e );
+ if ( ((QMouseEvent*)e)->isAccepted() )
+ return true;
+ break;
+ case QEvent::MouseButtonDblClick:
+ viewportMouseDoubleClickEvent( (QMouseEvent*)e );
+ if ( ((QMouseEvent*)e)->isAccepted() )
+ return true;
+ break;
+ case QEvent::MouseMove:
+ viewportMouseMoveEvent( (QMouseEvent*)e );
+ if ( ((QMouseEvent*)e)->isAccepted() )
+ return true;
+ break;
+ default:
+ break;
+ }
+ }
+
+ return QWidget::eventFilter( obj, e ); // always continue with standard event processing
+}
+
+void Panner::viewportResizeEvent( QResizeEvent* )
+{
+}
+
+void Panner::viewportMousePressEvent( QMouseEvent* e)
+{
+ e->ignore();
+}
+
+void Panner::viewportMouseReleaseEvent( QMouseEvent* e )
+{
+ e->ignore();
+}
+
+void Panner::viewportMouseDoubleClickEvent( QMouseEvent* e )
+{
+ e->ignore();
+}
+
+void Panner::viewportMouseMoveEvent( QMouseEvent* e )
+{
+ e->ignore();
+}
--- kicker/libkicker/kickertip.cpp
+++ kicker/libkicker/kickertip.cpp
@@ -128,8 +128,10 @@
// Tickle the information out of the bastard.
client->updateKickerTip(data);
+ // Hide the tip if there is nothing to show
if (data.message.isEmpty() && data.subtext.isEmpty() && data.icon.isNull())
{
+ hide();
return;
}
@@ -137,7 +139,7 @@
m_richText = new QSimpleRichText("<qt><h3>" + data.message + "</h3><p>" +
data.subtext + "</p></qt>", font(), QString::null, 0,
m_mimeFactory);
- m_richText->setWidth(400);
+ m_richText->setWidth(640);
m_direction = data.direction;
if (KickerSettings::mouseOversShowIcon())
@@ -193,11 +195,81 @@
void KickerTip::mousePressEvent(QMouseEvent * /*e*/)
{
QToolTip::setGloballyEnabled(m_toolTipsEnabled);
- m_timer.stop();
- m_frameTimer.stop();
hide();
}
+static void drawRoundRect(QPainter &p, const QRect &r)
+{
+ static int line[8] = { 1, 3, 4, 5, 6, 7, 7, 8 };
+ static int border[8] = { 1, 2, 1, 1, 1, 1, 1, 1 };
+ int xl, xr, y1, y2;
+ QPen pen = p.pen();
+ bool drawBorder = pen.style() != QPen::NoPen;
+
+ if (r.width() < 16 || r.height() < 16)
+ {
+ p.drawRect(r);
+ return;
+ }
+
+ p.fillRect(r.x(), r.y() + 8, r.width(), r.height() - 16, p.brush());
+ p.fillRect(r.x() + 8, r.y(), r.width() - 16, r.height(), p.brush());
+
+ p.setPen(p.brush().color());
+
+ for (int i = 0; i < 8; i++)
+ {
+ xl = i;
+ xr = r.width() - i - 1;
+ y1 = 7;
+ y2 = 7 - (line[i] - 1);
+
+ p.drawLine(xl, y1, xl, y2);
+ p.drawLine(xr, y1, xr, y2);
+
+ y1 = r.height() - y1 - 1;
+ y2 = r.height() - y2 - 1;
+
+ p.drawLine(xl, y1, xl, y2);
+ p.drawLine(xr, y1, xr, y2);
+
+ }
+
+ if (drawBorder)
+ {
+ p.setPen(pen);
+
+ if (r.height() > 16)
+ {
+ p.drawLine(r.x(), r.y() + 8, r.x(), r.y() + r.height() - 9);
+ p.drawLine(r.x() + r.width() - 1, r.y() + 8, r.x() + r.width() - 1, r.y() + r.height() - 9);
+ }
+ if (r.width() > 16)
+ {
+ p.drawLine(r.x() + 8, r.y(), r.x() + r.width() - 9, r.y());
+ p.drawLine(r.x() + 8, r.y() + r.height() - 1, r.x() + r.width() - 9, r.y() + r.height() - 1);
+ }
+
+ for (int i = 0; i < 8; i++)
+ {
+ xl = i;
+ xr = r.width() - i - 1;
+ y2 = 7 - (line[i] - 1);
+ y1 = y2 + (border[i] - 1);
+
+ p.drawLine(xl, y1, xl, y2);
+ p.drawLine(xr, y1, xr, y2);
+
+ y1 = r.height() - y1 - 1;
+ y2 = r.height() - y2 - 1;
+
+ p.drawLine(xl, y1, xl, y2);
+ p.drawLine(xr, y1, xr, y2);
+
+ }
+ }
+}
+
void KickerTip::plainMask()
{
QPainter maskPainter(&m_mask);
@@ -205,9 +277,9 @@
m_mask.fill(Qt::black);
maskPainter.setBrush(Qt::white);
- maskPainter.setPen(Qt::white);
- maskPainter.drawRoundRect(m_mask.rect(), 1600 / m_mask.rect().width(),
- 1600 / m_mask.rect().height());
+ maskPainter.setPen(Qt::NoPen);
+ //maskPainter.drawRoundRect(m_mask.rect(), 1600 / m_mask.rect().width(), 1600 / m_mask.rect().height());
+ drawRoundRect(maskPainter, m_mask.rect());
setMask(m_mask);
m_frameTimer.stop();
}
@@ -219,9 +291,9 @@
m_mask.fill(Qt::black);
maskPainter.setBrush(Qt::white);
- maskPainter.setPen(Qt::white);
- maskPainter.drawRoundRect(m_mask.rect(), 1600 / m_mask.rect().width(),
- 1600 / m_mask.rect().height());
+ maskPainter.setPen(Qt::NoPen);
+ //maskPainter.drawRoundRect(m_mask.rect(), 1600 / m_mask.rect().width(), 1600 / m_mask.rect().height());
+ drawRoundRect(maskPainter, m_mask.rect());
m_dissolveSize += m_dissolveDelta;
@@ -235,7 +307,7 @@
for (y = 0; y < height() + size; y += size)
{
x = width();
- s = m_dissolveSize * x / 128;
+ s = 4 * m_dissolveSize * x / 128;
for (; x > -size; x -= size, s -= 2)
{
if (s < 0)
@@ -311,10 +383,10 @@
// draw background
QPainter bufferPainter(&m_pixmap);
- bufferPainter.setPen(Qt::black);
+ bufferPainter.setPen(colorGroup().foreground());
bufferPainter.setBrush(colorGroup().background());
- bufferPainter.drawRoundRect(0, 0, width, height,
- 1600 / width, 1600 / height);
+ //bufferPainter.drawRoundRect(0, 0, width, height, 1600 / width, 1600 / height);
+ drawRoundRect(bufferPainter, QRect(0, 0, width, height));
// draw icon if present
if (!m_icon.isNull())
@@ -331,11 +403,11 @@
QColorGroup cg = colorGroup();
cg.setColor(QColorGroup::Text, cg.background().dark(115));
int shadowOffset = QApplication::reverseLayout() ? -1 : 1;
- m_richText->draw(&bufferPainter, 5 + textX + shadowOffset, textY + 1, QRect(), cg);
+ m_richText->draw(&bufferPainter, textX + shadowOffset, textY + 1, QRect(), cg);
// draw text
cg = colorGroup();
- m_richText->draw(&bufferPainter, 5 + textX, textY, rect(), cg);
+ m_richText->draw(&bufferPainter, textX, textY, rect(), cg);
}
}
@@ -359,11 +431,7 @@
void KickerTip::untipFor(const QWidget* w)
{
if (isTippingFor(w))
- {
- tipFor(0);
- m_timer.stop();
hide();
- }
}
bool KickerTip::isTippingFor(const QWidget* w) const
@@ -408,7 +476,8 @@
void KickerTip::hide()
{
- m_tippingFor = 0;
+ tipFor(0);
+ m_timer.stop();
m_frameTimer.stop();
QWidget::hide();
}
@@ -476,8 +545,6 @@
break;
case QEvent::MouseButtonPress:
QToolTip::setGloballyEnabled(m_toolTipsEnabled);
- m_timer.stop();
- m_frameTimer.stop();
hide();
default:
break;
--- kicker/libkicker/simplebutton.cpp
+++ kicker/libkicker/simplebutton.cpp
@@ -32,6 +32,8 @@
#include <kipc.h>
#include <kstandarddirs.h>
+#define BUTTON_MARGIN KDialog::spacingHint()
+
SimpleButton::SimpleButton(QWidget *parent, const char *name)
: QButton(parent, name),
m_highlight(false),
@@ -70,7 +72,7 @@
if (!pm)
return QButton::sizeHint();
else
- return QSize(pm->width() + KDialog::spacingHint(), pm->height() + KDialog::spacingHint());
+ return QSize(pm->width() + BUTTON_MARGIN, pm->height() + BUTTON_MARGIN);
}
QSize SimpleButton::minimumSizeHint() const
@@ -107,7 +109,7 @@
int w = width();
int ph = pix.height();
int pw = pix.width();
- int margin = KDialog::spacingHint();
+ int margin = BUTTON_MARGIN;
QPoint origin(margin / 2, margin / 2);
if (ph < (h - margin))
--- kicker/libkicker/panner.h
+++ kicker/libkicker/panner.h
@@ -24,14 +24,14 @@
#ifndef __panner_h__
#define __panner_h__
-#include <qscrollview.h>
+#include <qwidget.h>
#include "simplebutton.h"
class QBoxLayout;
class QTimer;
-class KDE_EXPORT Panner : public QScrollView
+class KDE_EXPORT Panner : public QWidget
{
Q_OBJECT
@@ -43,17 +43,55 @@
Qt::Orientation orientation() const { return _orient; }
virtual void setOrientation(Orientation orientation);
+
+ QWidget *viewport() const { return _viewport; }
+
+ QRect contentsRect() const { return QRect(0, 0, width(), height()); }
+
+ int contentsX() const { return _viewport ? -_viewport->x() : 0; }
+ int contentsY() const { return _viewport ? -_viewport->y() : 0; }
+ int contentsWidth() const { return _viewport ? _viewport->width() : 0; }
+ int contentsHeight() const { return _viewport ? _viewport->height() : 0; }
+ void setContentsPos(int x, int y);
+
+ int visibleWidth() const { return _clipper->width(); }
+ int visibleHeight() const { return _clipper->height(); }
+
+ void contentsToViewport( int x, int y, int& vx, int& vy ) const;
+ void viewportToContents( int vx, int vy, int& x, int& y ) const;
+ QPoint contentsToViewport( const QPoint& ) const;
+ QPoint viewportToContents( const QPoint& ) const;
+
+ void addChild(QWidget *child) { child->show(); }
+ void removeChild(QWidget *child) { child->hide(); }
+ int childX(QWidget *child) const { return child->x(); }
+ int childY(QWidget *child) const { return child->y(); }
+ void moveChild(QWidget *child, int x, int y) { child->move(x, y); }
+
+ void ensureVisible( int x, int y );
+ void ensureVisible( int x, int y, int xmargin, int ymargin );
public slots:
virtual void resizeContents( int w, int h );
+ void startScrollRightDown();
+ void startScrollLeftUp();
+ void stopScroll();
void scrollRightDown();
void scrollLeftUp();
void reallyUpdateScrollButtons();
+ void scrollBy(int dx, int dy);
+
+signals:
+ void contentsMoving(int x, int y);
protected:
- void resizeEvent(QResizeEvent *ev);
- void contentsWheelEvent(QWheelEvent *){;}
- void viewportWheelEvent(QWheelEvent *){;}
+ virtual bool eventFilter( QObject *obj, QEvent *e );
+ virtual void resizeEvent(QResizeEvent *ev);
+ virtual void viewportResizeEvent( QResizeEvent* );
+ virtual void viewportMousePressEvent( QMouseEvent* );
+ virtual void viewportMouseReleaseEvent( QMouseEvent* );
+ virtual void viewportMouseDoubleClickEvent( QMouseEvent* );
+ virtual void viewportMouseMoveEvent( QMouseEvent* );
private:
void setupButtons();
@@ -65,6 +103,13 @@
SimpleArrowButton *_luSB; // Left Scroll Button
SimpleArrowButton *_rdSB; // Right Scroll Button
QTimer *_updateScrollButtonsTimer;
+ QTimer *_scrollTimer;
+
+ QWidget *_clipper;
+ QWidget *_viewport;
+ int _cwidth, _cheight;
+ int _cx, _cy;
+ int _step;
};
#endif
--- kicker/extensions/taskbar/taskbarextension.cpp
+++ kicker/extensions/taskbar/taskbarextension.cpp
@@ -170,7 +170,6 @@
}
unsetPalette();
- m_container->unsetPalette();
if (KickerSettings::useBackgroundTheme())
{
@@ -215,17 +214,17 @@
KickerLib::colorize(bgImage);
}
setPaletteBackgroundPixmap(bgImage);
- m_container->setPaletteBackgroundPixmap(bgImage);
}
}
+
+ m_container->setBackground();
}
void TaskBarExtension::updateBackground(const QPixmap& bgImage)
{
unsetPalette();
setPaletteBackgroundPixmap(bgImage);
- m_container->unsetPalette();
- m_container->setPaletteBackgroundPixmap(bgImage);
+ m_container->setBackground();
}
void TaskBarExtension::resizeEvent(QResizeEvent *e)
--- kicker/kicker/core/container_extension.cpp
+++ kicker/kicker/core/container_extension.cpp
@@ -126,6 +126,7 @@
connect(Kicker::the()->kwinModule(), SIGNAL(currentDesktopChanged(int)),
this, SLOT( currentDesktopChanged(int)));
+ setBackgroundOrigin(AncestorOrigin);
setFrameStyle(NoFrame);
setLineWidth(0);
setMargin(0);
@@ -163,7 +164,7 @@
{
_userHidden = static_cast<UserHidden>(tmp);
}
-
+
if (m_extension)
{
// if we have an extension, we need to grab the extension-specific
--- kicker/kicker/core/containerarea.cpp
+++ kicker/kicker/core/containerarea.cpp
@@ -90,15 +90,12 @@
m_addAppletDialog(0)
{
setBackgroundOrigin( WidgetOrigin );
- viewport()->setBackgroundOrigin( AncestorOrigin );
- m_contents = new QWidget(viewport());
- m_contents->setBackgroundOrigin(AncestorOrigin);
+ m_contents = viewport();
m_layout = new ContainerAreaLayout(m_contents);
- // Install an event filter to propagate layout hints coming from
- // m_contents.
+ // Install an event filter to propagate layout hints coming from m_contents.
m_contents->installEventFilter(this);
setBackground();
--- kicker/kicker/core/panelextension.cpp
+++ kicker/kicker/core/panelextension.cpp
@@ -74,7 +74,6 @@
connect(_containerArea, SIGNAL(maintainFocus(bool)), this, SIGNAL(maintainFocus(bool)));
_layout->addWidget(_containerArea);
- _containerArea->setFrameStyle(QFrame::NoFrame);
_containerArea->viewport()->installEventFilter(this);
_containerArea->configure();
--- kicker/applets/systemtray/systemtrayapplet.h
+++ kicker/applets/systemtray/systemtrayapplet.h
@@ -118,6 +118,7 @@
TrayEmbed( bool kdeTray, QWidget* parent = NULL );
bool kdeTray() const { return kde_tray; }
void setBackground();
+ void getIconSize(int defaultIconSize);
private:
bool kde_tray;
};
--- kicker/applets/systemtray/systemtrayapplet.cpp
+++ kicker/applets/systemtray/systemtrayapplet.cpp
@@ -54,6 +54,8 @@
#include <X11/Xlib.h>
+#define ICON_MARGIN 1
+
extern "C"
{
KDE_EXPORT KPanelApplet* init(QWidget *parent, const QString& configFile)
@@ -459,9 +461,9 @@
delete emb;
return;
}
-
+
connect(emb, SIGNAL(embeddedWindowDestroyed()), SLOT(updateTrayWindows()));
- emb->setMinimumSize(m_iconSize, m_iconSize);
+ emb->getIconSize(m_iconSize);
if (shouldHide(w))
{
@@ -471,7 +473,7 @@
}
else
{
- emb->hide();
+ //emb->hide();
emb->setBackground();
emb->show();
m_shownWins.append(emb);
@@ -515,7 +517,7 @@
{
for (; emb != lastEmb; ++emb)
{
- (*emb)->hide();
+ //(*emb)->hide();
(*emb)->setBackground();
(*emb)->show();
}
@@ -744,8 +746,7 @@
}
int currentHeight = height();
- int minHeight = m_iconSize + 4;
- if (currentHeight != h && currentHeight != minHeight)
+ if (currentHeight != h)
{
SystemTrayApplet* me = const_cast<SystemTrayApplet*>(this);
me->setMinimumSize(0, 0);
@@ -764,8 +765,7 @@
}
int currentWidth = width();
- int minSize = m_iconSize + 4;
- if (currentWidth != w && currentWidth != minSize)
+ if (currentWidth != w)
{
SystemTrayApplet* me = const_cast<SystemTrayApplet*>(this);
me->setMinimumSize(0, 0);
@@ -782,10 +782,8 @@
}
-void SystemTrayApplet::resizeEvent( QResizeEvent* e )
+void SystemTrayApplet::resizeEvent( QResizeEvent* )
{
- KPanelApplet::resizeEvent(e);
-
layoutTray();
// we need to give ourselves a chance to adjust our size before calling this
QTimer::singleShot(0, this, SIGNAL(updateLayout()));
@@ -808,7 +806,7 @@
int i = 0, line, nbrOfLines, heightWidth;
bool showExpandButton = m_expandButton && m_expandButton->isVisibleTo(this);
delete m_layout;
- m_layout = new QGridLayout(this, 1, 1, 2, 2);
+ m_layout = new QGridLayout(this, 1, 1, ICON_MARGIN, ICON_MARGIN);
if (m_expandButton)
{
@@ -828,18 +826,18 @@
//
// The margin and spacing specified in the layout implies that:
- // [-- 2 pixels --] [-- first icon --] [-- 2 pixels --] ... [-- 2 pixels --] [-- last icon --] [-- 2 pixels --]
+ // [-- ICON_MARGIN pixels --] [-- first icon --] [-- ICON_MARGIN pixels --] ... [-- ICON_MARGIN pixels --] [-- last icon --] [-- ICON_MARGIN pixels --]
//
- // So, if we say that iconWidth is the icon width plus the 2 pixels spacing, then the available width for the icons
- // is the widget width minus 2 pixels margin. Forgetting these 2 pixels broke the layout algorithm in KDE <= 3.5.9.
+ // So, if we say that iconWidth is the icon width plus the ICON_MARGIN pixels spacing, then the available width for the icons
+ // is the widget width minus ICON_MARGIN pixels margin. Forgetting these ICON_MARGIN pixels broke the layout algorithm in KDE <= 3.5.9.
//
- // This fix makes the workaround in the heightForWidth() and widthForHeight() methods unneeded.
+ // This fix makes the workarounds in the heightForWidth() and widthForHeight() methods unneeded.
//
if (orientation() == Vertical)
{
- int iconWidth = maxIconWidth() + 2; // +2 for the margins that implied by the layout
- heightWidth = width() - 2;
+ int iconWidth = maxIconWidth() + ICON_MARGIN; // +2 for the margins that implied by the layout
+ heightWidth = width() - ICON_MARGIN;
// to avoid nbrOfLines=0 we ensure heightWidth >= iconWidth!
heightWidth = heightWidth < iconWidth ? iconWidth : heightWidth;
nbrOfLines = heightWidth / iconWidth;
@@ -860,12 +858,12 @@
emb != lastEmb; ++emb)
{
line = i % nbrOfLines;
- (*emb)->hide();
+ //(*emb)->hide();
(*emb)->show();
m_layout->addWidget(*emb, col, line,
Qt::AlignHCenter | Qt::AlignVCenter);
- if (line + 1 == nbrOfLines)
+ if ((line + 1) == nbrOfLines)
{
++col;
}
@@ -879,12 +877,12 @@
emb != lastEmb; ++emb)
{
line = i % nbrOfLines;
- (*emb)->hide();
+ //(*emb)->hide();
(*emb)->show();
m_layout->addWidget(*emb, col, line,
Qt::AlignHCenter | Qt::AlignVCenter);
- if (line + 1 == nbrOfLines)
+ if ((line + 1) == nbrOfLines)
{
++col;
}
@@ -894,8 +892,8 @@
}
else // horizontal
{
- int iconHeight = maxIconHeight() + 2; // +2 for the margins that implied by the layout
- heightWidth = height() - 2;
+ int iconHeight = maxIconHeight() + ICON_MARGIN; // +2 for the margins that implied by the layout
+ heightWidth = height() - ICON_MARGIN;
heightWidth = heightWidth < iconHeight ? iconHeight : heightWidth; // to avoid nbrOfLines=0
nbrOfLines = heightWidth / iconHeight;
@@ -914,12 +912,12 @@
for (TrayEmbedList::const_iterator emb = m_hiddenWins.begin(); emb != lastEmb; ++emb)
{
line = i % nbrOfLines;
- (*emb)->hide();
+ //(*emb)->hide();
(*emb)->show();
m_layout->addWidget(*emb, line, col,
Qt::AlignHCenter | Qt::AlignVCenter);
- if (line + 1 == nbrOfLines)
+ if ((line + 1) == nbrOfLines)
{
++col;
}
@@ -933,12 +931,12 @@
emb != lastEmb; ++emb)
{
line = i % nbrOfLines;
- (*emb)->hide();
+ //(*emb)->hide();
(*emb)->show();
m_layout->addWidget(*emb, line, col,
Qt::AlignHCenter | Qt::AlignVCenter);
- if (line + 1 == nbrOfLines)
+ if ((line + 1) == nbrOfLines)
{
++col;
}
@@ -975,6 +973,21 @@
: QXEmbed( parent ), kde_tray( kdeTray )
{
hide();
+}
+
+void TrayEmbed::getIconSize(int defaultIconSize)
+{
+ QSize minSize = minimumSizeHint();
+
+ int width = minSize.width();
+ int height = minSize.height();
+
+ if (width < 1 || width > defaultIconSize)
+ width = defaultIconSize;
+ if (height < 1 || height > defaultIconSize)
+ height = defaultIconSize;
+
+ setFixedSize(width, height);
setBackground();
}
@@ -994,9 +1007,7 @@
if (!isHidden())
{
- hide();
- show();
+ XClearArea(x11Display(), embeddedWinId(), 0, 0, 0, 0, True);
}
- //XClearArea(x11Display(), embeddedWinId(), 0, 0, 0, 0, True);
}
--- kicker/applets/clock/clock.h
+++ kicker/applets/clock/clock.h
@@ -41,6 +41,7 @@
#include <kickertip.h>
#include "settings.h"
+#include "kshadowengine.h"
class QTimer;
class QBoxLayout;
@@ -152,6 +153,9 @@
bool showDayOfWeek();
protected:
+ void paintEvent(QPaintEvent *e);
+ void drawContents(QPainter *p);
+
QString _timeStr;
};
@@ -279,6 +283,8 @@
QDate clockGetDate();
virtual void updateKickerTip(KickerTip::Data&);
+
+ KTextShadowEngine *shadowEngine();
k_dcop:
void reconfigure();
@@ -335,6 +341,7 @@
QStringList _remotezonelist;
KPopupMenu* menu;
ClockAppletToolTip m_tooltip;
+ KTextShadowEngine *m_shadowEngine;
};
--- kicker/applets/clock/Makefile.am
+++ kicker/applets/clock/Makefile.am
@@ -1,7 +1,7 @@
pic_DATA = lcd.png
picdir = $(kde_datadir)/clockapplet/pics
-INCLUDES = -I$(top_srcdir)/kicker/libkicker $(all_includes)
+INCLUDES = -I$(top_srcdir)/kicker/libkicker -I../../libkicker $(all_includes)
kde_module_LTLIBRARIES = clock_panelapplet.la
--- kicker/applets/clock/clock.cpp
+++ kicker/applets/clock/clock.cpp
@@ -57,6 +57,7 @@
#include <global.h> // libkickermain
+#include "kickerSettings.h"
#include "clock.h"
#include "datepicker.h"
#include "zone.h"
@@ -219,6 +220,7 @@
PlainClock::PlainClock(ClockApplet *applet, Prefs *prefs, QWidget *parent, const char *name)
: QLabel(parent, name), ClockWidget(applet, prefs)
{
+ setWFlags(WNoAutoErase);
setBackgroundOrigin(AncestorOrigin);
loadSettings();
updateClock();
@@ -228,7 +230,7 @@
int PlainClock::preferedWidthForHeight(int ) const
{
QString maxLengthTime = KGlobal::locale()->formatTime( QTime( 23, 59 ), _prefs->plainShowSeconds());
- return fontMetrics().width( maxLengthTime+2 );
+ return fontMetrics().width( maxLengthTime ) + 8;
}
@@ -244,7 +246,7 @@
if (_force || newStr != _timeStr) {
_timeStr = newStr;
- setText(_timeStr);
+ update();
}
}
@@ -266,6 +268,32 @@
return _prefs->plainShowDayOfWeek();
}
+void PlainClock::paintEvent(QPaintEvent *)
+{
+ QPainter p;
+ QPixmap buf(size());
+ buf.fill(this, 0, 0);
+ p.begin(&buf);
+ p.setFont(font());
+ p.setPen(paletteForegroundColor());
+ drawContents(&p);
+ drawFrame(&p);
+ p.end();
+ p.begin(this);
+ p.drawPixmap(0, 0, buf);
+ p.end();
+}
+
+void PlainClock::drawContents(QPainter *p)
+{
+ QRect tr(0, 0, width(), height());
+
+ if (!KickerSettings::transparent())
+ p->drawText(tr, AlignCenter, _timeStr);
+ else
+ _applet->shadowEngine()->drawText(*p, tr, AlignCenter, _timeStr, size());
+}
+
//************************************************************
@@ -834,12 +862,22 @@
p->setFont(_prefs->fuzzyFont());
p->setPen(_prefs->fuzzyForegroundColor());
- if (_applet->getOrientation() == Vertical) {
+
+ QRect tr;
+
+ if (_applet->getOrientation() == Vertical)
+ {
p->rotate(90);
- p->drawText(4, -2, height() - 8, -(width()) + 2, AlignCenter, _timeStr);
- } else {
- p->drawText(4, 2, width() - 8, height() - 4, AlignCenter, _timeStr);
+ tr = QRect(4, -2, height() - 8, -(width()) + 2);
}
+ else
+ tr = QRect(4, 2, width() - 8, height() - 4);
+
+ if (!KickerSettings::transparent())
+ p->drawText(tr, AlignCenter, _timeStr);
+ else
+ _applet->shadowEngine()->drawText(*p, tr, AlignCenter, _timeStr, size());
+
alreadyDrawing = false;
}
@@ -872,7 +910,8 @@
_prefs(new Prefs(sharedConfig())),
zone(new Zone(config())),
menu(0),
- m_tooltip(this)
+ m_tooltip(this),
+ m_shadowEngine(0)
{
DCOPObject::setObjId("ClockApplet");
_prefs->readConfig();
@@ -910,6 +949,7 @@
ClockApplet::~ClockApplet()
{
+ delete m_shadowEngine;
//reverse for the moment
KGlobal::locale()->removeCatalogue("clockapplet");
KGlobal::locale()->removeCatalogue("timezones"); // For time zone translations
@@ -929,6 +969,16 @@
config()->sync();
}
+
+KTextShadowEngine *ClockApplet::shadowEngine()
+{
+ if (!m_shadowEngine)
+ m_shadowEngine = new KTextShadowEngine();
+
+ return m_shadowEngine;
+}
+
+
int ClockApplet::widthForHeight(int h) const
{
if (orientation() == Qt::Vertical)
--- kioslave/media/mediamanager/halbackend.cpp
+++ kioslave/media/mediamanager/halbackend.cpp
@@ -851,13 +851,6 @@
result << tmp;
}
- if ( valids.contains("locale") )
- {
- value = config.readBoolEntry( "locale", true );
- tmp = QString( "locale=%1" ).arg( value ? "true" : "false" );
- result << tmp;
- }
-
if (valids.contains("utf8"))
{
value = config.readBoolEntry("utf8", true);
@@ -878,6 +871,17 @@
result << "shortname=lower";
}
+ // pass our locale to the ntfs-3g driver so it can translate local characters
+ if (valids.contains("locale") && fstype == "ntfs-3g")
+ {
+ // have to obtain LC_CTYPE as returned by the `locale` command
+ // check in the same order as `locale` does
+ char *cType;
+ if ( (cType = getenv("LC_ALL")) || (cType = getenv("LC_CTYPE")) || (cType = getenv("LANG")) ) {
+ result << QString("locale=%1").arg(cType);
+ }
+ }
+
if (valids.contains("sync"))
{
value = config.readBoolEntry("sync", ( valids.contains("flush") && !fstype.endsWith("fat") ) && removable);
@@ -931,7 +935,7 @@
QMap<QString,QString> valids = MediaManagerUtils::splitOptions(options);
- const char *names[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", "locale", 0 };
+ const char *names[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 };
for (int index = 0; names[index]; ++index)
if (valids.contains(names[index]))
config.writeEntry(names[index], valids[names[index]] == "true");
@@ -951,10 +955,6 @@
config.writeEntry("automount", valids["automount"]);
}
- if (valids.contains("locale") ) {
- config.writeEntry("locale", valids["locale"]);
- }
-
return true;
}
@@ -1153,11 +1153,6 @@
soptions << QString("uid=%1").arg(getuid());
}
- if (valids["locale"] == "true")
- {
- soptions << QString("locale=%1").arg( KGlobal::locale()->language() );
- }
-
if (valids["ro"] == "true")
soptions << "ro";
@@ -1182,6 +1177,11 @@
soptions << QString("shortname=%1").arg(valids["shortname"]);
}
+ if (valids.contains("locale"))
+ {
+ soptions << QString("locale=%1").arg(valids["locale"]);
+ }
+
if (valids.contains("journaling"))
{
QString option = valids["journaling"];
--- knetattach/knetattach.ui
+++ knetattach/knetattach.ui
@@ -236,7 +236,7 @@
</sizepolicy>
</property>
<property name="maxValue">
- <number>32768</number>
+ <number>65535</number>
</property>
<property name="minValue">
<number>1</number>
Property changes on: .
___________________________________________________________________
Deleted: svn:mergeinfo
Added: svn:externals
+ admin https://svn.kde.org/home/kde/branches/KDE/3.5/kde-common/admin
Index: kicker/taskbar/taskcontainer.cpp
===================================================================
--- kicker/taskbar/taskcontainer.cpp (revision 854853)
+++ kicker/taskbar/taskcontainer.cpp (revision 854852)
@@ -202,8 +202,6 @@
}
return;
}
-
- KickerTip::Client::updateKickerTip();
QToolButton::update();
}
@@ -1526,93 +1524,89 @@
}
QPixmap pixmap;
- QString name;
- QString details;
-
- if (m_filteredTasks.count() > 0)
+ if (TaskBarSettings::showThumbnails() &&
+ m_filteredTasks.count() == 1)
{
- if (TaskBarSettings::showThumbnails() &&
- m_filteredTasks.count() == 1)
+ Task::Ptr t = m_filteredTasks.first();
+
+ pixmap = t->thumbnail(TaskBarSettings::thumbnailMaxDimension());
+ }
+
+ if (pixmap.isNull() && tasks.last())
+ {
+ // try to load icon via net_wm
+ pixmap = KWin::icon(tasks.last()->window(),
+ KIcon::SizeMedium,
+ KIcon::SizeMedium,
+ true);
+ }
+
+ // Collect all desktops the tasks are on. Sort naturally.
+ QMap<int, QString> desktopMap;
+ bool demandsAttention = false;
+ bool modified = false;
+ bool allDesktops = false;
+ Task::List::const_iterator itEnd = m_filteredTasks.constEnd();
+ for (Task::List::const_iterator it = m_filteredTasks.constBegin(); it != itEnd; ++it)
+ {
+ Task::Ptr t = *it;
+ if (t->demandsAttention())
{
- Task::Ptr t = m_filteredTasks.first();
-
- pixmap = t->thumbnail(TaskBarSettings::thumbnailMaxDimension());
+ demandsAttention = true;
}
-
- if (pixmap.isNull() && tasks.count())
+
+ if (t->isModified())
{
- // try to load icon via net_wm
- pixmap = KWin::icon(tasks.last()->window(),
- KIcon::SizeMedium,
- KIcon::SizeMedium,
- true);
+ modified = true;
}
-
- // Collect all desktops the tasks are on. Sort naturally.
- QMap<int, QString> desktopMap;
- bool demandsAttention = false;
- bool modified = false;
- bool allDesktops = false;
- Task::List::const_iterator itEnd = m_filteredTasks.constEnd();
- for (Task::List::const_iterator it = m_filteredTasks.constBegin(); it != itEnd; ++it)
+
+ if (t->isOnAllDesktops())
{
- Task::Ptr t = *it;
- if (t->demandsAttention())
- {
- demandsAttention = true;
- }
-
- if (t->isModified())
- {
- modified = true;
- }
-
- if (t->isOnAllDesktops())
- {
- allDesktops = true;
- desktopMap.clear();
- }
- else if (!allDesktops)
- {
- desktopMap.insert(t->desktop(),
- TaskManager::the()->desktopName(t->desktop()));
- }
+ allDesktops = true;
+ desktopMap.clear();
}
-
- if (TaskBarSettings::showAllWindows() && KWin::numberOfDesktops() > 1)
+ else if (!allDesktops)
{
- if (desktopMap.isEmpty())
- {
- details.append(i18n("On all desktops"));
- }
- else
- {
- QStringList desktopNames = desktopMap.values();
- details.append(i18n("On %1").arg(QStyleSheet::escape(desktopNames.join(", "))) + "<br>");
- }
+ desktopMap.insert(t->desktop(),
+ TaskManager::the()->desktopName(t->desktop()));
}
-
- if (demandsAttention)
+ }
+
+ QString details;
+
+ if (TaskBarSettings::showAllWindows() && KWin::numberOfDesktops() > 1)
+ {
+ if (desktopMap.isEmpty())
{
- details.append(i18n("Requesting attention") + "<br>");
+ details.append(i18n("On all desktops"));
}
-
- name = this->name();
- if (modified)
+ else
{
- details.append(i18n("Has unsaved changes"));
-
- static QString modStr = "[" + i18n( "modified" ) + "]";
- int modStrPos = name.find(modStr);
-
- if (modStrPos >= 0)
- {
- // +1 because we include a space after the closing brace.
- name.remove(modStrPos, modStr.length() + 1);
- }
+ QStringList desktopNames = desktopMap.values();
+ details.append(i18n("On %1").arg(QStyleSheet::escape(desktopNames.join(", "))) + "<br>");
}
}
+ if (demandsAttention)
+ {
+ details.append(i18n("Requesting attention") + "<br>");
+ }
+
+ QString name = this->name();
+ if (modified)
+ {
+ details.append(i18n("Has unsaved changes"));
+
+ static QString modStr = "[" + i18n( "modified" ) + "]";
+ int modStrPos = name.find(modStr);
+
+ if (modStrPos >= 0)
+ {
+ // +1 because we include a space after the closing brace.
+ name.remove(modStrPos, modStr.length() + 1);
+ }
+ }
+
data.message = QStyleSheet::escape(name);
data.subtext = details;
data.icon = pixmap;
Index: kicker/libkicker/kickertip.cpp
===================================================================
--- kicker/libkicker/kickertip.cpp (revision 854853)
+++ kicker/libkicker/kickertip.cpp (revision 854852)
@@ -128,10 +128,8 @@
// Tickle the information out of the bastard.
client->updateKickerTip(data);
- // Hide the tip if there is nothing to show
if (data.message.isEmpty() && data.subtext.isEmpty() && data.icon.isNull())
{
- hide();
return;
}
@@ -139,7 +137,7 @@
m_richText = new QSimpleRichText("<qt><h3>" + data.message + "</h3><p>" +
data.subtext + "</p></qt>", font(), QString::null, 0,
m_mimeFactory);
- m_richText->setWidth(640);
+ m_richText->setWidth(400);
m_direction = data.direction;
if (KickerSettings::mouseOversShowIcon())
@@ -195,81 +193,11 @@
void KickerTip::mousePressEvent(QMouseEvent * /*e*/)
{
QToolTip::setGloballyEnabled(m_toolTipsEnabled);
+ m_timer.stop();
+ m_frameTimer.stop();
hide();
}
-static void drawRoundRect(QPainter &p, const QRect &r)
-{
- static int line[8] = { 1, 3, 4, 5, 6, 7, 7, 8 };
- static int border[8] = { 1, 2, 1, 1, 1, 1, 1, 1 };
- int xl, xr, y1, y2;
- QPen pen = p.pen();
- bool drawBorder = pen.style() != QPen::NoPen;
-
- if (r.width() < 16 || r.height() < 16)
- {
- p.drawRect(r);
- return;
- }
-
- p.fillRect(r.x(), r.y() + 8, r.width(), r.height() - 16, p.brush());
- p.fillRect(r.x() + 8, r.y(), r.width() - 16, r.height(), p.brush());
-
- p.setPen(p.brush().color());
-
- for (int i = 0; i < 8; i++)
- {
- xl = i;
- xr = r.width() - i - 1;
- y1 = 7;
- y2 = 7 - (line[i] - 1);
-
- p.drawLine(xl, y1, xl, y2);
- p.drawLine(xr, y1, xr, y2);
-
- y1 = r.height() - y1 - 1;
- y2 = r.height() - y2 - 1;
-
- p.drawLine(xl, y1, xl, y2);
- p.drawLine(xr, y1, xr, y2);
-
- }
-
- if (drawBorder)
- {
- p.setPen(pen);
-
- if (r.height() > 16)
- {
- p.drawLine(r.x(), r.y() + 8, r.x(), r.y() + r.height() - 9);
- p.drawLine(r.x() + r.width() - 1, r.y() + 8, r.x() + r.width() - 1, r.y() + r.height() - 9);
- }
- if (r.width() > 16)
- {
- p.drawLine(r.x() + 8, r.y(), r.x() + r.width() - 9, r.y());
- p.drawLine(r.x() + 8, r.y() + r.height() - 1, r.x() + r.width() - 9, r.y() + r.height() - 1);
- }
-
- for (int i = 0; i < 8; i++)
- {
- xl = i;
- xr = r.width() - i - 1;
- y2 = 7 - (line[i] - 1);
- y1 = y2 + (border[i] - 1);
-
- p.drawLine(xl, y1, xl, y2);
- p.drawLine(xr, y1, xr, y2);
-
- y1 = r.height() - y1 - 1;
- y2 = r.height() - y2 - 1;
-
- p.drawLine(xl, y1, xl, y2);
- p.drawLine(xr, y1, xr, y2);
-
- }
- }
-}
-
void KickerTip::plainMask()
{
QPainter maskPainter(&m_mask);
@@ -277,9 +205,9 @@
m_mask.fill(Qt::black);
maskPainter.setBrush(Qt::white);
- maskPainter.setPen(Qt::NoPen);
- //maskPainter.drawRoundRect(m_mask.rect(), 1600 / m_mask.rect().width(), 1600 / m_mask.rect().height());
- drawRoundRect(maskPainter, m_mask.rect());
+ maskPainter.setPen(Qt::white);
+ maskPainter.drawRoundRect(m_mask.rect(), 1600 / m_mask.rect().width(),
+ 1600 / m_mask.rect().height());
setMask(m_mask);
m_frameTimer.stop();
}
@@ -291,9 +219,9 @@
m_mask.fill(Qt::black);
maskPainter.setBrush(Qt::white);
- maskPainter.setPen(Qt::NoPen);
- //maskPainter.drawRoundRect(m_mask.rect(), 1600 / m_mask.rect().width(), 1600 / m_mask.rect().height());
- drawRoundRect(maskPainter, m_mask.rect());
+ maskPainter.setPen(Qt::white);
+ maskPainter.drawRoundRect(m_mask.rect(), 1600 / m_mask.rect().width(),
+ 1600 / m_mask.rect().height());
m_dissolveSize += m_dissolveDelta;
@@ -307,7 +235,7 @@
for (y = 0; y < height() + size; y += size)
{
x = width();
- s = 4 * m_dissolveSize * x / 128;
+ s = m_dissolveSize * x / 128;
for (; x > -size; x -= size, s -= 2)
{
if (s < 0)
@@ -383,10 +311,10 @@
// draw background
QPainter bufferPainter(&m_pixmap);
- bufferPainter.setPen(colorGroup().foreground());
+ bufferPainter.setPen(Qt::black);
bufferPainter.setBrush(colorGroup().background());
- //bufferPainter.drawRoundRect(0, 0, width, height, 1600 / width, 1600 / height);
- drawRoundRect(bufferPainter, QRect(0, 0, width, height));
+ bufferPainter.drawRoundRect(0, 0, width, height,
+ 1600 / width, 1600 / height);
// draw icon if present
if (!m_icon.isNull())
@@ -403,11 +331,11 @@
QColorGroup cg = colorGroup();
cg.setColor(QColorGroup::Text, cg.background().dark(115));
int shadowOffset = QApplication::reverseLayout() ? -1 : 1;
- m_richText->draw(&bufferPainter, textX + shadowOffset, textY + 1, QRect(), cg);
+ m_richText->draw(&bufferPainter, 5 + textX + shadowOffset, textY + 1, QRect(), cg);
// draw text
cg = colorGroup();
- m_richText->draw(&bufferPainter, textX, textY, rect(), cg);
+ m_richText->draw(&bufferPainter, 5 + textX, textY, rect(), cg);
}
}
@@ -431,7 +359,11 @@
void KickerTip::untipFor(const QWidget* w)
{
if (isTippingFor(w))
+ {
+ tipFor(0);
+ m_timer.stop();
hide();
+ }
}
bool KickerTip::isTippingFor(const QWidget* w) const
@@ -476,8 +408,7 @@
void KickerTip::hide()
{
- tipFor(0);
- m_timer.stop();
+ m_tippingFor = 0;
m_frameTimer.stop();
QWidget::hide();
}
@@ -545,6 +476,8 @@
break;
case QEvent::MouseButtonPress:
QToolTip::setGloballyEnabled(m_toolTipsEnabled);
+ m_timer.stop();
+ m_frameTimer.stop();
hide();
default:
break;
Index: kicker/libkicker/simplebutton.cpp
===================================================================
--- kicker/libkicker/simplebutton.cpp (revision 854853)
+++ kicker/libkicker/simplebutton.cpp (revision 854852)
@@ -32,8 +32,6 @@
#include <kipc.h>
#include <kstandarddirs.h>
-#define BUTTON_MARGIN KDialog::spacingHint()
-
SimpleButton::SimpleButton(QWidget *parent, const char *name)
: QButton(parent, name),
m_highlight(false),
@@ -72,7 +70,7 @@
if (!pm)
return QButton::sizeHint();
else
- return QSize(pm->width() + BUTTON_MARGIN, pm->height() + BUTTON_MARGIN);
+ return QSize(pm->width() + KDialog::spacingHint(), pm->height() + KDialog::spacingHint());
}
QSize SimpleButton::minimumSizeHint() const
@@ -109,7 +107,7 @@
int w = width();
int ph = pix.height();
int pw = pix.width();
- int margin = BUTTON_MARGIN;
+ int margin = KDialog::spacingHint();
QPoint origin(margin / 2, margin / 2);
if (ph < (h - margin))