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))
openSUSE Build Service is sponsored by