diff options
Diffstat (limited to 'opensuse/tdebase')
156 files changed, 0 insertions, 38016 deletions
diff --git a/opensuse/tdebase/3_5_BRANCH.diff b/opensuse/tdebase/3_5_BRANCH.diff deleted file mode 100644 index bff4be17d..000000000 --- a/opensuse/tdebase/3_5_BRANCH.diff +++ /dev/null @@ -1,1176 +0,0 @@ -package: kdebase-3.5.10.tar.bz2 -kdemod: kdebase -Index: BRANCH_STATUS -=================================================================== ---- /dev/null -+++ BRANCH_STATUS -@@ -0,0 +1,2 @@ -+current HEAD: 865247 -+svn di between //tags/KDE/3.5.10/kdebase and //branches/KDE/3.5/kdebase -Index: kcontrol/background/bgrender.cpp -=================================================================== ---- kcontrol/background/bgrender.cpp.orig -+++ kcontrol/background/bgrender.cpp -@@ -1163,9 +1163,8 @@ void KVirtualBGRenderer::desktopResized( - m_pPixmap = new QPixmap(m_size); - m_pPixmap->fill(Qt::black); - } -- -- for (unsigned i=0; i<m_numRenderers; ++i) -- m_renderer[i]->desktopResized(); -+ -+ initRenderers(); - } - - -Index: kcontrol/info/opengl.cpp -=================================================================== ---- kcontrol/info/opengl.cpp.orig -+++ kcontrol/info/opengl.cpp -@@ -608,7 +608,6 @@ static QListViewItem *get_gl_info(Displa - } - else { - kdDebug() << "Error: glXMakeCurrent failed\n"; -- glXDestroyContext(dpy, ctx); - } - - glXDestroyContext(dpy, ctx); -Index: kicker/taskbar/taskbar.cpp -=================================================================== ---- kicker/taskbar/taskbar.cpp.orig -+++ kicker/taskbar/taskbar.cpp -@@ -61,8 +61,6 @@ TaskBar::TaskBar( QWidget *parent, const - m_textShadowEngine(0), - m_ignoreUpdates(false) - { -- setFrameStyle( NoFrame ); -- - arrowType = LeftArrow; - blocklayout = true; - -@@ -81,6 +79,8 @@ TaskBar::TaskBar( QWidget *parent, const - 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 @@ void TaskBar::reLayoutEventually() - - if (!blocklayout && !m_ignoreUpdates) - { -- m_relayoutTimer.start(100, true); -+ m_relayoutTimer.start(25, true); - } - } - -@@ -814,24 +814,16 @@ void TaskBar::reLayout() - 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()); -Index: kicker/taskbar/taskbar.h -=================================================================== ---- kicker/taskbar/taskbar.h.orig -+++ kicker/taskbar/taskbar.h -@@ -63,12 +63,11 @@ public: - - QImage* blendGradient(const QSize& size); - -- void setBackground(); -- - KTextShadowEngine *textShadowEngine(); - - public slots: - void configure(); -+ void setBackground(); - - signals: - void containerCountChanged(); -@@ -98,7 +97,6 @@ protected: - void viewportMouseReleaseEvent( QMouseEvent* ); - void viewportMouseDoubleClickEvent( QMouseEvent* ); - void viewportMouseMoveEvent( QMouseEvent* ); -- void viewportResizeEvent( QResizeEvent * ); - void wheelEvent(QWheelEvent*); - void propagateMouseEvent( QMouseEvent* ); - void resizeEvent( QResizeEvent* ); -Index: kicker/libkicker/panner.cpp -=================================================================== ---- kicker/libkicker/panner.cpp.orig -+++ kicker/libkicker/panner.cpp -@@ -35,28 +35,28 @@ CONNECTION WITH THE SOFTWARE OR THE USE - #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 @@ Panner::~Panner() - { - } - -+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 @@ void Panner::setOrientation(Orientation - 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 @@ void Panner::reallyUpdateScrollButtons() - delta = contentsHeight() - height(); - } - -- if (delta > 1) -+ if (delta >= 1) - { - createScrollButtons(); - -@@ -184,21 +214,11 @@ void Panner::reallyUpdateScrollButtons() - // 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 @@ void Panner::updateScrollButtons() - _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(); -+} -Index: kicker/libkicker/panner.h -=================================================================== ---- kicker/libkicker/panner.h.orig -+++ kicker/libkicker/panner.h -@@ -24,14 +24,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE - #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 @@ public: - - 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 @@ private: - 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 -Index: kicker/extensions/taskbar/taskbarextension.cpp -=================================================================== ---- kicker/extensions/taskbar/taskbarextension.cpp.orig -+++ kicker/extensions/taskbar/taskbarextension.cpp -@@ -170,7 +170,6 @@ void TaskBarExtension::setBackgroundThem - } - - unsetPalette(); -- m_container->unsetPalette(); - - if (KickerSettings::useBackgroundTheme()) - { -@@ -215,17 +214,17 @@ void TaskBarExtension::setBackgroundThem - 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) -Index: kicker/kicker/core/container_extension.cpp -=================================================================== ---- kicker/kicker/core/container_extension.cpp.orig -+++ kicker/kicker/core/container_extension.cpp -@@ -126,6 +126,7 @@ void ExtensionContainer::init() - connect(Kicker::the()->kwinModule(), SIGNAL(currentDesktopChanged(int)), - this, SLOT( currentDesktopChanged(int))); - -+ setBackgroundOrigin(AncestorOrigin); - setFrameStyle(NoFrame); - setLineWidth(0); - setMargin(0); -@@ -163,7 +164,7 @@ void ExtensionContainer::init() - { - _userHidden = static_cast<UserHidden>(tmp); - } -- -+ - if (m_extension) - { - // if we have an extension, we need to grab the extension-specific -Index: kicker/kicker/core/containerarea.cpp -=================================================================== ---- kicker/kicker/core/containerarea.cpp.orig -+++ kicker/kicker/core/containerarea.cpp -@@ -90,15 +90,12 @@ ContainerArea::ContainerArea(KConfig* _c - 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(); -Index: kicker/kicker/core/panelextension.cpp -=================================================================== ---- kicker/kicker/core/panelextension.cpp.orig -+++ kicker/kicker/core/panelextension.cpp -@@ -74,7 +74,6 @@ PanelExtension::PanelExtension(const QSt - connect(_containerArea, SIGNAL(maintainFocus(bool)), this, SIGNAL(maintainFocus(bool))); - _layout->addWidget(_containerArea); - -- _containerArea->setFrameStyle(QFrame::NoFrame); - _containerArea->viewport()->installEventFilter(this); - _containerArea->configure(); - -Index: kicker/applets/systemtray/systemtrayapplet.h -=================================================================== ---- kicker/applets/systemtray/systemtrayapplet.h.orig -+++ kicker/applets/systemtray/systemtrayapplet.h -@@ -118,6 +118,7 @@ public: - TrayEmbed( bool kdeTray, QWidget* parent = NULL ); - bool kdeTray() const { return kde_tray; } - void setBackground(); -+ void getIconSize(int defaultIconSize); - private: - bool kde_tray; - }; -Index: kicker/applets/systemtray/systemtrayapplet.cpp -=================================================================== ---- kicker/applets/systemtray/systemtrayapplet.cpp.orig -+++ kicker/applets/systemtray/systemtrayapplet.cpp -@@ -54,6 +54,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE - - #include <X11/Xlib.h> - -+#define ICON_MARGIN 1 -+ - extern "C" - { - KDE_EXPORT KPanelApplet* init(QWidget *parent, const QString& configFile) -@@ -459,9 +461,9 @@ void SystemTrayApplet::embedWindow( WId - 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 @@ void SystemTrayApplet::embedWindow( WId - } - else - { -- emb->hide(); -+ //emb->hide(); - emb->setBackground(); - emb->show(); - m_shownWins.append(emb); -@@ -515,7 +517,7 @@ void SystemTrayApplet::updateVisibleWins - { - for (; emb != lastEmb; ++emb) - { -- (*emb)->hide(); -+ //(*emb)->hide(); - (*emb)->setBackground(); - (*emb)->show(); - } -@@ -744,8 +746,7 @@ int SystemTrayApplet::widthForHeight(int - } - - 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 SystemTrayApplet::heightForWidth(int - } - - 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::moveEvent( QMoveE - } - - --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 @@ void SystemTrayApplet::layoutTray() - 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 @@ void SystemTrayApplet::layoutTray() - - // - // 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 @@ void SystemTrayApplet::layoutTray() - 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 @@ void SystemTrayApplet::layoutTray() - 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 @@ void SystemTrayApplet::layoutTray() - } - 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 @@ void SystemTrayApplet::layoutTray() - 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 @@ void SystemTrayApplet::layoutTray() - 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 @@ TrayEmbed::TrayEmbed( bool kdeTray, QWid - : 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 @@ void TrayEmbed::setBackground() - - if (!isHidden()) - { -- hide(); -- show(); -+ XClearArea(x11Display(), embeddedWinId(), 0, 0, 0, 0, True); - } -- //XClearArea(x11Display(), embeddedWinId(), 0, 0, 0, 0, True); - } - -Index: kicker/applets/clock/clock.h -=================================================================== ---- kicker/applets/clock/clock.h.orig -+++ kicker/applets/clock/clock.h -@@ -41,6 +41,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE - - #include <kickertip.h> - #include "settings.h" -+#include "kshadowengine.h" - - class QTimer; - class QBoxLayout; -@@ -152,6 +153,9 @@ class PlainClock : public QLabel, public - bool showDayOfWeek(); - - protected: -+ void paintEvent(QPaintEvent *e); -+ void drawContents(QPainter *p); -+ - QString _timeStr; - }; - -@@ -279,6 +283,8 @@ class ClockApplet : public KPanelApplet, - QDate clockGetDate(); - - virtual void updateKickerTip(KickerTip::Data&); -+ -+ KTextShadowEngine *shadowEngine(); - - k_dcop: - void reconfigure(); -@@ -335,6 +341,7 @@ class ClockApplet : public KPanelApplet, - QStringList _remotezonelist; - KPopupMenu* menu; - ClockAppletToolTip m_tooltip; -+ KTextShadowEngine *m_shadowEngine; - }; - - -Index: kicker/applets/clock/Makefile.am -=================================================================== ---- kicker/applets/clock/Makefile.am.orig -+++ 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 - -Index: kicker/applets/clock/clock.cpp -=================================================================== ---- kicker/applets/clock/clock.cpp.orig -+++ kicker/applets/clock/clock.cpp -@@ -57,6 +57,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE - - #include <global.h> // libkickermain - -+#include "kickerSettings.h" - #include "clock.h" - #include "datepicker.h" - #include "zone.h" -@@ -219,6 +220,7 @@ ClockWidget::~ClockWidget() - 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 @@ PlainClock::PlainClock(ClockApplet *appl - 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 @@ void PlainClock::updateClock() - - if (_force || newStr != _timeStr) { - _timeStr = newStr; -- setText(_timeStr); -+ update(); - } - } - -@@ -266,6 +268,32 @@ bool PlainClock::showDayOfWeek() - 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 @@ void FuzzyClock::drawContents(QPainter * - - 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 @@ ClockApplet::ClockApplet(const QString& - _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(const QString& - - 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 @@ ClockApplet::~ClockApplet() - 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) -Index: kioslave/media/mediamanager/halbackend.cpp -=================================================================== ---- kioslave/media/mediamanager/halbackend.cpp.orig -+++ kioslave/media/mediamanager/halbackend.cpp -@@ -851,13 +851,6 @@ QStringList HALBackend::mountoptions(con - 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 @@ QStringList HALBackend::mountoptions(con - 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 @@ bool HALBackend::setMountoptions(const Q - - 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 @@ bool HALBackend::setMountoptions(const Q - config.writeEntry("automount", valids["automount"]); - } - -- if (valids.contains("locale") ) { -- config.writeEntry("locale", valids["locale"]); -- } -- - return true; - } - -@@ -1153,11 +1153,6 @@ QString HALBackend::mount(const Medium * - 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 @@ QString HALBackend::mount(const Medium * - 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"]; -Index: knetattach/knetattach.ui -=================================================================== ---- knetattach/knetattach.ui.orig -+++ 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> diff --git a/opensuse/tdebase/access.diff b/opensuse/tdebase/access.diff deleted file mode 100644 index 9f105550b..000000000 --- a/opensuse/tdebase/access.diff +++ /dev/null @@ -1,51 +0,0 @@ -Index: kcontrol/access/kaccess.cpp -=================================================================== ---- kcontrol/access/kaccess.cpp.orig -+++ kcontrol/access/kaccess.cpp -@@ -216,7 +216,7 @@ void KAccessApp::readSettings() - xkb->ctrls->debounce_delay = config->readNumEntry("BounceKeysDelay", 500); - - // gestures for enabling the other features -- _gestures = config->readBoolEntry("Gestures", true); -+ _gestures = config->readBoolEntry("Gestures", ::access("/opt/kde3/bin/kmag", X_OK) == 0); - if (_gestures) - xkb->ctrls->enabled_ctrls |= XkbAccessXKeysMask; - else -@@ -241,7 +241,7 @@ void KAccessApp::readSettings() - else - xkb->ctrls->ax_options &= ~(XkbAX_FeatureFBMask | XkbAX_SlowWarnFBMask); - -- _gestureConfirmation = config->readBoolEntry("GestureConfirmation", true); -+ _gestureConfirmation = config->readBoolEntry("GestureConfirmation", ::access("/opt/kde3/bin/kmag", X_OK) == 0); - - _kNotifyModifiers = config->readBoolEntry("kNotifyModifiers", false); - _kNotifyAccessX = config->readBoolEntry("kNotifyAccessX", false); -Index: kcontrol/access/kcmaccess.cpp -=================================================================== ---- kcontrol/access/kcmaccess.cpp.orig -+++ kcontrol/access/kcmaccess.cpp -@@ -7,6 +7,7 @@ - - - #include <stdlib.h> -+#include <unistd.h> - #include <math.h> - - #include <dcopref.h> -@@ -686,12 +687,14 @@ void KAccessConfig::load( bool useDefaul - bounceKeysDelay->setValue(config->readNumEntry("BounceKeysDelay", 500)); - bounceKeysRejectBeep->setChecked(config->readBoolEntry("BounceKeysRejectBeep", true)); - -- gestures->setChecked(config->readBoolEntry("Gestures", true)); -+ gestures->setChecked(config->readBoolEntry("Gestures", -+ ::access("/opt/kde3/bin/kmag", X_OK) == 0)); - timeout->setChecked(config->readBoolEntry("AccessXTimeout", false)); - timeoutDelay->setValue(config->readNumEntry("AccessXTimeoutDelay", 30)); - - accessxBeep->setChecked(config->readBoolEntry("AccessXBeep", true)); -- gestureConfirmation->setChecked(config->readBoolEntry("GestureConfirmation", false)); -+ gestureConfirmation->setChecked(config->readBoolEntry("GestureConfirmation", -+ ::access("/opt/kde3/bin/kmag", X_OK) == 0)); - kNotifyAccessX->setChecked(config->readBoolEntry("kNotifyAccessX", false)); - - delete config; diff --git a/opensuse/tdebase/applet-lock-logout.diff b/opensuse/tdebase/applet-lock-logout.diff deleted file mode 100644 index 75363e768..000000000 --- a/opensuse/tdebase/applet-lock-logout.diff +++ /dev/null @@ -1,122 +0,0 @@ -Index: kicker/applets/lockout/lockout.cpp -=================================================================== ---- kicker/applets/lockout/lockout.cpp.orig -+++ kicker/applets/lockout/lockout.cpp -@@ -31,6 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE - #include <qtoolbutton.h> - #include <qstyle.h> - #include <qtooltip.h> -+#include <qobjectlist.h> - - #include <dcopclient.h> - -@@ -54,7 +55,7 @@ extern "C" - } - - Lockout::Lockout( const QString& configFile, QWidget *parent, const char *name) -- : KPanelApplet( configFile, KPanelApplet::Normal, 0, parent, name ), bTransparent( false ) -+ : KPanelApplet( configFile, KPanelApplet::Normal, 0, parent, name ), bTransparent( false ), bAlternateButtonOrder( false ) - { - KConfig *conf = config(); - conf->setGroup("lockout"); -@@ -71,8 +72,16 @@ Lockout::Lockout( const QString& configF - layout->setMargin( 0 ); - layout->setSpacing( 0 ); - -- lockButton = new SimpleButton( this, "lock"); -- logoutButton = new SimpleButton( this, "logout"); -+ bAlternateButtonOrder = !conf->readBoolEntry( "OriginalLayout",true ); -+ -+ if (bAlternateButtonOrder) { -+ lockButton = new SimpleButton( this, "lock"); -+ logoutButton = new SimpleButton( this, "logout"); -+ } -+ else { -+ logoutButton = new SimpleButton( this, "logout"); -+ lockButton = new SimpleButton( this, "lock"); -+ } - - QToolTip::add( lockButton, i18n("Lock the session") ); - QToolTip::add( logoutButton, i18n("Log out") ); -@@ -204,12 +213,15 @@ bool Lockout::eventFilter( QObject *o, Q - this, SLOT( lock() ) ); - popup->insertSeparator(); - -+ popup->insertItem( i18n( "&Alternate Button Order" ), 90 ); - i18n("&Transparent"); - //popup->insertItem( i18n( "&Transparent" ), 100 ); - popup->insertItem( SmallIcon( "configure" ), - i18n( "&Configure Screen Saver..." ), - this, SLOT( slotLockPrefs() ) ); - -+ popup->setItemChecked( 90, bAlternateButtonOrder ); -+ popup->connectItem(90, this, SLOT( slotButtonOrder() ) ); - //popup->setItemChecked( 100, bTransparent ); - //popup->connectItem(100, this, SLOT( slotTransparent() ) ); - //if (conf->entryIsImmutable( "Transparent" )) -@@ -226,6 +238,7 @@ bool Lockout::eventFilter( QObject *o, Q - popup->insertItem( SmallIcon( "exit" ), i18n("&Log Out..."), - this, SLOT( logout() ) ); - popup->insertSeparator(); -+ popup->insertItem( i18n( "&Alternate Button Order" ), 90 ); - //popup->insertItem( i18n( "&Transparent" ), 100 ); - popup->insertItem( SmallIcon( "configure" ), - i18n( "&Configure Session Manager..." ), -@@ -235,6 +248,9 @@ bool Lockout::eventFilter( QObject *o, Q - //popup->connectItem(100, this, SLOT( slotTransparent() ) ); - //if (conf->entryIsImmutable( "Transparent" )) - // popup->setItemEnabled( 100, false ); -+ popup->setItemChecked( 90, bAlternateButtonOrder ); -+ popup->connectItem(90, this, SLOT( slotButtonOrder() ) ); -+ - popup->exec( me->globalPos() ); - delete popup; - -@@ -263,6 +279,27 @@ void Lockout::slotTransparent() - conf->sync(); - } - -+void Lockout::slotButtonOrder() -+{ -+ QObject* child = children()->getFirst(); -+ -+ if (bAlternateButtonOrder) -+ child = lockButton; -+ else -+ child = logoutButton; -+ -+ removeChild(child); -+ insertChild(child); -+ update(); -+ -+ bAlternateButtonOrder = !bAlternateButtonOrder; -+ -+ KConfig* conf = config(); -+ conf->setGroup("lockout"); -+ conf->writeEntry( "OriginalLayout", !bAlternateButtonOrder ); -+ conf->sync(); -+} -+ - void Lockout::slotLogoutPrefs() - { - // Run the logout settings. -Index: kicker/applets/lockout/lockout.h -=================================================================== ---- kicker/applets/lockout/lockout.h.orig -+++ kicker/applets/lockout/lockout.h -@@ -36,6 +36,7 @@ private slots: - - void slotLockPrefs(); - void slotLogoutPrefs(); -+ void slotButtonOrder(); - void slotTransparent(); - void slotIconChanged(); - -@@ -47,6 +48,7 @@ private: - QBoxLayout *layout; - - bool bTransparent; -+ bool bAlternateButtonOrder; - }; - - #endif // LOCKOUT_H diff --git a/opensuse/tdebase/arts-start-on-demand.diff b/opensuse/tdebase/arts-start-on-demand.diff deleted file mode 100644 index 27fcc2292..000000000 --- a/opensuse/tdebase/arts-start-on-demand.diff +++ /dev/null @@ -1,98 +0,0 @@ -Index: kcontrol/arts/Makefile.am -=================================================================== ---- kcontrol/arts/Makefile.am.orig -+++ kcontrol/arts/Makefile.am -@@ -1,3 +1,9 @@ -+bin_PROGRAMS = arts-start -+ -+arts_start_SOURCES = arts-start.cpp -+arts_start_LDFLAGS = $(all_libraries) -+arts_start_LDADD = $(LIB_KDECORE) -+ - kde_module_LTLIBRARIES = kcm_arts.la - - kcm_arts_la_SOURCES = arts.cpp generaltab.ui hardwaretab.ui krichtextlabel.cpp -Index: kcontrol/arts/arts-start.cpp -=================================================================== ---- /dev/null -+++ kcontrol/arts/arts-start.cpp -@@ -0,0 +1,79 @@ -+/* -+ -+ Copyright (C) 2007 Lubos Lunak <l.lunak@suse.cz> -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ -+ Permission is also granted to link this program with the Qt -+ library, treating Qt like a library that normally accompanies the -+ operating system kernel, whether or not that is in fact the case. -+ -+*/ -+ -+#include <kconfig.h> -+#include <kinstance.h> -+#include <stdlib.h> -+#include <unistd.h> -+#include <X11/Xlib.h> -+ -+static bool arts_running() -+ { -+ int status = system( "artsshell status >/dev/null 2>/dev/null" ); -+ return WIFEXITED( status ) && WEXITSTATUS( status ) == 0; -+ } -+ -+int main() -+ { -+ // Try to launch arts this way only a single time in the whole session. After first -+ // try set X property on the root window and following attemps bail out if it's set. -+ Display* dpy = XOpenDisplay( NULL ); -+ if( dpy == NULL ) // don't launch arts without X -+ return 4; -+ Atom atom = XInternAtom( dpy, "_KDE_ARTS_TRIED", False ); -+ int count; -+ Atom* atoms = XListProperties( dpy, DefaultRootWindow( dpy ), &count ); -+ bool tried = false; -+ if( atoms != NULL ) -+ { -+ for( int i = 0; -+ i < count; -+ ++i ) -+ if( atoms[ i ] == atom ) -+ { -+ tried = true; -+ break; -+ } -+ } -+ if( tried ) // this should probably wait, but artsshell will result in calling this too -+ return 2; -+ long dummy = 1; -+ XChangeProperty( dpy, DefaultRootWindow( dpy ), atom, atom, 32, PropModeReplace, (const unsigned char*)&dummy, 1 ); -+ XCloseDisplay( dpy ); -+ KInstance inst( "arts-start" ); -+ KConfig config("kcmartsrc", true, false); -+ config.setGroup("Arts"); -+ if( !config.readBoolEntry("StartServer",true)) -+ return 2; -+ system( "kcminit arts" ); -+ for( int i = 0; -+ i < 50; // give it 5 seconds -+ ++i ) -+ { -+ if( arts_running()) -+ return 0; -+ usleep( 100 * 1000 ); -+ } -+ return 3; -+ } diff --git a/opensuse/tdebase/artwork.diff b/opensuse/tdebase/artwork.diff deleted file mode 100644 index ba13e5757..000000000 --- a/opensuse/tdebase/artwork.diff +++ /dev/null @@ -1,35 +0,0 @@ -Index: kioslave/fish/fish.protocol -=================================================================== ---- kioslave/fish/fish.protocol.orig -+++ kioslave/fish/fish.protocol -@@ -10,7 +10,7 @@ makedir=true - deleting=true - linking=true - moving=true --Icon=remote -+Icon=folder_html - Description=A kioslave for the FISH protocol - Description[af]='n Kioslave vir die FISH protokol - Description[be]=Kioslave Ð´Ð»Ñ Ð¿Ñ€Ð°Ñ‚Ð°ÐºÐ¾Ð»Ð° FISH -Index: kioslave/floppy/floppy.protocol -=================================================================== ---- kioslave/floppy/floppy.protocol.orig -+++ kioslave/floppy/floppy.protocol -@@ -9,6 +9,6 @@ writing=true - makedir=true - deleting=true - moving=true --Icon=3floppy_mount -+Icon=3floppy_unmount - DocPath=kioslave/floppy.html - Class=:local -Index: kioslave/nfs/nfs.protocol -=================================================================== ---- kioslave/nfs/nfs.protocol.orig -+++ kioslave/nfs/nfs.protocol -@@ -11,4 +11,4 @@ deleting=true - linking=true - moving=true - DocPath=kioslave/nfs.html --Icon=nfs_mount -+Icon=nfs_unmount diff --git a/opensuse/tdebase/autorun.patch b/opensuse/tdebase/autorun.patch deleted file mode 100644 index 962740cdc..000000000 --- a/opensuse/tdebase/autorun.patch +++ /dev/null @@ -1,27 +0,0 @@ -Index: kioslave/media/medianotifier/medianotifier.cpp -=================================================================== ---- kioslave/media/medianotifier/medianotifier.cpp.orig -+++ kioslave/media/medianotifier/medianotifier.cpp -@@ -133,7 +133,7 @@ bool MediaNotifier::autostart( const KFi - // be checked for the following Autostart files in order of precedence: - // .autorun, autorun, autorun.sh - QStringList autorun_list; -- autorun_list << ".autorun" << "autorun" << "autorun.sh"; -+ autorun_list << ".autorun" << "autorun" << "autorun.sh" << "setup.sh" << "media.1/patches"; - - QStringList::iterator it = autorun_list.begin(); - QStringList::iterator end = autorun_list.end(); -@@ -191,7 +191,12 @@ bool MediaNotifier::execAutorun( const K - // with the current working directory ( CWD ) set to the root - // directory of the medium. - KProcess proc; -- proc << "sh" << autorunFile; -+ if (autorunFile == "setup.sh") -+ proc << "kdesu" << autorunFile; -+ else if (autorunFile == "media.1/patches") -+ proc << "kdesu" << "--nonewdcop" << "/sbin/yast2" << "online_update" << ".cd_default"; -+ else -+ proc << "sh" << autorunFile; - proc.setWorkingDirectory( path ); - proc.start(); - proc.detach(); diff --git a/opensuse/tdebase/background_default.diff b/opensuse/tdebase/background_default.diff deleted file mode 100644 index 71f9a96bb..000000000 --- a/opensuse/tdebase/background_default.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: kcontrol/background/bgwallpaper.cpp -=================================================================== ---- kcontrol/background/bgwallpaper.cpp.orig -+++ kcontrol/background/bgwallpaper.cpp -@@ -149,7 +149,7 @@ void BGMultiWallpaperDialog::slotAdd() - mimeTypes += "image/svg+xml"; - #endif - -- KFileDialog fileDialog(KGlobal::dirs()->findDirs("wallpaper", "").first(), -+ KFileDialog fileDialog("/usr/share/wallpapers", - mimeTypes.join( " " ), this, - 0L, true); - diff --git a/opensuse/tdebase/baselibs.conf b/opensuse/tdebase/baselibs.conf deleted file mode 100644 index 29e28ab1d..000000000 --- a/opensuse/tdebase/baselibs.conf +++ /dev/null @@ -1,2 +0,0 @@ -kdebase3 -kdebase3-runtime diff --git a/opensuse/tdebase/beagle-0.3.diff b/opensuse/tdebase/beagle-0.3.diff deleted file mode 100644 index 6e65be590..000000000 --- a/opensuse/tdebase/beagle-0.3.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- kicker/configure.in.in 2008/01/28 11:03:28 1.1 -+++ kicker/configure.in.in 2008/01/28 11:03:45 -@@ -42,14 +42,14 @@ - AC_SUBST(GLIB_LIBADD) - AC_SUBST(GLIB_LDFLAGS) - --dnl Check for libbeagle 0.2.0 -+dnl Check for libbeagle 0.3.0 - # LIBBEAGLE_CFLAGS: cflags for compiling libbeagle dependant sources - # LIBBEAGLE_LIBADD: libbeagle libraries (-l options) - # LIBBEAGLE_LDFLAGS: flags containing path to libbeagle libraries (-L options) - --LIBBEAGLE_PACKAGES="libbeagle-0.0" --LIBBEAGLE_VERSION="0.2.4" --AC_MSG_CHECKING(for libbeagle-0.2.4 (at least $LIBBEAGLE_VERSION)) -+LIBBEAGLE_PACKAGES="libbeagle-1.0" -+LIBBEAGLE_VERSION="0.3.0" -+AC_MSG_CHECKING(for libbeagle-0.3.0 (at least $LIBBEAGLE_VERSION)) - - if $PKG_CONFIG --atleast-pkgconfig-version 0.15 ; then - if $PKG_CONFIG --atleast-version $LIBBEAGLE_VERSION $LIBBEAGLE_PACKAGES >/dev/null 2>&1 ; then diff --git a/opensuse/tdebase/bnc.desktop b/opensuse/tdebase/bnc.desktop deleted file mode 100644 index c5db233cf..000000000 --- a/opensuse/tdebase/bnc.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[Desktop Entry] -Charset= -Hidden=false -Keys=bnc -Name=Novell Bugzilla -Query=https://bugzilla.novell.com/show_bug.cgi?id=\\{@} -ServiceTypes=SearchProvider -Type=Service diff --git a/opensuse/tdebase/bnc584223.diff b/opensuse/tdebase/bnc584223.diff deleted file mode 100644 index 370abf150..000000000 --- a/opensuse/tdebase/bnc584223.diff +++ /dev/null @@ -1,189 +0,0 @@ ---- kdebase-3.5.10/kdm/backend/ctrl.c.sav 2010-03-23 13:22:28.000000000 +0100 -+++ kdebase-3.5.10/kdm/backend/ctrl.c 2010-03-23 14:21:48.619350322 +0100 -@@ -78,7 +78,25 @@ nukeSock( struct cmdsock *cs ) - } - - -+#ifdef HONORS_SOCKET_PERMS - static CtrlRec ctrl = { 0, 0, -1, 0, 0, { -1, 0, 0 } }; -+#else -+static CtrlRec ctrl = { 0, 0, 0, -1, 0, 0, { -1, 0, 0 } }; -+ -+static int mkTempDir( char *dir ) -+{ -+ int i, l = strlen( dir ) - 6; -+ -+ for (i = 0; i < 100; i++) { -+ randomStr( dir + l ); -+ if (!mkdir( dir, 0700 )) -+ return True; -+ if (errno != EEXIST) -+ break; -+ } -+ return False; -+} -+#endif - - void - openCtrl( struct display *d ) -@@ -140,22 +158,50 @@ openCtrl( struct display *d ) - if (strlen( cr->path ) >= sizeof(sa.sun_path)) - LogError( "path %\"s too long; no control sockets will be available\n", - cr->path ); -- else if (mkdir( sockdir, 0755 ) && errno != EEXIST) -+#ifdef HONORS_SOCKET_PERMS -+ else if (mkdir( sockdir, 0700 ) && errno != EEXIST) - LogError( "mkdir %\"s failed; no control sockets will be available\n", - sockdir ); -+ else if (unlink( cr->path ) && errno != ENOENT) -+ LogError( "unlink %\"s failed: %m; control socket will not be available\n", -+ cr->path ); - else { -- if (!d) -- chown( sockdir, -1, fifoGroup ); -+#else -+ else if (unlink( sockdir ) && errno != ENOENT) -+ LogError( "unlink %\"s failed: %m; control socket will not be available\n", -+ sockdir ); -+ else if (!strApp( &cr->realdir, sockdir, "-XXXXXX", (char *)0)) -+ ; -+ else if (!mkTempDir( cr->realdir )) { -+ LogError( "mkdir %\"s failed: %m; control socket will not be available\n", -+ cr->realdir ); -+ free( cr->realdir ); -+ cr->realdir = 0; -+ } else if (symlink( cr->realdir, sockdir )) { -+ LogError( "symlink %\"s => %\"s failed: %m; control socket will not be available\n", -+ sockdir, cr->realdir ); -+ rmdir( cr->realdir ); -+ free( cr->realdir ); -+ cr->realdir = 0; -+ } else { -+ chown( sockdir, 0, d ? 0 : fifoGroup ); - chmod( sockdir, 0750 ); -+#endif - if ((cr->fd = socket( PF_UNIX, SOCK_STREAM, 0 )) < 0) - LogError( "Cannot create control socket\n" ); - else { -- unlink( cr->path ); - sa.sun_family = AF_UNIX; - strcpy( sa.sun_path, cr->path ); - if (!bind( cr->fd, (struct sockaddr *)&sa, sizeof(sa) )) { - if (!listen( cr->fd, 5 )) { -+#ifdef HONORS_SOCKET_PERMS -+ chmod( cr->path, 0660 ); -+ if (!d) -+ chown( cr->path, -1, fifoGroup ); -+ chmod( sockdir, 0755 ); -+#else - chmod( cr->path, 0666 ); -+#endif - RegisterCloseOnFork( cr->fd ); - RegisterInput( cr->fd ); - free( sockdir ); -@@ -170,6 +216,14 @@ openCtrl( struct display *d ) - close( cr->fd ); - cr->fd = -1; - } -+#ifdef HONORS_SOCKET_PERMS -+ rmdir( sockdir ); -+#else -+ unlink( sockdir ); -+ rmdir( cr->realdir ); -+ free( cr->realdir ); -+ cr->realdir = 0; -+#endif - } - free( cr->path ); - cr->path = 0; -@@ -190,7 +244,14 @@ closeCtrl( struct display *d ) - cr->fd = -1; - unlink( cr->path ); - *strrchr( cr->path, '/' ) = 0; -+#ifdef HONORS_SOCKET_PERMS - rmdir( cr->path ); -+#else -+ unlink( cr->path ); -+ rmdir( cr->realdir ); -+ free( cr->realdir ); -+ cr->realdir = 0; -+#endif - free( cr->path ); - cr->path = 0; - while (cr->css) { -@@ -218,12 +279,12 @@ chownCtrl( CtrlRec *cr, int uid ) - { - if (cr->fpath) - chown( cr->fpath, uid, -1 ); -- if (cr->path) { -- char *ptr = strrchr( cr->path, '/' ); -- *ptr = 0; -+ if (cr->path) -+#ifdef HONORS_SOCKET_PERMS - chown( cr->path, uid, -1 ); -- *ptr = '/'; -- } -+#else -+ chown( cr->realdir, uid, -1 ); -+#endif - } - - void ---- kdebase-3.5.10/kdm/backend/dm.h.sav 2010-03-23 13:22:28.401354858 +0100 -+++ kdebase-3.5.10/kdm/backend/dm.h 2010-03-23 13:28:24.843351116 +0100 -@@ -218,6 +218,9 @@ typedef struct { - struct cmdsock *css; /* open connections */ - - char *path; /* filename of the socket */ -+#ifndef HONORS_SOCKET_PERMS -+ char *realdir; /* real dirname of the socket */ -+#endif - int fd; /* fd of the socket */ - int gid; /* owner group of the socket */ - ---- kdebase-3.5.10/config.h.in.sav 2008-08-20 18:00:23.000000000 +0200 -+++ kdebase-3.5.10/config.h.in 2010-03-23 13:36:38.913475918 +0100 -@@ -739,6 +739,9 @@ - /* Defined if your system has XRandR support */ - #undef XRANDR_SUPPORT - -+/* Define to 1 if OS honors permission bits on socket inodes */ -+#undef HONORS_SOCKET_PERMS -+ - /* - * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system - * headers and I'm too lazy to write a configure test as long as only ---- kdebase-3.5.10/configure.in.in.sav 2006-07-22 10:15:55.000000000 +0200 -+++ kdebase-3.5.10/configure.in.in 2010-03-23 13:51:24.504477535 +0100 -@@ -274,3 +274,31 @@ AC_SUBST(LIBART_RPATH) - AC_ARG_WITH([composite], - AC_HELP_STRING([--without-composite], [Disable Xcomposite support (default: check)]) ) - -+AC_TRY_RUN([ -+#include <sys/socket.h> -+#include <sys/un.h> -+#include <sys/stat.h> -+#include <sys/types.h> -+#include <string.h> -+#include <unistd.h> -+#include <errno.h> -+int main() -+{ -+ int fd, fd2; -+ struct sockaddr_un sa; -+ -+ if ((fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) -+ return 2; -+ sa.sun_family = AF_UNIX; -+ strcpy(sa.sun_path, "testsock"); -+ unlink(sa.sun_path); -+ if (bind(fd, (struct sockaddr *)&sa, sizeof(sa))) -+ return 2; -+ chmod(sa.sun_path, 0); -+ setuid(getuid() + 1000); -+ if ((fd2 = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) -+ return 2; -+ connect(fd2, (struct sockaddr *)&sa, sizeof(sa)); -+ return errno != EACCES; -+} -+], AC_DEFINE_UNQUOTED(HONORS_SOCKET_PERMS, 1, [Define to 1 if OS honors permission bits on socket inodes])) diff --git a/opensuse/tdebase/clock-applet-style.diff b/opensuse/tdebase/clock-applet-style.diff deleted file mode 100644 index 42c768337..000000000 --- a/opensuse/tdebase/clock-applet-style.diff +++ /dev/null @@ -1,22 +0,0 @@ -Index: kicker/applets/clock/clockapplet.kcfg -=================================================================== ---- kicker/applets/clock/clockapplet.kcfg.orig -+++ kicker/applets/clock/clockapplet.kcfg -@@ -14,7 +14,7 @@ - <choice name="Analog"/> - <choice name="Fuzzy"/> - </choices> -- <default>Digital</default> -+ <default>Plain</default> - </entry> - </group> - <group name="Date"> -@@ -56,7 +56,7 @@ defFont.setPointSize(8); - <label>Font for the clock.</label> - <code> - defFont=KGlobalSettings::generalFont(); --defFont.setPointSize(8); -+defFont.setPointSize(16); - defFont.setBold(true); - </code> - <default code="true">defFont</default> diff --git a/opensuse/tdebase/clock-suse-integrate.diff b/opensuse/tdebase/clock-suse-integrate.diff deleted file mode 100644 index a4d24dff8..000000000 --- a/opensuse/tdebase/clock-suse-integrate.diff +++ /dev/null @@ -1,288 +0,0 @@ -Index: kcontrol/clock/tzone.cpp -=================================================================== ---- kcontrol/clock/tzone.cpp.orig -+++ kcontrol/clock/tzone.cpp -@@ -27,12 +27,16 @@ - - #include <qlabel.h> - #include <qfile.h> -+#include <qregexp.h> - - #include <kdebug.h> - #include <klocale.h> - #include <kmessagebox.h> - #include <kdialog.h> - #include <kio/netaccess.h> -+#include <kprocess.h> -+#include <ksavefile.h> -+#include <kstandarddirs.h> - - //#include "xpm/world.xpm" - #include "tzone.h" -@@ -55,6 +59,8 @@ Tzone::Tzone(QWidget * parent, const cha - connect( tzonelist, SIGNAL(selectionChanged()), SLOT(handleZoneChange()) ); - - m_local = new QLabel(this); -+ -+ setupSuseTimezone(); - - load(); - -@@ -158,28 +164,38 @@ void Tzone::save() - - QString val = selectedzone; - #else -- QFile fTimezoneFile("/etc/timezone"); -+ QString tz = "/usr/share/zoneinfo/" + selectedzone; - -- if (fTimezoneFile.open(IO_WriteOnly | IO_Truncate) ) -+ kdDebug() << "Set time zone " << tz << endl; -+ -+ writeSuseTimezone( selectedzone ); -+ -+ if( !KStandardDirs::findExe( "zic" ).isEmpty()) - { -- QTextStream t(&fTimezoneFile); -- t << selectedzone; -- fTimezoneFile.close(); -+ KProcess proc; -+ proc << "zic" << "-l" << selectedzone; -+ proc.start( KProcess::Block ); - } -+ else -+ { -+ QFile fTimezoneFile("/etc/timezone"); - -- QString tz = "/usr/share/zoneinfo/" + selectedzone; -- -- kdDebug() << "Set time zone " << tz << endl; -+ if (fTimezoneFile.open(IO_WriteOnly | IO_Truncate) ) -+ { -+ QTextStream t(&fTimezoneFile); -+ t << selectedzone; -+ fTimezoneFile.close(); -+ } - -- if (!QFile::remove("/etc/localtime")) -- { -+ if (!QFile::remove("/etc/localtime")) -+ { - //After the KDE 3.2 release, need to add an error message -- } -- else -+ } -+ else - if (!KIO::NetAccess::file_copy(KURL(tz),KURL("/etc/localtime"))) - KMessageBox::error( 0, i18n("Error setting new timezone."), - i18n("Timezone Error")); -- -+ } - QString val = ":" + tz; - #endif // !USE_SOLARIS - -@@ -198,3 +214,58 @@ void Tzone::save() - - currentZone(); - } -+ -+// read the configured timezone from /etc/sysconfig/clock -+// and simply set it as $TZ, KDE code then will take it as the timezone -+void Tzone::setupSuseTimezone() -+{ -+ QFile f( "/etc/sysconfig/clock" ); -+ if( !f.open( IO_ReadOnly )) -+ return; -+ QTextStream str( &f ); -+ while( !str.atEnd()) -+ { -+ QString line = str.readLine(); -+ if( line.startsWith( "TIMEZONE=" )) -+ { -+ QRegExp r( "\\s*TIMEZONE=\"(.*)\"\\s*" ); -+ if( r.exactMatch( line )) -+ { -+ QString tz = r.cap( 1 ); -+ setenv( "TZ", tz.ascii(), 1 ); -+ } -+ } -+ } -+} -+ -+void Tzone::writeSuseTimezone( QString zone ) -+{ -+ QFile f( "/etc/sysconfig/clock" ); -+ if( !f.open( IO_ReadOnly )) -+ return; -+ KSaveFile out( "/etc/sysconfig/clock", 0644 ); -+ QFile* fout = out.file(); -+ if( fout == NULL ) -+ return; -+ QTextStream str( &f ); -+ QTextStream strout( fout ); -+ while( !str.atEnd()) -+ { -+ QString line = str.readLine(); -+ if( line.startsWith( "TIMEZONE=" )) -+ { -+ QRegExp r( "\\s*TIMEZONE=\"(.*)\"\\s*" ); -+ if( r.exactMatch( line )) -+ { -+ QString tz = r.cap( 1 ); -+ if( tz == zone ) // not changed, abort -+ { -+ out.abort(); -+ return; -+ } -+ line = "TIMEZONE=\"" + zone + "\""; -+ } -+ } -+ strout << line << '\n'; -+ } -+} -Index: kcontrol/clock/tzone.h -=================================================================== ---- kcontrol/clock/tzone.h.orig -+++ kcontrol/clock/tzone.h -@@ -47,6 +47,8 @@ protected slots: - - private: - void currentZone(); -+ void setupSuseTimezone(); -+ void writeSuseTimezone( QString timezone ); - KTimezones m_zoneDb; - QLabel *m_local; - KTimezoneWidget *tzonelist; -Index: kcontrol/clock/dtime.h -=================================================================== ---- kcontrol/clock/dtime.h.orig -+++ kcontrol/clock/dtime.h -@@ -65,6 +65,9 @@ signals: - void timeout(); - void set_time(); - void changeDate(QDate); -+#if 1 -+ void configureTimeServer(); -+#endif - - private: - void findNTPutility(); -@@ -72,7 +75,11 @@ private: - - QWidget* privateLayoutWidget; - QCheckBox *setDateTimeAuto; -+#if 1 -+ QPushButton *timeServerConfigure; -+#else - QComboBox *timeServerList; -+#endif - - KDatePicker *cal; - QComboBox *month; -Index: kcontrol/clock/dtime.cpp -=================================================================== ---- kcontrol/clock/dtime.cpp.orig -+++ kcontrol/clock/dtime.cpp -@@ -38,6 +38,7 @@ - #include <kmessagebox.h> - #include <kdialog.h> - #include <kconfig.h> -+#include <kstandarddirs.h> - - #include "dtime.h" - #include "dtime.moc" -@@ -74,6 +75,18 @@ Dtime::Dtime(QWidget * parent, const cha - connect(setDateTimeAuto, SIGNAL(toggled(bool)), SLOT(configChanged())); - layout1->addWidget( setDateTimeAuto ); - -+#if 1 -+ // simply add a pushbutton that'll invoke the yast module -+ ntpUtility = KStandardDirs::findExe( "rcntp"); -+ timeServerConfigure = new QPushButton( i18n( "Configure" ), privateLayoutWidget, "timeServerConfigure" ); -+ connect(timeServerConfigure, SIGNAL(clicked()), SLOT(configChanged())); -+ connect(timeServerConfigure, SIGNAL(clicked()), SLOT(configureTimeServer())); -+ connect(setDateTimeAuto, SIGNAL(toggled(bool)), timeServerConfigure, SLOT(setEnabled(bool))); -+ timeServerConfigure->setEnabled(false); -+ layout1->addWidget( timeServerConfigure ); -+ if( ntpUtility.isEmpty()) -+ privateLayoutWidget->hide(); -+#else - timeServerList = new QComboBox( false, privateLayoutWidget, "timeServerList" ); - connect(timeServerList, SIGNAL(activated(int)), SLOT(configChanged())); - connect(timeServerList, SIGNAL(textChanged(const QString &)), SLOT(configChanged())); -@@ -82,6 +95,7 @@ Dtime::Dtime(QWidget * parent, const cha - timeServerList->setEditable(true); - layout1->addWidget( timeServerList ); - findNTPutility(); -+#endif - - // Date box - QGroupBox* dateBox = new QGroupBox( this, "dateBox" ); -@@ -179,7 +193,11 @@ Dtime::Dtime(QWidget * parent, const cha - hour->setEnabled(false); - minute->setEnabled(false); - second->setEnabled(false); -+#if 1 -+ timeServerConfigure->setEnabled(false); -+#else - timeServerList->setEnabled(false); -+#endif - setDateTimeAuto->setEnabled(false); - } - kclock->setEnabled(false); -@@ -241,6 +259,15 @@ void Dtime::configChanged(){ - void Dtime::load() - { - KConfig config("kcmclockrc", true, false); -+#if 1 -+ if( !ntpUtility.isEmpty()) -+ { -+ KProcess proc; -+ proc << ntpUtility << "status"; -+ proc.start( KProcess::Block ); -+ setDateTimeAuto->setChecked( proc.exitStatus() == 0 ); -+ } -+#else - config.setGroup("NTP"); - timeServerList->insertStringList(QStringList::split(',', config.readEntry("servers", - i18n("Public Time Server (pool.ntp.org),\ -@@ -249,6 +276,7 @@ europe.pool.ntp.org,\ - north-america.pool.ntp.org,\ - oceania.pool.ntp.org")))); - setDateTimeAuto->setChecked(config.readBoolEntry("enabled", false)); -+#endif - - // Reset to the current date and time - time = QTime::currentTime(); -@@ -264,6 +292,7 @@ oceania.pool.ntp.org")))); - void Dtime::save() - { - KConfig config("kcmclockrc", false, false); -+#if 0 - config.setGroup("NTP"); - - // Save the order, but don't duplicate! -@@ -301,7 +330,9 @@ void Dtime::save() - kdDebug() << "Set date from time server " << timeServer.latin1() << " success!" << endl; - } - } -- else { -+ else -+#endif -+ { - // User time setting - KProcess c_proc; - -@@ -356,6 +387,13 @@ void Dtime::timeout() - kclock->setTime( time ); - } - -+void Dtime::configureTimeServer() -+{ -+ KProcess proc; -+ proc << "/sbin/yast2" << "ntp-client"; -+ proc.start( KProcess::DontCare ); -+} -+ - QString Dtime::quickHelp() const - { - return i18n("<h1>Date & Time</h1> This control module can be used to set the system date and" diff --git a/opensuse/tdebase/console8x16.pcf.gz b/opensuse/tdebase/console8x16.pcf.gz Binary files differdeleted file mode 100644 index db4be9f47..000000000 --- a/opensuse/tdebase/console8x16.pcf.gz +++ /dev/null diff --git a/opensuse/tdebase/default-kdeprintfax.diff b/opensuse/tdebase/default-kdeprintfax.diff deleted file mode 100644 index ed686b4a7..000000000 --- a/opensuse/tdebase/default-kdeprintfax.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: kdeprint/kdeprintfax/confsystem.cpp -=================================================================== ---- kdeprint/kdeprintfax/confsystem.cpp.orig -+++ kdeprint/kdeprintfax/confsystem.cpp -@@ -103,7 +103,7 @@ void ConfSystem::load() - m_commands << conf->readPathEntry("HylaFax", defaultCommand(hylafax_default_cmd)); - m_commands << conf->readPathEntry("Mgetty", defaultCommand(mgetty_default_cmd)); - m_commands << conf->readPathEntry( "Other", QString::null ); -- QString v = conf->readEntry("System", "efax"); -+ QString v = conf->readEntry("System", "hylafax"); - if (v == "mgetty") m_current = MGETTY_ID; - else if (v == "hylafax") m_current = HYLAFAX_ID; - else if ( v == "other" ) m_current = OTHER_ID; diff --git a/opensuse/tdebase/default_fonts.diff b/opensuse/tdebase/default_fonts.diff deleted file mode 100644 index 4300b5aed..000000000 --- a/opensuse/tdebase/default_fonts.diff +++ /dev/null @@ -1,25 +0,0 @@ -Index: kcontrol/fonts/fonts.cpp -=================================================================== ---- kcontrol/fonts/fonts.cpp.orig -+++ kcontrol/fonts/fonts.cpp -@@ -1,3 +1,4 @@ -+ - // KDE Display fonts setup tab - // - // Copyright (c) Mark Donohoe 1997 -@@ -524,11 +525,11 @@ KFonts::KFonts(QWidget *parent, const ch - - // Keep in sync with kdelibs/kdecore/kglobalsettings.cpp - -- QFont f0("Sans Serif", 10); -- QFont f1("Monospace", 10); -+ QFont f0("Sans Serif", 12); -+ QFont f1("courier", 12); - QFont f2("Sans Serif", 10); -- QFont f3("Sans Serif", 9, QFont::Bold); -- QFont f4("Sans Serif", 10); -+ QFont f3("Sans Serif", 12, QFont::Bold); -+ QFont f4("Sans Serif", 11); - - f0.setPointSize(10); - f1.setPointSize(10); diff --git a/opensuse/tdebase/devmon-automounter.sh b/opensuse/tdebase/devmon-automounter.sh deleted file mode 100644 index ff2de18f1..000000000 --- a/opensuse/tdebase/devmon-automounter.sh +++ /dev/null @@ -1,1086 +0,0 @@ -#!/bin/bash -# Script Name: devmon http://igurublog.wordpress.com/downloads/script-devmon/ -# Requires: udisks bash>=4 -# Recommended: consolekit zenity -# License: GNU GENERAL PUBLIC LICENSE Version 3 http://www.gnu.org/licenses/gpl-3.0.txt -# Thanks to Bernard Baeyens (berbae) for code from udisksvm script -# https://bbs.archlinux.org/viewtopic.php?id=112397 - -#========================================================================= - -defaultmountoptions="noexec,nosuid,noatime" - -#========================================================================= - -help() -{ - cat << EOF -devmon version 1.0.5 -Automounts and unmounts optical and removable drives using udisks -Requires: udisks bash>=4 Recommended: consolekit zenity -Usage: devmon [AUTOMOUNT-OPTIONS] # Run as daemon to automount - devmon [MOUNT-OPTIONS] # Or run as client to manually un/mount -AUTOMOUNT-OPTIONS: (these can be used only in daemon mode) ---exec-on-device DEVICE "COMMAND" Execute COMMAND after mounting DEVICE ---exec-on-label "LABEL" "COMMAND" Execute COMMAND after mounting LABEL ---exec-on-video "COMMAND" Execute COMMAND after video DVD mount ---exec-on-audio "COMMAND" Execute COMMAND after audio CD insertion ---exec-on-disc "COMMAND" Execute COMMAND after data CD/DVD mount ---exec-on-drive "COMMAND" Execute COMMAND after drive mount ---exec-on-unmount "COMMAND" Execute COMMAND after unmount ---exec-on-remove "COMMAND" Execute COMMAND after drive removal - Where the following in COMMAND will be replaced with: - %d mount point directory (eg /media/cd) - %f device name (eg /dev/sdd1) - %l label of mounted volume - Multiple --exec-on-XXX options may be used to execute multiple commands. - Other exec-on-XXX commands are ignored if exec-on-device or -label executed. ---mount-options "OPTIONS" Default: $defaultmountoptions ---info-on-mount Show mounted drive info in a zenity dialog ---no-mount Don't mount anything, just exec (disables - --exec-on-video) ---no-unmount Don't unmount all removable drives on exit - -MOUNT-OPTIONS: (these can be used only in client mode) ---unmount-removable | -r Sync and unmount all removable drives and show - pop-up dialog (zenity installation required) ---unmount-recent | -c Unmount most recently mounted removable drive ---unmount-optical | -o Unmount all optical drives (error pop-up only) ---unmount-all | -u Same as --unmount-removable --unmount-optical ---unmount DIR|DEVICE Unmount DEVICE or mount point DIR ---eject DIR|DEVICE Unmount and eject DEVICE or mount point DIR ---mount-all | -a Mount all removable and optical drives ---mount DEVICE Mount DEVICE ---mount-options|--mount-fstype|--unmount-options|--eject-options "OPTIONS" - These options will be passed to udisks - -UNIVERSAL OPTIONS: (these can be used in both daemon and client modes) ---ignore-device DEVICE Ignore DEVICE (eg /dev/sdd1) ---ignore-label "LABEL" Ignore volume with LABEL ---sync | -s Add sync mount option for ext2-4 ntfs ufs, or - flush for fat & vfat (slower writing but safer) ---internal Also attempt to un/mount internal system drives - (this is mostly a fix for esata issues) ---no-gui | -g Do not show zenity pop-up dialogs -Instructions and updates: - http://igurublog.wordpress.com/downloads/script-devmon/ -EOF - exit -} - -test2() -{ - if [ "${2:0:1}" = "-" ] || [ "$2" = "" ]; then - echo "devmon: Option $1 requires an argument" 1>&2 - exit 1 - fi -} - -test3() -{ - if [ "${2:0:1}" = "-" ] || [ "$2" = "" ] || \ - [ "${3:0:1}" = "-" ] || [ "$3" = "" ]; then - echo "devmon: Option $1 requires two arguments" 1>&2 - exit 1 - fi -} - -unknown() -{ - echo "devmon: Unknown option $1" 1>&2 - echo " For help use: devmon --help" 1>&2 - exit 1 -} - -# parse command line -execoix=0 -execomx=0 -execovx=0 -execoax=0 -execodx=0 -execolx=0 -execoux=0 -execorx=0 -umntx=0 -mntx=0 -ejx=0 -igdevx=0 -iglabx=0 -while [ "$1" != "" ]; do - if [ "${1:0:1}" = "-" ]; then - case "$1" in - --help ) - help - exit - ;; - # don't use eval on these to preserve command strings - --exec-on-drive ) - test2 "$1" "$2" - execoi[$execoix]="$2" - (( execoix++ )) - shift - ;; - --exec-on-disc ) - test2 "$1" "$2" - execom[$execomx]="$2" - (( execomx++ )) - shift - ;; - --exec-on-video ) - test2 "$1" "$2" - execov[$execovx]="$2" - (( execovx++ )) - shift - ;; - --exec-on-audio ) - test2 "$1" "$2" - execoa[$execoax]="$2" - (( execoax++ )) - shift - ;; - --exec-on-device ) - test3 "$1" "$2" "$3" - execod1[$execodx]="$2" - execod2[$execodx]="$3" - (( execodx++ )) - shift 2 - ;; - --exec-on-label ) - test3 "$1" "$2" "$3" - execol1[$execolx]="$2" - execol2[$execolx]="$3" - (( execolx++ )) - shift 2 - ;; - --exec-on-unmount ) - test2 "$1" "$2" - execou[$execoux]="$2" - (( execoux++ )) - shift - ;; - --exec-on-remove ) - test2 "$1" "$2" - execor[$execorx]="$2" - (( execorx++ )) - shift - ;; - --info-on-mount ) - infomount=1 - ;; - --no-mount ) - nomount=1 - ;; - --sync ) - syncopt=1 - ;; - --unmount-on-exit ) - # leave for usage compat with versions prior to 1.0.1 - ;; - --no-unmount ) - nounmount=1 - ;; - --unmount-all ) - unmountrem=1 - unmountoptical=1 - ;; - --unmount-removable ) - unmountrem=1 - ;; - --unmount-optical ) - unmountoptical=1 - ;; - --unmount-recent ) - unmountrecent=1 - ;; - --unmount ) - test2 "$1" "$2" - umnt[$umntx]="$2" - (( umntx++ )) - shift - ;; - --mount-all ) - mountall=1 - ;; - --mount ) - test2 "$1" "$2" - mnt[$mntx]="$2" - (( mntx++ )) - shift - ;; - --eject ) - test2 "$1" "$2" - ej[$ejx]="$2" - (( ejx++ )) - shift - ;; - --mount-options ) - test2 "$1" "$2" - mountoptions="$2" - shift - ;; - --mount-fstype ) - test2 "$1" "$2" - mountfstype="$2" - shift - ;; - --unmount-options ) - test2 "$1" "$2" - unmountoptions="$2" - shift - ;; - --eject-options ) - test2 "$1" "$2" - ejectoptions="$2" - shift - ;; - --internal ) - internal=1 - ;; - --nogui | --no-gui ) - nogui=1 - ;; - --ignore-device ) - test2 "$1" "$2" - igdev[$igdevx]="$2" - (( igdevx++ )) - shift - ;; - --ignore-label ) - test2 "$1" "$2" - iglab[$iglabx]="$2" - (( iglabx++ )) - shift - ;; - --* ) - unknown "$1";; - -* ) - o="${1:1}" - while [ "$o" != "" ]; do - case "${o:0:1}" in - r ) - unmountrem=1;; - o ) - unmountoptical=1;; - u ) - unmountrem=1 - unmountoptical=1 - ;; - a ) - mountall=1;; - s ) - syncopt=1;; - c ) - unmountrecent=1;; - g ) - nogui=1;; - h ) - help - exit - ;; - * ) - unknown "-${o:0:1}";; - esac - o="${o:1}" - done - ;; - esac - else - unknown "$1" - fi - shift -done -(( mountmode = umntx + mntx + ejx + unmountrem + unmountoptical + mountall + unmountrecent )) - -# Warnings -if [ "$(whoami)" = "root" ]; then - echo "WARNING: running devmon as root is usually not required or recommended" 1>&2 -fi - -if (( execoix + execomx + execovx + execoax + execodx + execolx + execoux + execorx \ - + nounmount + infomount != 0 )) && (( mountmode != 0 )); then - echo "WARNING: devmon automount options ignored in mount mode" 1>&2 -fi - -driveinfo() #$1=dev #Optional $2=quiet -{ - unset systeminternal usage ismounted presentationnopolicy hasmedia \ - opticaldisc numaudiotracks type partition media blank label - uinfos=`udisks --show-info $1 2> /dev/null` - label=`echo "$uinfos" | grep -m 1 "^ label:" | sed 's/ *label: *\(.*\)/\1/'` - listinfos=`echo "$uinfos" | grep \ - -e "^ system internal:" \ - -e "^ usage:" \ - -e "^ type:" \ - -e "^ is mounted:" \ - -e "^ presentation nopolicy:" \ - -e "^ has media" \ - -e "^ optical disc:" \ - -e " blank:" \ - -e " num audio tracks:" \ - -e "^ partition:" \ - -e " media:"` - # The change for type= is to take only its first value in listinfos - listinfos=$(echo "$listinfos" | sed 's/ //g - s/:/=/ - s/opticaldisc=/&1/ - s/type=\(.*\)/type=${type:-\1}/ - s/[()]//g - s/partition=/&1/') - eval "$listinfos" - if (( internal == 1 )); then - systeminternal="ignored" - fi - # Take only the first character - hasmedia=${hasmedia:0:1} - # If "partition:" not find in listinfos, should mean it is not a partition - partition=${partition:-0} - nopolicy="$presentationnopolicy" - if (( mountmode == 0 )) && [ "$systeminternal" != "1" ] && [ "$2" != "quiet" ]; then - if [ "$usage" = "filesystem" ] || [ "$opticaldisc" = "1" ]; then - echo "device: [$1]" - echo " systeminternal: [$systeminternal]" - echo " usage: [$usage]" - echo " type: [$type]" - echo " label: [$label]" - echo " ismounted: [$ismounted]" - echo " nopolicy: [$nopolicy]" - echo " hasmedia: [$hasmedia]" - echo " opticaldisc: [$opticaldisc]" - echo " numaudiotracks: [$numaudiotracks]" - echo " blank: [$blank]" - echo " media: [$media]" - echo " partition: [$partition]" - fi - fi -} - -ignoredevice() -{ - idx=0 - while (( idx < igdevx )); do - if [ "$1" = "${igdev[$idx]}" ]; then - echo "devmon: ignored device $1" - return 0 - fi - (( idx++ )) - done - return 1 -} - -ignorelabel() -{ - ilx=0 - while (( ilx < iglabx )); do - if [ "$1" = "${iglab[$ilx]}" ]; then - echo "devmon: ignored label $1" - return 0 - fi - (( ilx++ )) - done - return 1 -} - -execcommands() # $exectype "${exec[@]}" -{ - exectype="$1" - shift - while [ "$1" != "" ]; do - usercmd="$1" - usercmd="${usercmd//%f/$dv}" - usercmd="${usercmd//%l/'$lb'}" - usercmd="${usercmd//%d/'$point'}" - if [ "$usercmd" != "" ]; then - echo "devmon: [$exectype] eval $usercmd &" - eval $usercmd & - fi - shift - done -} - -mountdev() # $1=device [$2=label] [$3=devtype or fstype] -{ - # set label comment - if [ "$2" = "" ]; then - lblcmt="" - else - lblcmt="($2)" - fi - # set mount-fstype option - if [ "$mountfstype" != "" ]; then - fst="--mount-fstype" - else - fst="" - fi - # set default mount options - if [ "$mountoptions" != "" ]; then - mopts="$mountoptions" - else - mopts="$defaultmountoptions" - fi - # set sync mount options - if (( syncopt == 1 )); then - case "$3" in - ext2 | ext3 | ext4 | ufs | ntfs ) - mopts="$mopts,sync";; - fat | vfat ) - mopts="$mopts,flush";; - esac - fi - # mount - mntmsg="devmon: mount $1 --mount-options $mopts $fst $mountfstype $lblcmt" - if [ "$3" != "nofs" ]; then - echo "$mntmsg" - fi - umsg=`udisks --mount $1 --mount-options "$mopts" $fst $mountfstype 2>&1` - mounterr="$?" - # get mount point - point=`echo "$umsg" | grep "^Mounted " | sed 's/^Mounted .* at \(.*\)/\1/'` - if [ "$mounterr" != "0" ] || [ "$point" = "" ]; then - # if $3=nofs then there was no apparent filesystem but we tried to mount it - # anyway in case it didn't report the filesystem accurately, so ignore the - # error - if [ "$3" != "nofs" ]; then - echo "$umsg" 1>&2 - echo "devmon: error mounting $1 ($mounterr)" 1>&2 - if (( mountmode == 0 )) && (( polkiterrgiven != 1 )) && \ - [ "$(echo "$umsg" | grep "Not Authorized")" != "" ]; then - if (( nogui != 1 )); then - ( sleep 3 && WINDOWID="" zenity --error --no-wrap --title="devmon error" \ - --text="udisks functions are not authorized through policykit,\nso devmon cannot automount drives.\nPlease see devmon's consolekit installation instructions:\n\nhttp://igurublog.wordpress.com/downloads/script-devmon/#install\n\n(To silence this pop-up add --no-gui to devmon's command line.)" &> /dev/null ) & - fi - echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" 1>&2 - echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" 1>&2 - echo "udisks functions are not authorized through policykit," 1>&2 - echo "so devmon cannot automount drives." 1>&2 - echo "Please see devmon's consolekit installation instructions:" 1>&2 - echo "http://igurublog.wordpress.com/downloads/script-devmon/#install" 1>&2 - echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" 1>&2 - echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" 1>&2 - polkiterrgiven=1 - fi - fi - uerr=3 - return 3 - elif [ "$3" = "nofs" ]; then - # no filesystem reported but successful mount - echo "$mntmsg" - fi - echo "$umsg" -} - -unmountdev() # $1=device -{ - if [ "$unmountoptions" != "" ]; then - echo "devmon: unmount $1 --unmount-options $unmountoptions" - uerrmsg=`udisks --unmount $1 --unmount-options "$unmountoptions" 2>&1` - else - echo "devmon: unmount $1" - uerrmsg=`udisks --unmount $1 2>&1` - fi - if [ "$uerrmsg" != "" ]; then - # bug: udisks returns $?==0 when unmount fails - echo "$uerrmsg" - uerr=3 - return 3 - fi -} - -ejectdev() -{ - if [ "$ejectoptions" != "" ]; then - echo "devmon: eject $1 --eject-options $ejectoptions" - udisks --eject $1 --eject-options "$ejectoptions" - else - echo "devmon: eject $1" - udisks --eject $1 - fi - if [ "$?" != "0" ]; then - uerr=3 - return 3 - fi -} - -mountdrive() # $1=device $2=label [$3=devtype or fstype] -{ - dv="$1" - lb="$2" - tp="$3" - unset point - - if ( ignoredevice "$dv" ) || ( ignorelabel "$lb" ); then - return - fi - - # mount - if [ "$tp" != "audiocd" ] && (( nomount != 1 )); then - mountdev $dv "$lb" "$tp" - if [ "$?" != "0" ]; then - return - fi - fi - - # exec on device - unset execdone - x=0 - while (( x < execodx )); do - if [ "${execod1[$x]}" = "$dv" ]; then - usercmd="${execod2[$x]}" - usercmd="${usercmd//%f/$dv}" - usercmd="${usercmd//%l/'$lb'}" - usercmd="${usercmd//%d/'$point'}" - if [ "$usercmd" != "" ]; then - echo "devmon: [exec on device] eval $usercmd" - eval $usercmd & - execdone=1 - fi - fi - (( x++ )) - done - if (( execdone == 1 )); then return; fi - - # exec on label - x=0 - while (( x < execolx )); do - if [ "${execol1[$x]}" = "$lb" ]; then - usercmd="${execol2[$x]}" - usercmd="${usercmd//%f/$dv}" - usercmd="${usercmd//%l/'$lb'}" - usercmd="${usercmd//%d/'$point'}" - if [ "$usercmd" != "" ]; then - echo "devmon: [exec on label] eval $usercmd" - eval $usercmd & - execdone=1 - fi - fi - (( x++ )) - done - if (( execdone == 1 )); then return; fi - - # exec on video - if [ "$tp" = "dvd" ] && [ "$point" != "" ] && [ -d "$point/VIDEO_TS" ]; then - echo "devmon: videodvd $dv ($lb) on $point" - if (( execovx != 0 )); then - execcommands "exec on video" "${execov[@]}" - fi - return - fi - - # exec on audio - if [ "$tp" = "audiocd" ]; then - echo "devmon: audiocd $dv ($lb)" - if (( execoax != 0 )); then - execcommands "exec on audio" "${execoa[@]}" - fi - return - fi - - # exec on disc - if [ "$tp" = "optical" ] || [ "$tp" = "dvd" ]; then - if [ "$point" != "" ] || (( nomount == 1 )); then - if (( execomx != 0 )); then - execcommands "exec on disc" "${execom[@]}" - fi - fi - return - fi - - # exec on drive - if [ "$point" != "" ] || (( nomount == 1 )); then - if (( execoix != 0 )); then - execcommands "exec on drive" "${execoi[@]}" - fi - fi - - # info on mount - if [ "$point" != "" ] && (( infomount == 1 )) && (( nomount != 1 )); then - sleep .5 - echo "devmon: [info on mount] $dv" - if (( nogui != 1 )); then - WINDOWID="" zenity --info --text="The following device has been mounted:\n\n$(df -hT "$dv" \ - | grep "$dv" | awk '{print "Device:\\t"$1"\x0AType:\\t"$2"\nSize:\\t\\t"$3"\nUsed:\\t"$4"\n""Avail:\\t"$5"\nUse%:\\t"$6"\nMount:\\t"$7,$8,$9,$10}')\nLabel:\\t$lb" --title="devmon mount" & - fi - df -hT "$dv" - fi -} - -mountalldrives() -{ - # Mount all optical drives, no exec - x=0 - while [ -e /dev/sr$x ]; do - driveinfo /dev/sr$x - if [ "$numaudiotracks" = "" ]; then - numaudiotracks=0 - fi - if [ "$systeminternal" != "1" ] && [ "$opticaldisc" = "1" ] && \ - [ "$ismounted" != "1" ] && [ "$hasmedia" != "0" ] && \ - [ "$blank" != "1" ] && (( numaudiotracks == 0 )) && \ - [ "$nopolicy" != "1" ]; then - if ( ignoredevice "/dev/sr$x" ) || ( ignorelabel "$label" ); then - (( x++ )) - continue - fi - mountdev /dev/sr$x "$label" - eval notejectedsr$x=1 - fi - (( x++ )) - done - # Mount removable drives, no exec - IFSOLD="$IFS" - IFS=$'\n' - partlist=`grep " sd[a-z0-9]*$" /proc/partitions | sed 's/.* \(sd[a-z0-9]*\)/\1/'` - for p in $partlist; do - if ( ignoredevice "/dev/$p" ); then - continue - fi - driveinfo /dev/$p - if ( ignorelabel "$label" ); then - continue - else - if [ "$systeminternal" != "1" ] && [ "$opticaldisc" != "1" ] && \ - [ "$ismounted" = "0" ] && [ "$nopolicy" != "1" ]; then - if [ "$usage" = "filesystem" ]; then - echo "mountdev /dev/$p $label $type" - mountdev /dev/$p "$label" "$type" - else - mountdev /dev/$p "$label" nofs - fi - fi - fi - done - IFS="$IFSOLD" -} - -trapexit() -{ - kill $COPROC_PID 2> /dev/null - - # prevent trap code from executing multiple times on different signals - if (( trapdone != 1 )); then - trapdone=1 - # Unmount All - if (( nounmount != 1 )); then - IFSOLD="$IFS" - IFS=$'\n' - uerr=0 - partlist=`grep " sd[a-z0-9]*$" /proc/partitions | \ - sed 's/.* \(sd[a-z0-9]*\)/\1/'` - for p in $partlist; do - if ( ignoredevice "/dev/$p" ); then - continue - fi - driveinfo /dev/$p - if ( ignorelabel "$label" ); then - continue - else - if [ "$systeminternal" != "1" ] && [ "$opticaldisc" != "1" ] && \ - [ "$usage" = "filesystem" ] && [ "$ismounted" = "1" ]; then - echo "devmon: [on exit] unmount /dev/$p &" - udisks --unmount /dev/$p & - if [ "$?" != "0" ]; then - uerr=3 - fi - fi - fi - done - IFS="$IFSOLD" - fi - echo 'devmon: stopped' - exit $uerr - fi -} - -# Client Mode -if (( mountmode != 0 )); then - uerr=0 - if (( unmountrem == 1 )) || (( unmountrecent == 1 )); then - y=0 - unset udrive zpid - IFSOLD="$IFS" - IFS=$'\n' - if (( unmountrem == 1 )); then - # Unmount All Removable Drives - partlist=`grep " sd[a-z0-9]*$" /proc/partitions | sed 's/.* \(sd[a-z0-9]*\)/\1/'` - msgtitle="devmon unmount" - else - # Unmount Recent - partlist=`mount | grep "^/dev/.* on " | sed 's/^\/dev\/\(.*\) on .*/\1/' \ - | grep -v -e "null" -e "shm" -e "mapper" -e "snd" \ - -e "video" -e "random" | tac` - msgtitle="devmon unmount recent" - fi - for p in $partlist; do - if ( ignoredevice "/dev/$p" ); then - continue - fi - driveinfo /dev/$p - if ( ignorelabel "$label" ); then - continue - else - if [ "$systeminternal" != "1" ] && [ "$opticaldisc" != "1" ] \ - && [ "$ismounted" = "1" ]; then - udrive[$y]="/dev/$p" - (( y++ )) - if (( unmountrem != 1 )); then break; fi - fi - fi - done - IFS="$IFSOLD" - if (( y == 0 )); then - msg="No removable drives are mounted" - echo "$msg" - else - msg="Unmounting ${udrive[@]}...\n\n(This dialog will close when the devices are unmounted)" - echo "Preparing to unmount ${udrive[@]}" - fi - if (( nogui != 1 )); then - WINDOWID="" zenity --info --title="$msgtitle" --text="$msg" &> /dev/null & - zpid=$! - fi - if (( y > 0 )); then - echo "devmon: sync" - sync - for d in ${udrive[@]}; do - unmountdev $d - if [ "$?" != "0" ] && (( nogui != 1 )); then - driveinfo "$d" quiet - if [ "$label" = "" ]; then - lb="" - else - lb=" ($label)" - fi - msg="Unmount error on $d$lb:\n\n$uerrmsg" - WINDOWID="" zenity --error --title="$msgtitle" --text="$msg" &> /dev/null & - fi - done - echo "devmon: sync" - sync - fi - if [ "$zpid" != "" ]; then - sleep 2 - kill $zpid 2> /dev/null - fi - fi - - # Unmount Optical - if (( unmountoptical == 1 )); then - x=0 - while [ -e "/dev/sr$x" ]; do - if ( ignoredevice "/dev/sr$x" ); then - (( x++ )) - continue - fi - driveinfo /dev/sr$x - if ( ignorelabel "$label" ); then - (( x++ )) - continue - else - if [ "$systeminternal" != "1" ] && [ "$opticaldisc" = "1" ] && \ - [ "$ismounted" = "1" ]; then - unmountdev /dev/sr$x - if [ "$?" != "0" ] && (( nogui != 1 )); then - if [ "$label" = "" ]; then - lb="" - else - lb=" ($label)" - fi - msg="Unmount error on /dev/sr$x$lb:\n\n$uerrmsg" - WINDOWID="" zenity --error --title="devmon unmount optical" \ - --text="$msg" &> /dev/null & - fi - fi - fi - (( x++ )) - done - fi - - # Unmount DIR|DEVICE - if (( umntx > 0 )); then - x=0 - while (( x < umntx )); do - d="${umnt[$x]}" - # remove trailing slash - if [ "$d" != "/" ]; then - d="${d%/}" - fi - if [ "${d:0:5}" = "/dev/" ]; then - # Unmount DEVICE - unmountdev "$d" - else - # Unmount DIR - if [ "$(dirname "$d")" = "." ]; then - if [ -d "$(pwd)/$d" ]; then - d="$(pwd)/$d" - elif [ -d "/media/$d" ]; then - d="/media/$d" - elif [ -e "/dev/$d" ] && [ "$(mount | grep "^/dev/$d on ")" != "" ]; then - unmountdev "/dev/$d" - (( x++ )) - continue - fi - fi - if [ ! -d "$d" ]; then - echo "devmon: No such directory or mounted device $d" 1>&2 - uerr=3 - else - dv=`mount | grep -m 1 " on $d type " | awk '{print $1}'` - if [ "$dv" = "" ]; then - echo "devmon: Nothing mounted on $d (mtab)" 1>&2 - uerr=3 - else - unmountdev "$dv" - fi - fi - fi - (( x++ )) - done - fi - - # Eject DIR|DEVICE - if (( ejx > 0 )); then - x=0 - while (( x < ejx )); do - d="${ej[$x]}" - # remove trailing slash - if [ "$d" != "/" ]; then - d="${d%/}" - fi - dv="" - if [ "${d:0:5}" = "/dev/" ]; then - # Eject DEVICE - dv="$d" - else - # Eject DIR - if [ "$(dirname "$d")" = "." ]; then - if [ -d "$(pwd)/$d" ]; then - d="$(pwd)/$d" - elif [ -d "/media/$d" ]; then - d="/media/$d" - elif [ -e "/dev/$d" ] && [ "$(mount | grep "^/dev/$d on ")" != "" ]; then - dv="/dev/$d" - fi - fi - if [ "$dv" = "" ]; then - if [ ! -d "$d" ]; then - echo "devmon: No such directory or mounted device $d" 1>&2 - uerr=3 - else - dv=`mount | grep -m 1 " on $d type " | awk '{print $1}'` - if [ "$dv" = "" ]; then - echo "devmon: Nothing mounted on $d (mtab)" 1>&2 - uerr=3 - fi - fi - fi - fi - if [ "$dv" != "" ]; then - driveinfo "$dv" - if [ "$systeminternal" != "1" ] && [ "$opticaldisc" = "1" ] && \ - [ "$ismounted" = "1" ]; then - unmountdev "$dv" - fi - ejectdev "$dv" - fi - (( x++ )) - done - fi - - # Mount DEVICE - if (( mntx > 0 )); then - x=0 - while (( x < mntx )); do - d="${mnt[$x]}" - # remove trailing slash - if [ "$d" != "/" ]; then - d="${d%/}" - fi - if [ "$(dirname "$d")" = "." ] && [ "${d:0:5}" != "/dev/" ]; then - d="/dev/$d" - fi - driveinfo "$d" quiet - if [ "$opticaldisc" = "1" ]; then - mountdev $d "$label" - else - mountdev $d "$label" "$type" - fi - (( x++ )) - done - fi - - # Mount All Unmounted - if (( mountall == 1 )); then - mountalldrives - fi - - exit $uerr -fi - -# Daemon Mode -if [ "$mountfstype" != "" ]; then - echo "WARNING: --mount-fstype ignored in daemon mode" 1>&2 - mountfstype="" -fi -if [ "$unmountoptions" != "" ]; then - echo "WARNING: --unmount-options ignored in daemon mode" 1>&2 - unmountoptions="" -fi -if [ "$ejectoptions" != "" ]; then - echo "WARNING: --eject-options ignored in daemon mode" 1>&2 - ejectoptions="" -fi -pidcount=`ps h -C ${0//*\//} -o pid | wc -l` -if (( pidcount > 2 )); then - echo - echo "WARNING: multiple instances of devmon appear to be running" - echo -fi - -# Trigger udisks daemon start two ways -if [ -e /dev/sr0 ]; then - udisks --poll-for-media /dev/sr0 -fi -udisks --show-info /dev/sda > /dev/null -sleep 2 # helps successful sr0 startup mount on reboot - - -# Startup Mounting -if (( nomount != 1 )); then - mountalldrives -fi - -# Start monitoring -coproc udisks --monitor -err=$? -trap trapexit EXIT SIGINT SIGTERM SIGQUIT -trap "echo devmon: ignored HUP" SIGHUP - -if [ $err != "0" ] || [ ! ps -p $COPROC_PID &>/dev/null ]; then - echo "devmon: unable to start udisks --monitor" 1>&2 - echo " is udisks installed and dbus running?" 1>&2 - exit 2 -fi - - -# Monitoring Loop -while ps -p $COPROC_PID &>/dev/null; do - read -u ${COPROC[0]} - echo "===========================================" - echo "$REPLY" - event="${REPLY%:*}" - devpath="${REPLY#*:}" - devpath="/dev/${devpath##*/}" - if [ "$event" != "" ] && [ "$devpath" != "/dev/" ] && [ -e "$devpath" ]; then - case $event in - added ) - driveinfo $devpath - if [ "$systeminternal" != "1" ] && [ "$ismounted" = "0" ] && \ - [ "$nopolicy" != "1" ]; then - if [ "$usage" = "filesystem" ]; then - mountdrive $devpath "$label" "$type" - else - mountdrive $devpath "$label" nofs - fi - fi - ;; - job-changed ) - ;; - removed ) - ;; - changed ) - driveinfo $devpath - eval notejected=\$notejected${devpath#/dev/} - eval devmounted=\$devmounted${devpath#/dev/} - eval devmounted${devpath#/dev/}="$ismounted" - # If notejected==1 then cd has not been ejected and was probably - # manually unmounted, so don't automount it. Otherwise - # devmon will instantly mount any manual unmount. - if [ "$systeminternal" != "1" ] && [ "$opticaldisc" = "1" ] && \ - [ "$ismounted" != "1" ] && [ "$hasmedia" != "0" ] && \ - [ "$blank" != "1" ] && (( notejected != 1 )) && \ - [ "$nopolicy" != "1" ]; then - if [ "$media" = "optical_dvd" ]; then - mountdrive $devpath "$label" dvd - elif (( numaudiotracks > 0 )); then - mountdrive $devpath "$label" audiocd - else - mountdrive $devpath "$label" optical - fi - eval notejected${devpath#/dev/}=1 - else - if [ "$systeminternal" != "1" ] && \ - [ "$ismounted" != "1" ] && [ "$hasmedia" = "0" ]; then - # disc ejected - echo "devmon: $devpath eject detected" - eval notejected${devpath#/dev/}=0 - fi - if [ "$systeminternal" != "1" ] && [ "$ismounted" != "1" ] && \ - [ "$nopolicy" != "1" ] && [ "$devmounted" = "1" ]; then - # exec-on-unmount - if (( execoux != 0 )); then - if ( ! ignoredevice "$devpath" ) && ( ! ignorelabel "$label" ); then - dv="$devpath" - execcommands "exec on unmount" "${execou[@]}" - fi - fi - fi - fi - ;; - esac - elif [ "$event" = "removed" ]; then - eval unset devmounted${devpath#/dev/} - # exec-on-remove - if (( execorx != 0 )); then - if ( ! ignoredevice "$devpath" ); then - unset lb point - dv="$devpath" - execcommands "exec on remove" "${execor[@]}" - fi - fi - fi -done - -exit - -# CHANGELOG -# 1.0.5: --exec-on-unmount now executes only once per unmount -# 1.0.4: added --exec-on-unmount, --exec-on-remove -# added multiple instance warning -# %f device spec no longer passed in quotes to commands -# 1.0.3: help updated for sync -# corrected exec-on-drive bug introduced in 1.0.1 -# 1.0.2: --sync adds sync for ntfs -# 1.0.1: added --sync -# added --no-unmount; unmount-on-exit is now default -# obey UDISKS_PRESENTATION_NOPOLICY to inhibit automount -# added unmount-all error pop-ups -# 1.0.0: added --unmount-recent -# improved udisks mount info to stdout -# improved mount/unmount without apparent filesystem -# 0.9.5: ignore trailing slash in un/mount dir/dev specs -# attempt to mount no filesystem in case there is one -# 0.9.4: polkit error more selective -# 0.9.3: corrected problems with spaces in volume labels -# corrected un/mounting of partitionless devices -# corrected --ignore-devices problem -# added not authorized pop-up error -# 0.9.2: added --internal -# 0.9.1: corrected --unmount-on-removable not recognized -# 0.9.0: changed --unmount-all to --unmount-removable -# added --unmount-all (now includes optical) -# added --unmount-optical -# added --unmount DIR|DEVICE -# added --eject DIR|DEVICE -# added --mount-all -# added --mount DEVICE -# added --info-on-mount -# added pass options to udisks -# better error msg from udisks -# individual drive eject detection -# no limit on number of optical drives -# 0.8.2: more verbose errors -# run as root changed to warning -# 0.8.1: added --unmount-on-exit -# adjusted start daemon trigger, timing -# added 'do not run as root' catcher -# added trap to ignore SIGHUP - diff --git a/opensuse/tdebase/dont-always-start-kaccess.diff b/opensuse/tdebase/dont-always-start-kaccess.diff deleted file mode 100644 index f50747274..000000000 --- a/opensuse/tdebase/dont-always-start-kaccess.diff +++ /dev/null @@ -1,66 +0,0 @@ -Index: kcontrol/access/kcmaccess.cpp -=================================================================== ---- kcontrol/access/kcmaccess.cpp.orig -+++ kcontrol/access/kcmaccess.cpp -@@ -103,10 +103,57 @@ void ExtendedIntNumInput::slotSliderValu - - static bool needToRunKAccessDaemon( KConfig *config ) - { -- // We always start the KAccess Daemon, if it is not needed, -- // it will terminate itself after configuring the AccessX -- // features. -- return true; -+ KConfigGroup bell( config, "Bell" ); -+ -+ if (!bell.readBoolEntry("SystemBell", true)) -+ return true; -+ if (bell.readBoolEntry("ArtsBell", false)) -+ return true; -+ if (bell.readBoolEntry("VisibleBell", false)) -+ return true; -+ -+ KConfigGroup keyboard( config, "Keyboard" ); -+ -+ if (keyboard.readBoolEntry("StickyKeys", false)) -+ return true; -+ if (keyboard.readBoolEntry("SlowKeys", false)) -+ return true; -+ if (keyboard.readBoolEntry("BounceKeys", false)) -+ return true; -+ if (keyboard.readBoolEntry("Gestures", true)) -+ return true; -+ // Find out whether the gestures are activated by default in the X configuration or not. -+ int major = XkbMajorVersion; -+ int minor = XkbMinorVersion; -+ if (XkbLibraryVersion(&major, &minor)) -+ { -+ int opcode_rtrn; -+ int error_rtrn; -+ int xkb_opcode; -+ if (XkbQueryExtension(qt_xdisplay(), &opcode_rtrn, &xkb_opcode, &error_rtrn, -+ &major, &minor)) -+ { -+ if(XkbDescPtr xkbdesc = XkbGetMap(qt_xdisplay(), 0, XkbUseCoreKbd)) -+ { -+ if(XkbGetControls(qt_xdisplay(), XkbAllControlsMask/*XkbAccessXKeysMask*/, xkbdesc ) == Success ) -+ { -+ if(xkbdesc->ctrls->enabled_ctrls & XkbAccessXKeysMask) -+ { -+ XkbFreeClientMap(xkbdesc,0,True); -+ return true; -+ } -+ } -+ XkbFreeClientMap(xkbdesc,0,True); -+ } -+ } -+ } -+ -+ KConfigGroup mouse( config, "Mouse" ); -+ -+ if (mouse.readBoolEntry("MouseKeys", false)) -+ return true; -+ -+ return false; // don't need it - } - - QString mouseKeysShortcut (Display *display) { diff --git a/opensuse/tdebase/fileshareset.8.gz b/opensuse/tdebase/fileshareset.8.gz Binary files differdeleted file mode 100644 index c311d10b3..000000000 --- a/opensuse/tdebase/fileshareset.8.gz +++ /dev/null diff --git a/opensuse/tdebase/fileshareset2.tar.bz2 b/opensuse/tdebase/fileshareset2.tar.bz2 Binary files differdeleted file mode 100644 index 5e26bb796..000000000 --- a/opensuse/tdebase/fileshareset2.tar.bz2 +++ /dev/null diff --git a/opensuse/tdebase/fix-desktop-icons.diff b/opensuse/tdebase/fix-desktop-icons.diff deleted file mode 100644 index 27d83f685..000000000 --- a/opensuse/tdebase/fix-desktop-icons.diff +++ /dev/null @@ -1,250 +0,0 @@ -Index: kcontrol/componentchooser/componentchooser.desktop -=================================================================== ---- kcontrol/componentchooser/componentchooser.desktop.orig -+++ kcontrol/componentchooser/componentchooser.desktop -@@ -1,6 +1,6 @@ - [Desktop Entry] - Exec=kcmshell componentchooser --Icon=misc -+Icon=kcmcomponentchooser - Type=Application - - -Index: kcontrol/taskbar/kcmtaskbar.desktop -=================================================================== ---- kcontrol/taskbar/kcmtaskbar.desktop.orig -+++ kcontrol/taskbar/kcmtaskbar.desktop -@@ -1,5 +1,5 @@ - [Desktop Entry] --Icon=kmenu -+Icon=kcmtaskbar - Type=Application - DocPath=kcontrol/kcmtaskbar/index.html - Exec=kcmshell kcmtaskbar -Index: kcontrol/nics/nic.desktop -=================================================================== ---- kcontrol/nics/nic.desktop.orig -+++ kcontrol/nics/nic.desktop -@@ -2,7 +2,7 @@ - Exec=kcmshell nic - Type=Application - DocPath=kinfocenter/nics/index.html --Icon=network -+Icon=kcmnic - - - X-KDE-Library=nic -Index: kcontrol/input/mouse.desktop -=================================================================== ---- kcontrol/input/mouse.desktop.orig -+++ kcontrol/input/mouse.desktop -@@ -1,6 +1,6 @@ - [Desktop Entry] - Exec=kcmshell mouse --Icon=mouse -+Icon=kcmmouse - Type=Application - DocPath=kcontrol/mouse/index.html - -Index: kcontrol/smserver/kcmsmserver.desktop -=================================================================== ---- kcontrol/smserver/kcmsmserver.desktop.orig -+++ kcontrol/smserver/kcmsmserver.desktop -@@ -1,5 +1,5 @@ - [Desktop Entry] --Icon=exit -+Icon=kcmsmserver - Type=Application - DocPath=kcontrol/kcmsmserver/index.html - Exec=kcmshell kcmsmserver -Index: kcontrol/kded/kcmkded.desktop -=================================================================== ---- kcontrol/kded/kcmkded.desktop.orig -+++ kcontrol/kded/kcmkded.desktop -@@ -1,6 +1,6 @@ - [Desktop Entry] - Exec=kcmshell kcmkded --Icon=services -+Icon=kcmkded - Type=Application - - -Index: kcontrol/konq/desktop.desktop -=================================================================== ---- kcontrol/konq/desktop.desktop.orig -+++ kcontrol/konq/desktop.desktop -@@ -1,7 +1,7 @@ - [Desktop Entry] - Type=Application - DocPath=kcontrol/desktop/index.html#desktop-number --Icon=desktop -+Icon=kcmdesktop - Exec=kcmshell desktop - - -Index: kcontrol/konq/desktopbehavior.desktop -=================================================================== ---- kcontrol/konq/desktopbehavior.desktop.orig -+++ kcontrol/konq/desktopbehavior.desktop -@@ -1,7 +1,7 @@ - [Desktop Entry] - Type=Application - DocPath=kcontrol/desktopbehavior/index.html --Icon=desktop -+Icon=kcmdesktopbehavior - Exec=kcmshell desktopbehavior - - -Index: kcontrol/privacy/privacy.desktop -=================================================================== ---- kcontrol/privacy/privacy.desktop.orig -+++ kcontrol/privacy/privacy.desktop -@@ -1,5 +1,5 @@ - [Desktop Entry] --Icon=trashcan_empty -+Icon=kcmprivacy - Comment=Privacy - a kcontrol module to clean unwanted traces the user leaves on the system - Comment[af]=Privaatheid - 'n Beheer module wat voetspore wat deur gebruikers op die stelsel gelaat word skoon maak - Comment[ar]=الخصوصية - ÙˆØدة kcontrol لتنظي٠الآثار غير المرغوب بها التي يتركها المستخدم على النظام -Index: kcontrol/crypto/crypto.desktop -=================================================================== ---- kcontrol/crypto/crypto.desktop.orig -+++ kcontrol/crypto/crypto.desktop -@@ -1,5 +1,5 @@ - [Desktop Entry] --Icon=encrypted -+Icon=kcmcrypto - Type=Application - Exec=kcmshell crypto - DocPath=kcontrol/crypto/index.html -Index: kcontrol/kio/netpref.desktop -=================================================================== ---- kcontrol/kio/netpref.desktop.orig -+++ kcontrol/kio/netpref.desktop -@@ -76,7 +76,7 @@ Comment[zh_CN]=é…置通用网络首选é - Comment[zh_TW]=è¨å®šä¸€èˆ¬ç¶²è·¯å–œå¥½è¨å®šï¼Œä¾‹å¦‚逾時值 - Comment[zu]=Hlanganisela okuncanyelwa uwonkewonke koxhumano olusazekile, njengamanani esikhathi sokuphuma - Exec=kcmshell netpref --Icon=network -+Icon=kcmnetpref - Keywords=timeout,iopref,netpref,network preferences,ftp - Keywords[be]=ТÑрмін чаканнÑ,УлаÑціваÑці Ñеткі,timeout,iopref,netpref,network preferences,ftp - Keywords[bg]=проÑрочка, време, времето, пауза, прекъÑване, връзка, timeout, iopref, netpref, network preferences, ftp -Index: kcontrol/konqhtml/khtml_filter.desktop -=================================================================== ---- kcontrol/konqhtml/khtml_filter.desktop.orig -+++ kcontrol/konqhtml/khtml_filter.desktop -@@ -1,7 +1,7 @@ - [Desktop Entry] - Type=Application - DocPath=kcontrol/khtml/index.html#khtml-adblock --Icon=filter -+Icon=kcmkhtml_filter - Exec=kcmshell khtml_filter - - X-KDE-Library=konqhtml -Index: kcontrol/joystick/joystick.desktop -=================================================================== ---- kcontrol/joystick/joystick.desktop.orig -+++ kcontrol/joystick/joystick.desktop -@@ -173,5 +173,5 @@ Type=Application - X-KDE-FactoryName=kcm_joystick - X-KDE-Library=joystick - X-KDE-Test-Module=true --Icon=joystick -+Icon=kcmjoystick - Categories=Qt;KDE;X-KDE-settings-hardware; -Index: kcontrol/colors/colors.desktop -=================================================================== ---- kcontrol/colors/colors.desktop.orig -+++ kcontrol/colors/colors.desktop -@@ -1,6 +1,6 @@ - [Desktop Entry] - Exec=kcmshell colors --Icon=colorscm -+Icon=kcmcolors - Type=Application - DocPath=kcontrol/colors/index.html - -Index: kcontrol/performance/kcmperformance.desktop -=================================================================== ---- kcontrol/performance/kcmperformance.desktop.orig -+++ kcontrol/performance/kcmperformance.desktop -@@ -1,5 +1,5 @@ - [Desktop Entry] --Icon=launch -+Icon=kcmperformance - Type=Application - Exec=kcmshell kcmperformance - -Index: kcontrol/launch/kcmlaunch.desktop -=================================================================== ---- kcontrol/launch/kcmlaunch.desktop.orig -+++ kcontrol/launch/kcmlaunch.desktop -@@ -1,5 +1,5 @@ - [Desktop Entry] --Icon=launch -+Icon=kcmlaunch - Type=Application - DocPath=kcontrol/kcmlaunch/index.html - Exec=kcmshell kcmlaunch -Index: kcontrol/dnssd/kcm_kdnssd.desktop -=================================================================== ---- kcontrol/dnssd/kcm_kdnssd.desktop.orig -+++ kcontrol/dnssd/kcm_kdnssd.desktop -@@ -70,7 +70,7 @@ Comment[zh_TW]=è¨å®šæœå‹™åµæ¸¬ - Exec=kcmshell kcm_kdnssd - GenericName= - GenericName[ko]=ì¼ë°˜ --Icon=blockdevice -+Icon=kcmkdnssd - MimeType= - Name=Service Discovery - Name[af]=Dienste ontdekker -Index: kcontrol/spellchecking/spellchecking.desktop -=================================================================== ---- kcontrol/spellchecking/spellchecking.desktop.orig -+++ kcontrol/spellchecking/spellchecking.desktop -@@ -1,6 +1,6 @@ - [Desktop Entry] - Exec=kcmshell spellchecking --Icon=spellcheck -+Icon=kcmspellchecking - Type=Application - DocPath=kcontrol/spellchecking/index.html - -Index: konqueror/sidebar/trees/history_module/kcmhistory.desktop -=================================================================== ---- konqueror/sidebar/trees/history_module/kcmhistory.desktop.orig -+++ konqueror/sidebar/trees/history_module/kcmhistory.desktop -@@ -1,5 +1,5 @@ - [Desktop Entry] --Icon=history -+Icon=kcmhistory - Type=Application - Exec=kcmshell kcmhistory - -Index: kioslave/cgi/kcmcgi/kcmcgi.desktop -=================================================================== ---- kioslave/cgi/kcmcgi/kcmcgi.desktop.orig -+++ kioslave/cgi/kcmcgi/kcmcgi.desktop -@@ -1,5 +1,5 @@ - [Desktop Entry] --Icon=run -+Icon=kcmcgi - Type=Application - Exec=kcmshell kcmcgi - DocPath= -Index: kioslave/media/kcmodule/media.desktop -=================================================================== ---- kioslave/media/kcmodule/media.desktop.orig -+++ kioslave/media/kcmodule/media.desktop -@@ -1,7 +1,7 @@ - [Desktop Entry] - Type=Application - #DocPath= --Icon=system -+Icon=kcmmedia - Exec=kcmshell media - - diff --git a/opensuse/tdebase/fix-kcontrol-yast.diff b/opensuse/tdebase/fix-kcontrol-yast.diff deleted file mode 100644 index 5902d904d..000000000 --- a/opensuse/tdebase/fix-kcontrol-yast.diff +++ /dev/null @@ -1,63 +0,0 @@ -Index: kcontrol/kcontrol/modules.cpp -=================================================================== ---- kcontrol/kcontrol/modules.cpp.orig -+++ kcontrol/kcontrol/modules.cpp -@@ -19,6 +19,7 @@ - - #include <unistd.h> - #include <sys/types.h> -+#include <stdlib.h> - - - #include <qlabel.h> -@@ -59,6 +60,10 @@ ConfigModule::~ConfigModule() - - ProxyWidget *ConfigModule::module() - { -+ KDesktopFile kd(service()->desktopEntryPath()); -+ if ( !kd.readEntry("X-SuSE-YaST-Call").isEmpty() ) -+ setenv("KCMYAST2_CALL", kd.readEntry("X-SuSE-YaST-Call").latin1(), 1 ); -+ - if (_module) - return _module; - -@@ -168,6 +173,7 @@ void ConfigModule::runAsRoot() - // prepare the process to run the kcmshell - QString cmd = service()->exec().stripWhiteSpace(); - bool kdeshell = false; -+ bool proxy = false; - if (cmd.left(5) == "kdesu") - { - cmd = cmd.remove(0,5).stripWhiteSpace(); -@@ -185,6 +191,15 @@ void ConfigModule::runAsRoot() - kdeshell = true; - } - -+ KDesktopFile kd(service()->desktopEntryPath()); -+ if ( !kd.readEntry("X-SuSE-YaST-Call").isEmpty() ){ -+ kdeshell = true; -+ proxy = true; -+ cmd=service()->desktopEntryPath(); -+ -+ setenv("KCMYAST2_CALL", kd.readEntry("X-SuSE-YaST-Call").latin1(), 1 ); -+ } -+ - // run the process - QString kdesu = KStandardDirs::findExe("kdesu"); - if (!kdesu.isEmpty()) -@@ -196,12 +211,12 @@ void ConfigModule::runAsRoot() - // in that case the modules is started through kdesud and kdesu - // returns before the module is running and that doesn't work. - // We also don't have a way to close the module in that case. -- *_rootProcess << "--n"; // Don't keep password. -+ *_rootProcess << "--n" << "-t"; // Don't keep password. - if (kdeshell) { -- *_rootProcess << QString("%1 %2 --embed %3 --lang %4").arg(locate("exe", "kcmshell")).arg(cmd).arg(_embedWidget->winId()).arg(KGlobal::locale()->language()); -+ *_rootProcess << QString("%1 %2 %3 %4 --lang %5").arg(locate("exe", "kcmshell")).arg(cmd).arg(proxy?"--embed-proxy":"--embed").arg(_embedWidget->winId()).arg(KGlobal::locale()->language()); - } - else { -- *_rootProcess << QString("%1 --embed %2 --lang %3").arg(cmd).arg(_embedWidget->winId()).arg( KGlobal::locale()->language() ); -+ *_rootProcess << QString("%1 %2 %3 --lang %4").arg(cmd).arg(proxy?"--embed-proxy":"--embed").arg(_embedWidget->winId()).arg( KGlobal::locale()->language() ); - } - - connect(_rootProcess, SIGNAL(processExited(KProcess*)), this, SLOT(rootExited(KProcess*))); diff --git a/opensuse/tdebase/fix-kio-smb-auth.diff b/opensuse/tdebase/fix-kio-smb-auth.diff deleted file mode 100644 index d591be038..000000000 --- a/opensuse/tdebase/fix-kio-smb-auth.diff +++ /dev/null @@ -1,13 +0,0 @@ -? kioslave/smb/kio_smb_la_all_cpp.cpp -Index: kioslave/smb/kio_smb_auth.cpp -=================================================================== ---- kioslave/smb/kio_smb_auth.cpp.orig -+++ kioslave/smb/kio_smb_auth.cpp -@@ -144,6 +144,7 @@ bool SMBSlave::checkPassword(SMBUrl &url - if ( openPassDlg(info) ) { - kdDebug(KIO_SMB) << "openPassDlg returned " << info.username << endl; - url.setUser(info.username); -+ url.setPass(info.password); - return true; - } - kdDebug(KIO_SMB) << "no value from openPassDlg\n"; diff --git a/opensuse/tdebase/fix-lockup-from-gnome-apps.diff b/opensuse/tdebase/fix-lockup-from-gnome-apps.diff deleted file mode 100644 index 05fc4313b..000000000 --- a/opensuse/tdebase/fix-lockup-from-gnome-apps.diff +++ /dev/null @@ -1,20 +0,0 @@ -Index: khelpcenter/navigator.cpp -=================================================================== ---- khelpcenter/navigator.cpp.orig -+++ khelpcenter/navigator.cpp -@@ -333,9 +333,14 @@ void Navigator::selectItem( const KURL & - // First, populate the NavigatorAppItems if we don't want the home page - if ( url != homeURL() ) { - for ( QListViewItem *item = mContentsTree->firstChild(); item; -- item = item->nextSibling() ) { -+ item = item->nextSibling() ) { - NavigatorAppItem *appItem = dynamic_cast<NavigatorAppItem *>( item ); - if ( appItem ) appItem->populate( true /* recursive */ ); -+ for ( QListViewItem *subitem = item->firstChild(); subitem; -+ subitem = subitem->nextSibling() ) { -+ appItem = dynamic_cast<NavigatorAppItem *>( subitem ); -+ if ( appItem ) appItem->populate( true /* recursive */ ); -+ } - } - } - diff --git a/opensuse/tdebase/fix_default_theme_reset.diff b/opensuse/tdebase/fix_default_theme_reset.diff deleted file mode 100644 index 2b2a6805a..000000000 --- a/opensuse/tdebase/fix_default_theme_reset.diff +++ /dev/null @@ -1,59 +0,0 @@ -Index: kcontrol/kthememanager/ktheme.cpp -=================================================================== ---- kcontrol/kthememanager/ktheme.cpp.orig -+++ kcontrol/kthememanager/ktheme.cpp -@@ -188,11 +188,11 @@ QString KTheme::createYourself( bool pac - globalConf->setGroup( "Icons" ); - QDomElement iconElem = m_dom.createElement( "icons" ); - iconElem.setAttribute( "name", globalConf->readEntry( "Theme",KIconTheme::current() ) ); -- createIconElems( "DesktopIcons", "desktop", iconElem, globalConf ); -- createIconElems( "MainToolbarIcons", "mainToolbar", iconElem, globalConf ); -- createIconElems( "PanelIcons", "panel", iconElem, globalConf ); -- createIconElems( "SmallIcons", "small", iconElem, globalConf ); -- createIconElems( "ToolbarIcons", "toolbar", iconElem, globalConf ); -+ createIconElems( "DesktopIcons", "desktop", 32, iconElem, globalConf ); -+ createIconElems( "MainToolbarIcons", "mainToolbar", 22, iconElem, globalConf ); -+ createIconElems( "PanelIcons", "panel", 32, iconElem, globalConf ); -+ createIconElems( "SmallIcons", "small", 16, iconElem, globalConf ); -+ createIconElems( "ToolbarIcons", "toolbar", 22, iconElem, globalConf ); - m_root.appendChild( iconElem ); - - // 4. Sounds -@@ -726,7 +726,7 @@ QString KTheme::getProperty( QDomElement - } - - void KTheme::createIconElems( const QString & group, const QString & object, -- QDomElement parent, KConfig * cfg ) -+ int defsize, QDomElement parent, KConfig * cfg ) - { - cfg->setGroup( group ); - QStringList elemNames; -@@ -745,7 +745,9 @@ void KTheme::createIconElems( const QStr - QDomElement tmpCol = m_dom.createElement( *it ); - tmpCol.setAttribute( "object", object ); - -- if ( (*it).contains( "Value" ) || *it == "Size" ) -+ if ( *it == "Size" ) -+ tmpCol.setAttribute( "value", cfg->readNumEntry( *it, defsize ) ); -+ else if ( (*it).contains( "Value" )) - tmpCol.setAttribute( "value", cfg->readNumEntry( *it, 1 ) ); - else if ( (*it).contains( "DisabledEffect" ) ) - tmpCol.setAttribute( "name", cfg->readEntry( *it, "togray" ) ); -Index: kcontrol/kthememanager/ktheme.h -=================================================================== ---- kcontrol/kthememanager/ktheme.h.orig -+++ kcontrol/kthememanager/ktheme.h -@@ -155,11 +155,12 @@ private: - * Creates a list of "icon" elements based on: - * @param group The group in the KConfig object @p cfg - * @param object Specifier (similiar, but not identical to @p group) -+ * @param defsize default icon size - * @param parent Parent element to append to - * @param cfg The KConfig object to work with - */ - void createIconElems( const QString & group, const QString & object, -- QDomElement parent, KConfig * cfg ); -+ int defsize, QDomElement parent, KConfig * cfg ); - - /** - * Creates a color DOM element @p name, with a specifier @p object, diff --git a/opensuse/tdebase/gcc44.diff b/opensuse/tdebase/gcc44.diff deleted file mode 100644 index 999b5f3ca..000000000 --- a/opensuse/tdebase/gcc44.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- kcontrol/kfontinst/kfontinst/Fontmap.cpp.sav 2006-01-19 18:00:49.000000000 +0100 -+++ kcontrol/kfontinst/kfontinst/Fontmap.cpp 2009-05-29 14:50:08.000000000 +0200 -@@ -44,7 +44,7 @@ - - using namespace std; - --static char * findSpace(char *str) -+static const char * findSpace(const char *str) - { - while(str && *str!=' ' && *str!='\t') - str++; -@@ -65,7 +65,7 @@ static bool parseLine(const char *line, - char a[constMaxLen+1], - b[constFileMaxLen+1]; - -- char *slash1=strchr(line, '/'), -+ const char *slash1=strchr(line, '/'), - *space1=slash1 ? findSpace(slash1) : NULL, //strchr(slash1, ' ') : NULL, - *ob=slash1 ? strchr(slash1, '(') : NULL, - *cb=ob ? strchr(ob, ')') : NULL, diff --git a/opensuse/tdebase/hide-only-showin-entries.diff b/opensuse/tdebase/hide-only-showin-entries.diff deleted file mode 100644 index f403d38c5..000000000 --- a/opensuse/tdebase/hide-only-showin-entries.diff +++ /dev/null @@ -1,14 +0,0 @@ -Index: konqueror/konq_mainwindow.cc -=================================================================== ---- konqueror/konq_mainwindow.cc.orig -+++ konqueror/konq_mainwindow.cc -@@ -4926,6 +4926,9 @@ void KonqMainWindow::updateOpenWithActio - KTrader::OfferList::ConstIterator end = services.end(); - for (; it != end; ++it ) - { -+ if ( (*it)->noDisplay() ) -+ continue; -+ - KAction *action = new KAction( i18n( "Open with %1" ).arg( (*it)->name() ), 0, 0, (*it)->desktopEntryName().latin1() ); - action->setIcon( (*it)->icon() ); - diff --git a/opensuse/tdebase/improve-panelservicemenu-geticonset.diff b/opensuse/tdebase/improve-panelservicemenu-geticonset.diff deleted file mode 100644 index 842976d5a..000000000 --- a/opensuse/tdebase/improve-panelservicemenu-geticonset.diff +++ /dev/null @@ -1,32 +0,0 @@ -Index: kicker/libkicker/global.cpp -=================================================================== ---- kicker/libkicker/global.cpp.orig -+++ kicker/libkicker/global.cpp -@@ -425,6 +425,12 @@ QIconSet menuIconSet(const QString& icon - KIcon::ActiveState, - 0, - true); -+ QPixmap disabled = KGlobal::iconLoader()->loadIcon(icon, -+ KIcon::Small, -+ 0, -+ KIcon::DisabledState, -+ 0, -+ true); - - // make sure they are not larger than 20x20 - if (normal.width() > 20 || normal.height() > 20) -@@ -437,8 +443,14 @@ QIconSet menuIconSet(const QString& icon - active.convertFromImage(active.convertToImage().smoothScale(20,20)); - } - -+ if (disabled.width() > 20 || disabled.height() > 20) -+ { -+ disabled.convertFromImage(disabled.convertToImage().smoothScale(20,20)); -+ } -+ - iconset.setPixmap(normal, QIconSet::Small, QIconSet::Normal); - iconset.setPixmap(active, QIconSet::Small, QIconSet::Active); -+ iconset.setPixmap(disabled, QIconSet::Small, QIconSet::Disabled); - } - } - diff --git a/opensuse/tdebase/ioslaveinfo-icon.diff b/opensuse/tdebase/ioslaveinfo-icon.diff deleted file mode 100644 index 5f64f89d9..000000000 --- a/opensuse/tdebase/ioslaveinfo-icon.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: kcontrol/ioslaveinfo/ioslaveinfo.desktop -=================================================================== ---- kcontrol/ioslaveinfo/ioslaveinfo.desktop.orig -+++ kcontrol/ioslaveinfo/ioslaveinfo.desktop -@@ -79,7 +79,7 @@ Comment[zh_TW]=å¯ç”¨å”定的資訊 - Comment[zu]=Ulwazi mayelana nemithetho elandelwayo ekhona - DocPath=kinfocenter/protocols/index.html - Exec=kcmshell ioslaveinfo --Icon=history -+Icon=enhanced_browsing - Keywords=Protocol,IO slaves,Slaves,Network,Information,Timeout - Keywords[ar]=الميÙاق,IO Slaves,Slaves,الشبكة,معلومات Ù†Ùاذ الوقت - Keywords[az]=Protokol, IO KölÉ™lÉ™ri, KölÉ™lÉ™r, ŞəbÉ™kÉ™,MÉ™'lumat, Vaxt Dolması diff --git a/opensuse/tdebase/kcheckpass-pam-11.0 b/opensuse/tdebase/kcheckpass-pam-11.0 deleted file mode 100644 index eae973612..000000000 --- a/opensuse/tdebase/kcheckpass-pam-11.0 +++ /dev/null @@ -1,6 +0,0 @@ -#%PAM-1.0 -auth include common-auth -account include common-account -password include common-password -session include common-session -session required pam_resmgr.so diff --git a/opensuse/tdebase/kcheckpass-pam-11.1 b/opensuse/tdebase/kcheckpass-pam-11.1 deleted file mode 100644 index c6a7c9c90..000000000 --- a/opensuse/tdebase/kcheckpass-pam-11.1 +++ /dev/null @@ -1,5 +0,0 @@ -#%PAM-1.0 -auth include common-auth -account include common-account -password include common-password -session include common-session diff --git a/opensuse/tdebase/kcheckpass-pam-legacy b/opensuse/tdebase/kcheckpass-pam-legacy deleted file mode 100644 index 87df34589..000000000 --- a/opensuse/tdebase/kcheckpass-pam-legacy +++ /dev/null @@ -1,7 +0,0 @@ -#%PAM-1.0 -auth include common-auth -account include common-account -password include common-password -session include common-session -session required pam_devperm.so -session required pam_resmgr.so diff --git a/opensuse/tdebase/kcheckpass.8.gz b/opensuse/tdebase/kcheckpass.8.gz Binary files differdeleted file mode 100644 index 81f8aae2a..000000000 --- a/opensuse/tdebase/kcheckpass.8.gz +++ /dev/null diff --git a/opensuse/tdebase/kcminit-ignore-arts.diff b/opensuse/tdebase/kcminit-ignore-arts.diff deleted file mode 100644 index 2c987aae1..000000000 --- a/opensuse/tdebase/kcminit-ignore-arts.diff +++ /dev/null @@ -1,14 +0,0 @@ -Index: kcminit/main.cpp -=================================================================== ---- kcminit/main.cpp.orig -+++ kcminit/main.cpp -@@ -98,6 +98,9 @@ void KCMInit::runModules( int phase ) - if (library.isEmpty()) - library = service->library(); - -+ if (library == "arts" && list.size() > 1) -+ continue; -+ - if (library.isEmpty() || service->init().isEmpty()) - continue; // Skip - diff --git a/opensuse/tdebase/kcmkdm-default-grub.diff b/opensuse/tdebase/kcmkdm-default-grub.diff deleted file mode 100644 index 1d758eb57..000000000 --- a/opensuse/tdebase/kcmkdm-default-grub.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: kcontrol/kdm/kdm-shut.cpp -=================================================================== ---- kcontrol/kdm/kdm-shut.cpp.orig -+++ kcontrol/kdm/kdm-shut.cpp -@@ -90,7 +90,7 @@ KDMSessionsWidget::KDMSessionsWidget(QWi - QGroupBox *group4 = new QGroupBox( i18n("Miscellaneous"), this ); - - bm_combo = new KBackedComboBox( group4 ); -- bm_combo->insertItem("None", i18n("boot manager", "None")); -+ bm_combo->insertItem("None", i18n("boot manager", "Grub")); - bm_combo->insertItem("Grub", i18n("Grub")); - #if defined(__linux__) && ( defined(__i386__) || defined(__amd64__) ) - bm_combo->insertItem("Lilo", i18n("Lilo")); diff --git a/opensuse/tdebase/kcmsamba_log.diff b/opensuse/tdebase/kcmsamba_log.diff deleted file mode 100644 index e29ca1e13..000000000 --- a/opensuse/tdebase/kcmsamba_log.diff +++ /dev/null @@ -1,31 +0,0 @@ -Index: kcontrol/samba/kcmsambalog.cpp -=================================================================== ---- kcontrol/samba/kcmsambalog.cpp.orig -+++ kcontrol/samba/kcmsambalog.cpp -@@ -39,7 +39,7 @@ LogView::LogView(QWidget *parent,KConfig - ,configFile(config) - ,filesCount(0) - ,connectionsCount(0) --,logFileName("/var/log/samba.log",this) -+,logFileName("/var/log/samba/log.smbd",this) - ,label(&logFileName,i18n("Samba log file: "),this) - ,viewHistory(this) - ,showConnOpen(i18n("Show opened connections"),this) -@@ -88,7 +88,7 @@ LogView::LogView(QWidget *parent,KConfig - " on this page. The log file (shown above) will be read to obtain the" - " events logged by samba.") ); - -- logFileName.setURL("/var/log/samba.log"); -+ logFileName.setURL("/var/log/samba/log.smbd"); - - viewHistory.setAllColumnsShowFocus(TRUE); - viewHistory.setFocusPolicy(QWidget::ClickFocus); -@@ -130,7 +130,7 @@ void LogView::loadSettings() - { - if (configFile==0) return; - configFile->setGroup(LOGGROUPNAME); -- logFileName.setURL(configFile->readPathEntry( "SambaLogFile", "/var/log/samba.log")); -+ logFileName.setURL(configFile->readPathEntry( "SambaLogFile", "/var/log/samba/log.smbd")); - - showConnOpen.setChecked(configFile->readBoolEntry( "ShowConnectionOpen", TRUE)); - showConnClose.setChecked(configFile->readBoolEntry( "ShowConnectionClose", FALSE)); diff --git a/opensuse/tdebase/kcmshell_use_kde-sound.diff b/opensuse/tdebase/kcmshell_use_kde-sound.diff deleted file mode 100644 index ac6d434e4..000000000 --- a/opensuse/tdebase/kcmshell_use_kde-sound.diff +++ /dev/null @@ -1,11 +0,0 @@ -Index: kcontrol/info/sound.desktop -=================================================================== ---- kcontrol/info/sound.desktop.orig -+++ kcontrol/info/sound.desktop -@@ -1,5 +1,5 @@ - [Desktop Entry] --Exec=kcmshell sound -+Exec=kcmshell kde-sound - Icon=kcmsound - Type=Application - DocPath=kinfocenter/sound/index.html diff --git a/opensuse/tdebase/kcontrol-energy.diff b/opensuse/tdebase/kcontrol-energy.diff deleted file mode 100644 index b98a648bc..000000000 --- a/opensuse/tdebase/kcontrol-energy.diff +++ /dev/null @@ -1,167 +0,0 @@ -Index: kcontrol/energy/energy.h -=================================================================== ---- kcontrol/energy/energy.h.orig -+++ kcontrol/energy/energy.h -@@ -44,6 +44,7 @@ private slots: - void slotChangeStandby(int); - void slotChangeSuspend(int); - void slotChangeOff(int); -+ void slotLaunchKPowersave(); - void openURL(const QString &); - - private: -@@ -54,7 +55,7 @@ private: - static void applySettings(bool, int, int, int); - friend void init_energy(); - -- bool m_bChanged, m_bDPMS, m_bEnabled, m_bMaintainSanity; -+ bool m_bChanged, m_bDPMS, m_bKPowersave, m_bEnabled, m_bMaintainSanity; - int m_Standby, m_Suspend, m_Off; - int m_StandbyDesired, m_SuspendDesired, m_OffDesired; - -Index: kcontrol/energy/energy.cpp -=================================================================== ---- kcontrol/energy/energy.cpp.orig -+++ kcontrol/energy/energy.cpp -@@ -26,6 +26,7 @@ - #include <qlabel.h> - #include <qlayout.h> - #include <qwhatsthis.h> -+#include <qpushbutton.h> - - #include <kconfig.h> - #include <kcursor.h> -@@ -36,6 +37,7 @@ - #include <krun.h> - #include <kstandarddirs.h> - #include <kurllabel.h> -+#include <dcopref.h> - - #include <X11/X.h> - #include <X11/Xlib.h> -@@ -140,6 +142,7 @@ KEnergy::KEnergy(QWidget *parent, const - m_Suspend = DFLT_SUSPEND; - m_Off = DFLT_OFF; - m_bDPMS = false; -+ m_bKPowersave = false; - m_bMaintainSanity = true; - - setQuickHelp( i18n("<h1>Display Power Control</h1> If your display supports" -@@ -154,6 +157,13 @@ KEnergy::KEnergy(QWidget *parent, const - #ifdef HAVE_DPMS - int dummy; - m_bDPMS = DPMSQueryExtension(qt_xdisplay(), &dummy, &dummy); -+ -+ DCOPRef kpowersave("kpowersave", "KPowersaveIface"); -+ DCOPReply managingDPMS = kpowersave.call("currentSchemeManagesDPMS()"); -+ if (managingDPMS.isValid()) { -+ m_bKPowersave = managingDPMS; -+ m_bDPMS = !m_bKPowersave; -+ } - #endif - - QVBoxLayout *top = new QVBoxLayout(this, 0, KDialog::spacingHint()); -@@ -162,14 +172,26 @@ KEnergy::KEnergy(QWidget *parent, const - - QLabel *lbl; - if (m_bDPMS) { -- m_pCBEnable= new QCheckBox(i18n("&Enable display power management" ), this); -- connect(m_pCBEnable, SIGNAL(toggled(bool)), SLOT(slotChangeEnable(bool))); -- hbox->addWidget(m_pCBEnable); -+ KGlobal::locale()->insertCatalogue("kpowersave"); -+ -+ // ### these i18n strings need to be synced with kpowersave !! -+ m_pCBEnable= new QCheckBox(i18n("&Enable display power management" ), this); -+ connect(m_pCBEnable, SIGNAL(toggled(bool)), SLOT(slotChangeEnable(bool))); -+ hbox->addWidget(m_pCBEnable); - QWhatsThis::add( m_pCBEnable, i18n("Check this option to enable the" -- " power saving features of your display.") ); -- } else { -+ " power saving features of your display.") ); -+ -+ // ### -+ } else if(m_bKPowersave) { -+ m_pCBEnable = new QCheckBox(i18n("&Enable specific display power management"), this); -+ hbox->addWidget(m_pCBEnable); -+ m_bEnabled = false; -+ m_pCBEnable->setChecked(true); -+ m_pCBEnable->setEnabled(false); -+ -+ } else { - lbl = new QLabel(i18n("Your display does not support power saving."), this); -- hbox->addWidget(lbl); -+ hbox->addWidget(lbl); - } - - KURLLabel *logo = new KURLLabel(this); -@@ -183,6 +205,7 @@ connect(logo, SIGNAL(leftClickedURL(cons - hbox->addWidget(logo); - - // Sliders -+ if (!m_bKPowersave) { - m_pStandbySlider = new KIntNumInput(m_Standby, this); - m_pStandbySlider->setLabel(i18n("&Standby after:")); - m_pStandbySlider->setRange(0, 120, 10); -@@ -218,6 +241,17 @@ connect(logo, SIGNAL(leftClickedURL(cons - " greatest level of power saving that can be achieved while the" - " display is still physically turned on.") ); - -+ } -+ else { -+ m_pStandbySlider = 0; -+ m_pSuspendSlider = 0; -+ m_pOffSlider = 0; -+ QPushButton* btnKPowersave = new QPushButton(this); -+ btnKPowersave->setText(i18n("Configure KPowersave...")); -+ connect(btnKPowersave, SIGNAL(clicked()), SLOT(slotLaunchKPowersave())); -+ top->addWidget(btnKPowersave); -+ } -+ - top->addStretch(); - - if (m_bDPMS) -@@ -270,7 +304,8 @@ void KEnergy::defaults() - - void KEnergy::readSettings() - { -- m_bEnabled = m_pConfig->readBoolEntry("displayEnergySaving", false); -+ if (m_bDPMS) -+ m_bEnabled = m_pConfig->readBoolEntry("displayEnergySaving", false); - m_Standby = m_pConfig->readNumEntry("displayStandby", DFLT_STANDBY); - m_Suspend = m_pConfig->readNumEntry("displaySuspend", DFLT_SUSPEND); - m_Off = m_pConfig->readNumEntry("displayPowerOff", DFLT_OFF); -@@ -297,20 +332,27 @@ void KEnergy::writeSettings() - m_bChanged = false; - } - -+void KEnergy::slotLaunchKPowersave() -+{ -+ DCOPRef r("kpowersave", "KPowersaveIface"); -+ r.send("openConfigureDialog()"); -+} - - void KEnergy::showSettings() - { - m_bMaintainSanity = false; - - if (m_bDPMS) -- m_pCBEnable->setChecked(m_bEnabled); -+ m_pCBEnable->setChecked(m_bEnabled); - -- m_pStandbySlider->setEnabled(m_bEnabled); -- m_pStandbySlider->setValue(m_Standby); -- m_pSuspendSlider->setEnabled(m_bEnabled); -- m_pSuspendSlider->setValue(m_Suspend); -- m_pOffSlider->setEnabled(m_bEnabled); -- m_pOffSlider->setValue(m_Off); -+ if (!m_bKPowersave) { -+ m_pStandbySlider->setEnabled(m_bEnabled); -+ m_pStandbySlider->setValue(m_Standby); -+ m_pSuspendSlider->setEnabled(m_bEnabled); -+ m_pSuspendSlider->setValue(m_Suspend); -+ m_pOffSlider->setEnabled(m_bEnabled); -+ m_pOffSlider->setValue(m_Off); -+ } - - m_bMaintainSanity = true; - } diff --git a/opensuse/tdebase/kcontrol.diff b/opensuse/tdebase/kcontrol.diff deleted file mode 100644 index ab23e34ba..000000000 --- a/opensuse/tdebase/kcontrol.diff +++ /dev/null @@ -1,11 +0,0 @@ -Index: kcontrol/kcontrol/KControl.desktop -=================================================================== ---- kcontrol/kcontrol/KControl.desktop.orig -+++ kcontrol/kcontrol/KControl.desktop -@@ -1,4 +1,6 @@ - [Desktop Entry] -+Categories=Qt;KDE;X-SuSE-core -+OnlyShowIn=KDE; - Exec=kcontrol -caption "%c" %i %m - Icon=kcontrol - Type=Application diff --git a/opensuse/tdebase/kde3-session-restore.diff b/opensuse/tdebase/kde3-session-restore.diff deleted file mode 100644 index 6ade7063b..000000000 --- a/opensuse/tdebase/kde3-session-restore.diff +++ /dev/null @@ -1,12 +0,0 @@ -Index: kde3 -=================================================================== ---- kde3.orig -+++ kde3 -@@ -6,4 +6,7 @@ - # and make sure this script is in $PATH (e.g. make a symlink if necessary). - # - -+PATH=/opt/kde3/bin:${PATH/:\/opt\/kde3\/bin} -+export PATH -+ - exec "$@" diff --git a/opensuse/tdebase/kde3-session.diff b/opensuse/tdebase/kde3-session.diff deleted file mode 100644 index 763879088..000000000 --- a/opensuse/tdebase/kde3-session.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: kdm/kfrontend/sessions/kde.desktop.in -=================================================================== ---- kdm/kfrontend/sessions/kde.desktop.in.orig -+++ kdm/kfrontend/sessions/kde.desktop.in -@@ -3,7 +3,7 @@ Encoding=UTF-8 - Type=XSession - Exec=@KDE_BINDIR@/startkde - TryExec=@KDE_BINDIR@/startkde --Name=KDE -+Name=KDE3 - Name[hi]=केडीई - Name[mn]=КДР- Name[ta]=Kà®à®±à¯à®±à®•à¯ காவலன௠diff --git a/opensuse/tdebase/kdebase_khc_rellinks.diff b/opensuse/tdebase/kdebase_khc_rellinks.diff deleted file mode 100644 index e11269095..000000000 --- a/opensuse/tdebase/kdebase_khc_rellinks.diff +++ /dev/null @@ -1,606 +0,0 @@ -Index: khelpcenter/khelpcenterui.rc -=================================================================== ---- khelpcenter/khelpcenterui.rc.orig -+++ khelpcenter/khelpcenterui.rc -@@ -1,5 +1,5 @@ - <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> --<kpartgui name="khelpcenter" version="14"> -+<kpartgui name="khelpcenter" version="15"> - <MenuBar> - <Menu name="file" noMerge="1"> - <text>&File</text> -@@ -23,8 +23,8 @@ - </Menu> - <Menu name="go_web"> - <text>&Go</text> -- <Action name="prevPage" /> -- <Action name="nextPage" /> -+ <Action name="rellinks_previous" /> -+ <Action name="rellinks_next" /> - <Separator /> - <Action name="back" /> - <Action name="forward" /> -@@ -41,13 +41,19 @@ - <Action name="go_home" /> - <Action name="back" /> - <Action name="forward" /> -- <Separator /> -+ <Separator /> - <Action name="printFrame" /> - <Separator /> - <Action name="copy_text" /> - <Action name="find" /> -- <Separator /> - <Action name="incFontSizes" /> - <Action name="decFontSizes" /> -+ <Separator /> -+ <Action name="rellinks_top" /> -+ <Action name="rellinks_up" /> -+ <Action name="rellinks_first" /> -+ <Action name="rellinks_previous" /> -+ <Action name="rellinks_next" /> -+ <Action name="rellinks_last" /> - </ToolBar> - </kpartgui> -Index: khelpcenter/mainwindow.cpp -=================================================================== ---- khelpcenter/mainwindow.cpp.orig -+++ khelpcenter/mainwindow.cpp -@@ -41,6 +41,7 @@ - #include <kstatusbar.h> - #include <kstdaccel.h> - #include <kdialogbase.h> -+#include <kpopupmenu.h> - - #include <qsplitter.h> - #include <qtextedit.h> -@@ -106,6 +107,8 @@ MainWindow::MainWindow() - - connect( mDoc, SIGNAL( selectionChanged() ), - SLOT( enableCopyTextAction() ) ); -+ connect( mDoc, SIGNAL( completed() ), -+ SLOT( updateLinkActions() ) ); - - statusBar()->insertItem(i18n("Preparing Index"), 0, 1); - statusBar()->setItemAlignment(0, AlignLeft | AlignVCenter); -@@ -250,6 +253,8 @@ void MainWindow::setupActions() - new KAction( i18n( "Configure Fonts..." ), KShortcut(), this, SLOT( slotConfigureFonts() ), actionCollection(), "configure_fonts" ); - new KAction( i18n( "Increase Font Sizes" ), "viewmag+", KShortcut(), this, SLOT( slotIncFontSizes() ), actionCollection(), "incFontSizes" ); - new KAction( i18n( "Decrease Font Sizes" ), "viewmag-", KShortcut(), this, SLOT( slotDecFontSizes() ), actionCollection(), "decFontSizes" ); -+ -+ initActions(); - } - - void MainWindow::slotCopySelectedText() -@@ -462,6 +467,418 @@ void MainWindow::slotConfigureFonts() - mDoc->slotReload(); - } - -+void MainWindow::initActions() -+{ -+ kdDebug() << k_funcinfo << endl; -+ -+ // ------------- Navigation links -------------- -+ kaction_map["home"] = new KAction( i18n("&Top"), "2uparrow", KShortcut("Ctrl+Alt+T"), this, SLOT(goHome()), actionCollection(), "rellinks_top" ); -+ kaction_map["home"]->setWhatsThis( i18n("<p>This link references a home page or the top of some hierarchy.</p>") ); -+ -+ kaction_map["up"] = new KAction( i18n("&Up"), "1uparrow", KShortcut("Ctrl+Alt+U"), this, SLOT(goUp()), actionCollection(), "rellinks_up" ); -+ kaction_map["up"]->setWhatsThis( i18n("<p>This link references the immediate parent of the current document.</p>") ); -+ -+ bool isRTL = QApplication::reverseLayout(); -+ -+ kaction_map["begin"] = new KAction( i18n("&First"), isRTL ? "2rightarrow" : "2leftarrow", KShortcut("Ctrl+Alt+F"), this, SLOT(goFirst()), actionCollection(), "rellinks_first" ); -+ kaction_map["begin"]->setWhatsThis( i18n("<p>This link type tells search engines which document is considered by the author to be the starting point of the collection.</p>") ); -+ -+ kaction_map["prev"] = new KAction( i18n("&Previous"), isRTL ? "1rightarrow" : "1leftarrow", KShortcut("Ctrl+Alt+P"), this, SLOT(goPrevious()), actionCollection(), "rellinks_previous" ); -+ kaction_map["prev"]->setWhatsThis( i18n("<p>This link references the previous document in an ordered series of documents.</p>") ); -+ -+ kaction_map["next"] = new KAction( i18n("&Next"), isRTL ? "1leftarrow" : "1rightarrow", KShortcut("Ctrl+Alt+N"), this, SLOT(goNext()), actionCollection(), "rellinks_next" ); -+ kaction_map["next"]->setWhatsThis( i18n("<p>This link references the next document in an ordered series of documents.</p>") ); -+ -+ kaction_map["last"] = new KAction( i18n("&Last"), isRTL ? "2leftarrow" : "2rightarrow", KShortcut("Ctrl+Alt+L"), this, SLOT(goLast()), actionCollection(), "rellinks_last" ); -+ kaction_map["last"]->setWhatsThis( i18n("<p>This link references the end of a sequence of documents.</p>") ); -+ -+ // ------------ special items -------------------------- -+ kaction_map["search"] = new KAction( i18n("&Search"), "filefind", KShortcut("Ctrl+Alt+S"), this, SLOT(goSearch()), actionCollection(), "rellinks_search" ); -+ kaction_map["search"]->setWhatsThis( i18n("<p>This link references the search.</p>") ); -+ -+ // ------------ Document structure links --------------- -+ m_document = new KActionMenu( i18n("Document"), "contents", actionCollection(), "rellinks_document" ); -+ m_document->setWhatsThis( i18n("<p>This menu contains the links referring the document information.</p>") ); -+ m_document->setDelayed(false); -+ -+ kaction_map["contents"] = new KAction( i18n("Table of &Contents"), "contents", KShortcut("Ctrl+Alt+C"), this, SLOT(goContents()), actionCollection(), "rellinks_toc" ); -+ m_document->insert(kaction_map["contents"]); -+ kaction_map["contents"]->setWhatsThis( i18n("<p>This link references the table of contents.</p>") ); -+ -+ kactionmenu_map["chapter"] = new KActionMenu( i18n("Chapters"), "fileopen", actionCollection(), "rellinks_chapters" ); -+ m_document->insert(kactionmenu_map["chapter"]); -+ connect( kactionmenu_map["chapter"]->popupMenu(), SIGNAL( activated( int ) ), this, SLOT(goChapter(int))); -+ kactionmenu_map["chapter"]->setWhatsThis( i18n("<p>This menu references the chapters of the document.</p>") ); -+ kactionmenu_map["chapter"]->setDelayed(false); -+ -+ kactionmenu_map["section"] = new KActionMenu( i18n("Sections"), "fileopen", actionCollection(), "rellinks_sections" ); -+ m_document->insert(kactionmenu_map["section"]); -+ connect( kactionmenu_map["section"]->popupMenu(), SIGNAL( activated( int ) ), this, SLOT( goSection( int ) ) ); -+ kactionmenu_map["section"]->setWhatsThis( i18n("<p>This menu references the sections of the document.</p>") ); -+ kactionmenu_map["section"]->setDelayed(false); -+ -+ kactionmenu_map["subsection"] = new KActionMenu( i18n("Subsections"), "fileopen", actionCollection(), "rellinks_subsections" ); -+ m_document->insert(kactionmenu_map["subsection"]); -+ connect( kactionmenu_map["subsection"]->popupMenu(), SIGNAL( activated( int ) ), this, SLOT( goSubsection( int ) ) ); -+ kactionmenu_map["subsection"]->setWhatsThis( i18n("<p>This menu references the subsections of the document.</p>") ); -+ kactionmenu_map["subsection"]->setDelayed(false); -+ -+ kactionmenu_map["appendix"] = new KActionMenu( i18n("Appendix"), "edit", actionCollection(), "rellinks_appendix" ); -+ m_document->insert(kactionmenu_map["appendix"]); -+ connect( kactionmenu_map["appendix"]->popupMenu(), SIGNAL( activated( int ) ), this, SLOT( goAppendix( int ) ) ); -+ kactionmenu_map["appendix"]->setWhatsThis( i18n("<p>This link references the appendix.</p>") ); -+ kactionmenu_map["appendix"]->setDelayed(false); -+ -+ kaction_map["glossary"] = new KAction( i18n("&Glossary"), "flag", KShortcut("Ctrl+Alt+G"), this, SLOT(goGlossary()), actionCollection(), "rellinks_glossary" ); -+ m_document->insert(kaction_map["glossary"]); -+ kaction_map["glossary"]->setWhatsThis( i18n("<p>This link references the glossary.</p>") ); -+ -+ kaction_map["index"] = new KAction( i18n("&Index"), "info", KShortcut("Ctrl+Alt+I"), this, SLOT(goIndex()), actionCollection(), "rellinks_index" ); -+ m_document->insert(kaction_map["index"]); -+ kaction_map["index"]->setWhatsThis( i18n("<p>This link references the index.</p>") ); -+ -+ // Other links -+ m_more = new KActionMenu( i18n("More"), "misc", actionCollection(), "rellinks_more" ); -+ m_more->setWhatsThis( i18n("<p>This menu contains other important links.</p>") ); -+ m_more->setDelayed(false); -+ -+ kaction_map["help"] = new KAction( i18n("&Help"), "help", KShortcut("Ctrl+Alt+H"), this, SLOT(goHelp()), actionCollection(), "rellinks_help" ); -+ m_more->insert(kaction_map["help"]); -+ kaction_map["help"]->setWhatsThis( i18n("<p>This link references the help.</p>") ); -+ -+ kaction_map["author"] = new KAction( i18n("&Authors"), "mail_new", KShortcut("Ctrl+Alt+A"), this, SLOT(goAuthor()), actionCollection(), "rellinks_authors" ); -+ m_more->insert(kaction_map["author"]); -+ kaction_map["author"]->setWhatsThis( i18n("<p>This link references the author.</p>") ); -+ -+ kaction_map["copyright"] = new KAction( i18n("Copy&right"), "signature", KShortcut("Ctrl+Alt+R"), this, SLOT(goCopyright()), actionCollection(), "rellinks_copyright" ); -+ m_more->insert(kaction_map["copyright"]); -+ kaction_map["copyright"]->setWhatsThis( i18n("<p>This link references the copyright.</p>") ); -+ -+ kactionmenu_map["bookmark"] = new KActionMenu( i18n("Bookmarks"), "bookmark_folder", actionCollection(), "rellinks_bookmarks" ); -+ m_more->insert(kactionmenu_map["bookmark"]); -+ kactionmenu_map["bookmark"]->setWhatsThis( i18n("<p>This menu references the bookmarks.</p>") ); -+ connect( kactionmenu_map["bookmark"]->popupMenu(), SIGNAL( activated( int ) ), this, SLOT( goBookmark( int ) ) ); -+ kactionmenu_map["bookmark"]->setDelayed(false); -+ -+ kactionmenu_map["alternate"] = new KActionMenu( i18n("Other Versions"), "attach", actionCollection(), "rellinks_other_versions" ); -+ m_more->insert(kactionmenu_map["alternate"]); -+ kactionmenu_map["alternate"]->setWhatsThis( i18n("<p>This link references the alternate versions of this document.</p>") ); -+ connect( kactionmenu_map["alternate"]->popupMenu(), SIGNAL( activated( int ) ), this, SLOT( goAlternate( int ) ) ); -+ kactionmenu_map["alternate"]->setDelayed(false); -+ -+ // Unclassified menu -+ m_links = new KActionMenu( i18n("Miscellaneous"), "rellinks", actionCollection(), "rellinks_links" ); -+ kactionmenu_map["unclassified"] = m_links; -+ kactionmenu_map["unclassified"]->setWhatsThis( i18n("<p>Miscellaneous links.</p>") ); -+ connect( kactionmenu_map["unclassified"]->popupMenu(), SIGNAL( activated( int ) ), this, SLOT( goAllElements( int ) ) ); -+ kactionmenu_map["unclassified"]->setDelayed(false); -+ -+ // We unactivate all the possible actions -+ disableAll(); -+} -+ -+/* Code from plugin_rellinks -+ * Copyright (C) 2002, Anders Lund <anders@alweb.dk> * -+ * Copyright (C) 2003, 2004, Franck Qu�ain <shift@free.fr> * -+ * Copyright (C) 2004, Kevin Krammer <kevin.krammer@gmx.at> * -+ * Copyright (C) 2004, 2005, Oliviet Goffart <ogoffart @ kde.org> -+*/ -+void MainWindow::updateLinkActions() -+{ -+ // We disable all -+ disableAll(); -+ -+ // get a list of LINK nodes in document -+ DOM::NodeList linkNodes = mDoc->document().getElementsByTagName( "link" ); -+ -+ kdDebug() << "HELP Rellinks: Link nodes =" << linkNodes.length() << endl; -+ -+ unsigned long nodeLength = linkNodes.length(); -+ -+ for ( unsigned int i=0; i < nodeLength; i++ ) { -+ // create a entry for each one -+ DOM::Element e( linkNodes.item( i ) ); -+ -+ -+ // --- Retrieve of the relation type -- -+ -+ QString rel = e.getAttribute( "rel" ).string(); -+ rel = rel.simplifyWhiteSpace(); -+ if (rel.isEmpty()) { -+ // If the "rel" attribut is null then use the "rev" attribute... -+ QString rev = e.getAttribute( "rev" ).string(); -+ rev = rev.simplifyWhiteSpace(); -+ if (rev.isEmpty()) { -+ // if "rev" attribut is also empty => ignore -+ continue; -+ } -+ // Determine the "rel" equivalent of "rev" type -+ rel = transformRevToRel(rev); -+ } -+ // Determin the name used internally -+ QString lrel = getLinkType(rel.lower()); -+ // relation to ignore -+ if (lrel.isEmpty()) continue; -+ kdDebug() << "lrel=" << lrel << endl; -+ -+ // -- Retrieve of other usefull informations -- -+ -+ QString href = e.getAttribute( "href" ).string(); -+ // if nowhere to go, ignore the link -+ if (href.isEmpty()) continue; -+ QString title = e.getAttribute( "title" ).string(); -+ QString hreflang = e.getAttribute( "hreflang" ).string(); -+ -+ KURL ref( mDoc->url(), href ); -+ if ( title.isEmpty() ) -+ title = ref.prettyURL(); -+ -+ // escape ampersand before settings as action title, otherwise the menu entry will interpret it as an -+ // accelerator -+ title.replace('&', "&&"); -+ -+ // -- Menus activation -- -+ -+ // Activation of "Document" menu ? -+ if (lrel == "contents" || lrel == "glossary" || lrel == "index" || lrel == "appendix") { -+ m_document->setEnabled(true); -+ } -+ // Activation of "More" menu ? -+ if (lrel == "help" || lrel == "author" || lrel == "copyright" ) { -+ m_more->setEnabled(true); -+ } -+ -+ // -- Buttons or menu items activation / creation -- -+ if (lrel == "bookmark" || lrel == "alternate") { -+ int id = kactionmenu_map[lrel]->popupMenu()->insertItem( title ); -+ m_more->setEnabled(true); -+ kactionmenu_map[lrel]->setEnabled(true); -+ element_map[lrel][id] = e; -+ -+ } else if (lrel == "appendix" || lrel == "chapter" || lrel == "section" || lrel == "subsection") { -+ int id = kactionmenu_map[lrel]->popupMenu()->insertItem( title ); -+ m_document->setEnabled(true); -+ kactionmenu_map[lrel]->setEnabled(true); -+ element_map[lrel][id] = e; -+ -+ } else { -+ // It is a unique action -+ element_map[lrel][0] = e; -+ if (kaction_map[lrel]) { -+ kaction_map[lrel]->setEnabled(true); -+ // Tooltip -+ if (hreflang.isEmpty()) { -+ kaction_map[lrel]->setToolTip( title ); -+ } else { -+ kaction_map[lrel]->setToolTip( title + " [" + hreflang + "]"); -+ } -+ } else { -+ // For the moment all the elements are reference in a separated menu -+ // TODO : reference the unknown ? -+ int id = kactionmenu_map["unclassified"]->popupMenu()->insertItem( lrel + " : " + title ); -+ kactionmenu_map["unclassified"]->setEnabled(true); -+ element_map["unclassified"][id] = e; -+ } -+ -+ } -+ -+ } -+} -+ -+void MainWindow::disableAll() { -+ element_map.clear(); -+ -+ // Clear actions -+ KActionMap::Iterator it; -+ for ( it = kaction_map.begin(); it != kaction_map.end(); ++it ) { -+ // If I don't test it crash :( -+ if (it.data()) { -+ it.data()->setEnabled(false); -+ it.data()->setToolTip(it.data()->text().remove('&')); -+ } -+ } -+ -+ // Clear actions -+ KActionMenuMap::Iterator itmenu; -+ for ( itmenu = kactionmenu_map.begin(); itmenu != kactionmenu_map.end(); ++itmenu ) { -+ // If I don't test it crash :( -+ if (itmenu.data()) { -+ itmenu.data()->popupMenu()->clear(); -+ itmenu.data()->setEnabled(false); -+ itmenu.data()->setToolTip(itmenu.data()->text().remove('&')); -+ } -+ } -+ -+ // Unactivate menus -+ m_more->setEnabled(false); -+ m_document->setEnabled(false); -+ -+} -+ -+QString MainWindow::getLinkType(const QString &lrel) { -+ // Relations to ignore... -+ if (lrel.contains("stylesheet") -+ || lrel == "script" -+ || lrel == "icon" -+ || lrel == "shortcut icon" -+ || lrel == "prefetch" ) -+ return QString::null; -+ -+ // ...known relations... -+ if (lrel == "top" || lrel == "origin" || lrel == "start") -+ return "home"; -+ if (lrel == "parent") -+ return "up"; -+ if (lrel == "first") -+ return "begin"; -+ if (lrel == "previous") -+ return "prev"; -+ if (lrel == "child") -+ return "next"; -+ if (lrel == "end") -+ return "last"; -+ if (lrel == "toc") -+ return "contents"; -+ if (lrel == "find") -+ return "search"; -+ if (lrel == "alternative stylesheet") -+ return "alternate stylesheet"; -+ if (lrel == "authors") -+ return "author"; -+ if (lrel == "toc") -+ return "contents"; -+ -+ //...unknown relations or name that don't need to change -+ return lrel; -+} -+ -+QString MainWindow::transformRevToRel(const QString &rev) { -+ QString altRev = getLinkType(rev); -+ -+ // Known relations -+ if (altRev == "prev") -+ return getLinkType("next"); -+ if (altRev == "next") -+ return getLinkType("prev"); -+ if (altRev == "made") -+ return getLinkType("author"); -+ if (altRev == "up") -+ return getLinkType("child"); -+ if (altRev == "sibling") -+ return getLinkType("sibling"); -+ -+ //...unknown inverse relation => ignore for the moment -+ return QString::null; -+} -+ -+void MainWindow::goHome() { -+ goToLink("home"); -+} -+ -+void MainWindow::goUp() { -+ goToLink("up"); -+} -+ -+void MainWindow::goFirst() { -+ goToLink("begin"); -+} -+ -+void MainWindow::goPrevious() { -+ goToLink("prev"); -+} -+ -+void MainWindow::goNext() { -+ goToLink("next"); -+} -+ -+void MainWindow::goLast() { -+ goToLink("last"); -+} -+ -+void MainWindow::goContents() { -+ goToLink("contents"); -+} -+ -+void MainWindow::goIndex() { -+ goToLink("index"); -+} -+ -+void MainWindow::goGlossary() { -+ goToLink("glossary"); -+} -+ -+void MainWindow::goHelp() { -+ goToLink("help"); -+} -+ -+void MainWindow::goSearch() { -+ goToLink("search"); -+} -+ -+void MainWindow::goAuthor() { -+ goToLink("author"); -+} -+ -+ -+void MainWindow::goCopyright() { -+ goToLink("copyright"); -+} -+ -+void MainWindow::goBookmark(int id) { -+ goToLink("bookmark", id); -+} -+ -+void MainWindow::goChapter(int id) { -+ goToLink("chapter", id); -+} -+ -+void MainWindow::goSection(int id) { -+ goToLink("section", id); -+} -+ -+void MainWindow::goSubsection(int id) { -+ goToLink("subsection", id); -+} -+ -+void MainWindow::goAppendix(int id) { -+ goToLink("appendix", id); -+} -+ -+void MainWindow::goAlternate(int id) { -+ goToLink("alternate", id); -+} -+ -+void MainWindow::goAllElements(int id) { -+ goToLink("unclassified", id); -+} -+ -+/** Menu links */ -+void MainWindow::goToLink(const QString & rel, int id) { -+ // have the KHTML part open it -+ if (!mDoc) -+ return; -+ -+ DOM::Element e = element_map[rel][id]; -+ QString href = e.getAttribute("href").string(); -+ KURL url( mDoc->url(), href ); -+ QString target = e.getAttribute("target").string(); -+ -+ // URL arguments -+ KParts::URLArgs args; -+ args.frameName = target; -+ -+ // Add base url if not valid -+ if (url.isValid()) { -+ mDoc->browserExtension()->openURLRequest(url, args); -+ } else { -+ KURL baseURL = mDoc->baseURL(); -+ QString endURL = url.prettyURL(); -+ KURL realURL = KURL(baseURL, endURL); -+ mDoc->browserExtension()->openURLRequest(realURL, args); -+ } -+ -+} -+ - #include "mainwindow.moc" - - // vim:ts=2:sw=2:et -Index: khelpcenter/mainwindow.h -=================================================================== ---- khelpcenter/mainwindow.h.orig -+++ khelpcenter/mainwindow.h -@@ -13,6 +13,15 @@ - #include "navigator.h" - #include "glossary.h" - -+#include <dom/dom_element.h> -+ -+class KAction; -+class KActionMenu; -+// type definitions -+typedef QMap<int,DOM::Element> DOMElementMap; -+typedef QMap<QString, KAction*> KActionMap; -+typedef QMap<QString, KActionMenu*> KActionMenuMap; -+ - class KHTMLPart; - class QSplitter; - -@@ -68,11 +77,43 @@ class MainWindow : public KMainWindow, p - void writeConfig(); - - protected slots: -+ void updateLinkActions(); - void enableLastSearchAction(); - void enableCopyTextAction(); - - private: - void stop(); -+ /** -+ * initialise all KActions -+ */ -+ void initActions(); -+ /** -+ * Function used to disable all the item of the toolbar (c) rellinks -+ */ -+ void disableAll(); -+ /** -+ * Function used to get link type of a relation. -+ * For example "prev" is of type "previous" and "toc" is of type "contents" -+ * If the relation must be ignored return NULL. -+ * If the relation is unknow return the input relation type. -+ * @param lrel Previous relation name -+ * @return New relation name -+ */ -+ QString getLinkType(const QString &lrel); -+ /** -+ * Function used to return the "rel" equivalent of "rev" link type -+ * If the equivalent is not found return NULL -+ * @param rev Inverse relation name -+ * @return Equivalent relation name -+ */ -+ QString transformRevToRel(const QString &rev) ; -+ -+ /** -+ * Go to the link (c) rellinks -+ * @param rel Relation name -+ * @param id Identifier of the menu item -+ */ -+ void goToLink(const QString & rel, int id=0); - - private slots: - void slotGlossSelected(const GlossaryEntry &entry); -@@ -90,7 +131,29 @@ class MainWindow : public KMainWindow, p - void slotConfigureFonts(); - void slotCopySelectedText(); - --private: -+ void goHome(); -+ void goUp(); -+ void goFirst(); -+ void goPrevious(); -+ void goNext(); -+ void goLast(); -+ void goContents(); -+ void goIndex(); -+ void goGlossary(); -+ void goHelp(); -+ void goSearch(); -+ void goCopyright(); -+ void goAuthor(); -+ -+ void goBookmark(int id); -+ void goChapter(int id); -+ void goSection(int id); -+ void goSubsection(int id); -+ void goAppendix(int id); -+ void goAlternate(int id); -+ void goAllElements(int id); -+ -+ private: - void updateZoomActions(); - - QSplitter *mSplitter; -@@ -100,6 +163,17 @@ private: - KAction *mLastSearchAction; - KAction *mCopyText; - LogDialog *mLogDialog; -+ //(c) rellinks -+ /** Map of KAction */ -+ KActionMap kaction_map; -+ /** Map of KActionMenu */ -+ KActionMenuMap kactionmenu_map; -+ /** Map of all the link element which can be managed by rellinks */ -+ QMap<QString,DOMElementMap> element_map; -+ KActionMenu *m_document; -+ KActionMenu *m_more; -+ KActionMenu *m_links; -+ - }; - - } diff --git a/opensuse/tdebase/kdebase_networkstatus_branch.diff b/opensuse/tdebase/kdebase_networkstatus_branch.diff deleted file mode 100644 index 8329d3cd2..000000000 --- a/opensuse/tdebase/kdebase_networkstatus_branch.diff +++ /dev/null @@ -1,36 +0,0 @@ -Index: konqueror/konq_frame.cc -=================================================================== ---- konqueror/konq_frame.cc.orig -+++ konqueror/konq_frame.cc -@@ -34,6 +34,7 @@ - #include <kprogress.h> - #include <klocale.h> - #include <ksqueezedtextlabel.h> -+#include <networkstatusindicator.h> - - #include "konq_events.h" - #include "konq_frame.h" -@@ -97,6 +98,10 @@ KonqFrameStatusBar::KonqFrameStatusBar( - m_progressBar->hide(); - addWidget( m_progressBar, 0, true /*permanent->right align*/ ); - -+ StatusBarNetworkStatusIndicator * indicator = new StatusBarNetworkStatusIndicator( this, "networkstatusindicator" ); -+ addWidget( indicator, 0, false ); -+ indicator->init(); -+ - fontChange(QFont()); - installEventFilter( this ); - } -Index: konqueror/Makefile.am -=================================================================== ---- konqueror/Makefile.am.orig -+++ konqueror/Makefile.am -@@ -48,7 +48,7 @@ noinst_HEADERS = KonqMainWindowIface.h K - konq_misc.h konq_openurlrequest.h konq_profiledlg.h konq_run.h \ - konq_view.h konq_viewmgr.h konq_extensionmanager.h version.h - --konqueror_la_LDFLAGS = -module $(KDE_PLUGIN) $(all_libraries) -+konqueror_la_LDFLAGS = -module $(KDE_PLUGIN) $(all_libraries) -lconnectionmanager - konqueror_la_LIBADD = ../libkonq/libkonq.la libkonqueror_intern.la $(LIBMALLOC) $(LIB_KUTILS) - - # Hmm, this experiment of a static konq failed, don't trust it... diff --git a/opensuse/tdebase/kdeeject.diff b/opensuse/tdebase/kdeeject.diff deleted file mode 100644 index d22e67fb6..000000000 --- a/opensuse/tdebase/kdeeject.diff +++ /dev/null @@ -1,58 +0,0 @@ -Index: kdeeject/kdeeject -=================================================================== ---- kdeeject/kdeeject.orig -+++ kdeeject/kdeeject -@@ -4,12 +4,38 @@ - # - # Copyright GPL v2 by David Faure <david@mandrakesoft.com> - # --if test $# -ge 1 -a "$1" != "--help"; then -- quiet=0 -- if test "$1" = "-q"; then -- quiet=1 -- shift -- fi -+quiet=0 -+if test "$1" = "-q"; then -+ quiet=1 -+ shift -+fi -+ -+if test "$1" = "--help"; then -+ echo "Usage: $0 <name> where name is a device or a mountpoint." -+ exit 0 -+fi -+ -+if test -z "$1"; then -+ for dev in /dev/cdrom /dev/dvd /dev/dvdram /dev/cdrecorder; do -+ if test -e $dev; then -+ lp=`readlink $dev` -+ if test -n "$lp"; then -+ device=/dev/$lp -+ else -+ device=$dev -+ fi -+ break -+ fi -+ done -+else -+ device=$1 -+fi -+ -+udi=`dcop kded mediamanager properties $device 2>/dev/null | head -n 1 ` -+if test -n "$udi"; then -+ dcop kded mediamanager unmount "$udi" >/dev/null 2>&1 -+fi -+ - # Checking for stuff in the PATH is ugly with sh. - # I guess this is the reason for making this a kde app... - OS=`uname -s` -@@ -34,7 +60,5 @@ if test $# -ge 1 -a "$1" != "--help"; th - elif test $quiet -eq 0; then - kdialog --title "KDE Eject" --error "Eject $1 failed!" - fi --else -- kdialog --title "KDE Eject" --msgbox "Usage: $0 <name> where name is a device or a mountpoint." --fi -+ - exit 1 diff --git a/opensuse/tdebase/kdesktop_icons.diff b/opensuse/tdebase/kdesktop_icons.diff deleted file mode 100644 index 5d208b0dd..000000000 --- a/opensuse/tdebase/kdesktop_icons.diff +++ /dev/null @@ -1,311 +0,0 @@ -Index: kdesktop/KDesktopIface.h -=================================================================== ---- kdesktop/KDesktopIface.h.orig -+++ kdesktop/KDesktopIface.h -@@ -107,6 +107,35 @@ k_dcop: - * space for desktop icons - */ - virtual void desktopIconsAreaChanged(const QRect &area, int screen) = 0; -+ -+ /** -+ * Find the next free place for a not yet existing icon, so it fits -+ * in the user arrangement. Basicly prepare for icons to be moved in. -+ * It will try to find a place in the virtual grid near col,row -+ * where no other icon is. -+ * -+ * If you specify -1 for row or column, it will try to find the next -+ * free room where no other icon follows. E.g. if you specify column -+ * = -1 and row = 0, kdesktop will find the next vertical placement -+ * so that the icon appears at the end of the existing icons preferable -+ * in the first column. If the first column is full, it will find the -+ * next free room in the second column. -+ * -+ * If you specify both column and row, kdesktop won't care for aligning, -+ * or surrounding icons, but try to find the free place near the given -+ * grid place (e.g. specify 0,0 to find the nearest place in the left -+ * upper corner). -+ */ -+ virtual QPoint findPlaceForIcon( int column, int row) = 0; -+ -+ /// copy the desktop file in the Desktop and place it at x, y -+ virtual void addIcon(const QString &url, int x, int y) = 0; -+ -+ /// same with specific destination -+ virtual void addIcon(const QString &url, const QString &dest, int x, int y) = 0; -+ -+ /// remove the desktop file (either full path or relative) -+ virtual void removeIcon(const QString &dest) = 0; - }; - - #endif -Index: kdesktop/desktop.cc -=================================================================== ---- kdesktop/desktop.cc.orig -+++ kdesktop/desktop.cc -@@ -32,6 +32,9 @@ - #include <unistd.h> - #include <kcolordrag.h> - #include <kurldrag.h> -+#include <stdlib.h> -+#include <kio/job.h> -+#include <qfile.h> - - #include <qdir.h> - #include <qevent.h> -@@ -58,6 +61,7 @@ - #include <kglobalsettings.h> - #include <kpopupmenu.h> - #include <kapplication.h> -+#include <kdirlister.h> - // Create the equivalent of KAccelBase::connectItem - // and then remove this include and fix reconnects in initRoot() -- ellis - //#include <kaccelbase.h> -@@ -983,4 +987,47 @@ bool KDesktop::event(QEvent * e) - return QWidget::event(e); - } - -+QPoint KDesktop::findPlaceForIcon( int column, int row ) -+{ -+ if (m_pIconView) -+ return m_pIconView->findPlaceForIcon(column, row); -+ else -+ return QPoint(-1, -1); -+} -+ -+void KDesktop::addIcon(const QString & _url, int x, int y) -+{ -+ addIcon( _url, KGlobalSettings::desktopPath(), x, y ); -+} -+ -+void KDesktop::addIcon(const QString & _url, const QString & _dest, int x, int y) -+{ -+ QString filename = _url.mid(_url.findRev('/') + 1); -+ -+ QValueList<KIO::CopyInfo> files; -+ KIO::CopyInfo i; -+ i.uSource = KURL::fromPathOrURL( _url ); -+ i.uDest = KURL::fromPathOrURL( _dest ); -+ i.uDest.addPath( filename ); -+ files.append(i); -+ if (!QFile::exists(i.uDest.prettyURL().replace("file://",QString::null))) { m_pIconView->slotAboutToCreate( QPoint( x, y ), files ); -+ KIO::copy( i.uSource, i.uDest, false ); } -+ -+// m_pIconView->addFuturePosition(filename, x, y); -+ // qDebug("addIcon %s %s %d %d", _url.latin1(), _dest.latin1(), x, y); -+// system(QString("cp \"%1\" \"%2/%3\"").arg(KURL(_url).path()).arg(KURL(_dest).path()).arg(filename).latin1()); -+// m_pIconView->update( _dest ); -+} -+ -+void KDesktop::removeIcon(const QString &_url) -+{ -+ if (_url.at(0) != '/') { -+ qDebug("removeIcon with relative path not supported for now"); -+ return; -+ } -+ unlink(KURL(_url).path().latin1()); -+ QString dest = _url.left(_url.findRev('/') + 1); -+ m_pIconView->update( dest ); -+} -+ - #include "desktop.moc" -Index: kdesktop/desktop.h -=================================================================== ---- kdesktop/desktop.h.orig -+++ kdesktop/desktop.h -@@ -164,6 +164,11 @@ protected: - virtual void setIconsEnabled( bool enable ); - virtual bool event ( QEvent * e ); - -+ virtual QPoint findPlaceForIcon( int column, int row); -+ virtual void addIcon(const QString &url, int x, int y); -+ virtual void addIcon(const QString &url, const QString &dest, int x, int y); -+ virtual void removeIcon(const QString &url); -+ - private slots: - void desktopResized(); - -Index: kdesktop/kdiconview.cc -=================================================================== ---- kdesktop/kdiconview.cc.orig -+++ kdesktop/kdiconview.cc -@@ -962,6 +962,18 @@ void KDIconView::slotNewItems( const KFi - kdDebug(1214) << "KDIconView::slotNewItems count=" << entries.count() << endl; - KFileItemListIterator it(entries); - KFileIVI* fileIVI = 0L; -+ -+ if (m_nextItemPos.isNull() && !m_dotDirectory) { -+ // Not found, we'll need to save the new pos -+ kdDebug(1214)<<"Neither a drop position stored nor m_dotDirectory set"<<endl; -+ m_dotDirectory = new KSimpleConfig( dotDirectoryPath(), true ); -+ // recursion -+ slotNewItems( entries ); -+ delete m_dotDirectory; -+ m_dotDirectory = 0; -+ return; -+ } -+ - for (; it.current(); ++it) - { - KURL url = it.current()->url(); -@@ -1026,15 +1038,6 @@ void KDIconView::slotNewItems( const KFi - kdDebug(1214)<<"Using saved position"<<endl; - } - } -- else -- { -- // Not found, we'll need to save the new pos -- kdDebug(1214)<<"slotNewItems(): New item without position information, try to find a sane location"<<endl; -- -- moveToFreePosition(fileIVI); -- -- m_bNeedSave = true; -- } - } - } - -@@ -1638,6 +1641,98 @@ void KDIconView::moveToFreePosition(QIco - } - - -+QPoint KDIconView::findPlaceForIconCol( int column, int dx, int dy) -+{ -+ if (column < 0) -+ return QPoint(); -+ -+ QRect rect; -+ rect.moveTopLeft( QPoint(column * dx, 0) ); -+ rect.setWidth(dx); -+ rect.setHeight(dy); -+ -+ if (rect.right() > viewport()->width()) -+ return QPoint(); -+ -+ while ( rect.bottom() < viewport()->height() - spacing() ) -+ { -+ if ( !isFreePosition(0,rect) ) -+ rect.moveBy(0, rect.height()); -+ else -+ return rect.topLeft(); -+ } -+ -+ return QPoint(); -+} -+ -+QPoint KDIconView::findPlaceForIconRow( int row, int dx, int dy ) -+{ -+ if (row < 0) -+ return QPoint(); -+ -+ QRect rect; -+ rect.moveTopLeft(QPoint(0, row * dy)); -+ rect.setWidth(dx); -+ rect.setHeight(dy); -+ -+ if (rect.bottom() > viewport()->height()) -+ return QPoint(); -+ -+ while (rect.right() < viewport()->width() - spacing()) -+ { -+ if (!isFreePosition(0,rect)) -+ rect.moveBy(rect.width()+spacing(), 0); -+ else -+ return rect.topLeft(); -+ } -+ -+ return QPoint(); -+} -+ -+QPoint KDIconView::findPlaceForIcon( int column, int row) -+{ -+ int dx = gridXValue(), dy = 0; -+ QIconViewItem *item = firstItem(); -+ for ( ; item; item = item->nextItem() ) { -+ dx = QMAX( dx, item->width() ); -+ dy = QMAX( dy, item->height() ); -+ } -+ -+ dx += spacing(); -+ dy += spacing(); -+ -+ if (row == -1) { -+ int max_cols = viewport()->width() / dx; -+ int delta = 0; -+ QPoint res; -+ do { -+ delta++; -+ res = findPlaceForIconCol(column + (delta / 2) * (-2 * (delta % 2) + 1), -+ dx, dy); -+ if (delta / 2 > QMAX(max_cols - column, column)) -+ return res; -+ } while (res.isNull()); -+ return res; -+ } -+ -+ if (column == -1) { -+ int max_rows = viewport()->height() / dy; -+ int delta = 0; -+ QPoint res; -+ do { -+ delta++; -+ res = findPlaceForIconRow(row + (delta / 2) * (-2 * (delta % 2) + 1), -+ dx, dy); -+ if (delta / 2 > QMAX(max_rows - row, row)) -+ return res; -+ } while (res.isNull()); -+ return res; -+ } -+ -+ // very unlikely - if I may add that -+ return QPoint(0, 0); -+} -+ - void KDIconView::saveIconPositions() - { - kdDebug(1214) << "KDIconView::saveIconPositions" << endl; -@@ -1665,4 +1760,11 @@ void KDIconView::saveIconPositions() - m_dotDirectory->sync(); - } - -+void KDIconView::update( const QString &_url ) -+{ -+ if (m_dirLister) -+ m_dirLister->updateDirectory( _url ); -+} -+ -+ - #include "kdiconview.moc" -Index: kdesktop/kdiconview.h -=================================================================== ---- kdesktop/kdiconview.h.orig -+++ kdesktop/kdiconview.h -@@ -73,6 +73,8 @@ public: - - QStringList selectedURLs(); - -+ void update( const QString &url ); -+ - /** - * Save the icon positions - */ -@@ -103,6 +105,10 @@ public: - - void startDirLister(); - -+ QPoint findPlaceForIconCol( int column, int dx, int dy ); -+ QPoint findPlaceForIconRow( int row, int dx, int dy ); -+ QPoint findPlaceForIcon( int column, int row ); -+ - protected slots: - - // slots connected to the icon view -@@ -112,8 +118,9 @@ protected slots: - void slotMouseButtonClickedKDesktop(int _button, QIconViewItem* _item, const QPoint& _global); - void slotContextMenuRequested(QIconViewItem* _item, const QPoint& _global); - void slotEnableAction( const char * name, bool enabled ); -+public slots: - void slotAboutToCreate(const QPoint &pos, const QValueList<KIO::CopyInfo> &files); -- -+protected slots: - void slotItemRenamed(QIconViewItem*, const QString &name); - - // slots connected to the directory lister diff --git a/opensuse/tdebase/kdesu-remember-keep-password.diff b/opensuse/tdebase/kdesu-remember-keep-password.diff deleted file mode 100644 index 29e9002d8..000000000 --- a/opensuse/tdebase/kdesu-remember-keep-password.diff +++ /dev/null @@ -1,18 +0,0 @@ -Subject: Default to kdesu password remembering on, but remember last state -From: Lubos Lunak -Feature: bnc#386531 -Patch-upstream: no -Relates: kdebase4/kdesu-remember-keep-password.diff, kdelibs3/kdesu-settings.diff - -Index: kdesu/kdesu/kdesu.cpp -=================================================================== ---- kdesu/kdesu/kdesu.cpp (revision 810363) -+++ kdesu/kdesu/kdesu.cpp (working copy) -@@ -382,6 +382,7 @@ - change_uid = false; - password = dlg.password(); - keep = dlg.keep(); -+ KConfigGroup(config,"Passwords").writeEntry("Keep", keep); - data.setSilent( KStartupInfoData::No ); - KStartupInfo::sendChange( id, data ); - } diff --git a/opensuse/tdebase/kdesud-security.diff b/opensuse/tdebase/kdesud-security.diff deleted file mode 100644 index 40b44de71..000000000 --- a/opensuse/tdebase/kdesud-security.diff +++ /dev/null @@ -1,21 +0,0 @@ -Index: kdesu/kdesud/kdesud.cpp -=================================================================== ---- kdesu/kdesud/kdesud.cpp.orig -+++ kdesu/kdesud/kdesud.cpp -@@ -45,6 +45,7 @@ - #include <pwd.h> - #include <errno.h> - -+#include <sys/prctl.h> - #include <sys/time.h> - #include <sys/stat.h> - #include <sys/types.h> -@@ -248,6 +249,8 @@ int create_socket() - - int main(int argc, char *argv[]) - { -+ prctl(PR_SET_DUMPABLE, 0); -+ - KAboutData aboutData("kdesud", I18N_NOOP("KDE su daemon"), - Version, I18N_NOOP("Daemon used by kdesu"), - KAboutData::License_Artistic, diff --git a/opensuse/tdebase/kdm-admin-mode.diff b/opensuse/tdebase/kdm-admin-mode.diff deleted file mode 100644 index 6028d7698..000000000 --- a/opensuse/tdebase/kdm-admin-mode.diff +++ /dev/null @@ -1,424 +0,0 @@ -Index: kdm/config.def -=================================================================== ---- kdm/config.def.orig -+++ kdm/config.def -@@ -2002,6 +2002,17 @@ Description: - Specify the widget style for the greeter. Empty means to use the - built-in default which currently is <literal>Plastik</literal>. - -+Key: UseAdminSession -+Type: bool -+Default: false -+User: greeter -+Instance: #*/! -+Comment: -+ Admin session -+Description: -+ If given there will be a special button that requires root password -+ and starts the given session -+ - Key: ColorScheme - Type: string - Default: "" -Index: kdm/kfrontend/Makefile.am -=================================================================== ---- kdm/kfrontend/Makefile.am.orig -+++ kdm/kfrontend/Makefile.am -@@ -21,6 +21,7 @@ kdm_greet_SOURCES = \ - kchooser.cpp \ - kgverify.cpp \ - kdmshutdown.cpp \ -+ kdmadmindialog.cpp \ - kgreeter.cpp \ - kgapp.cpp - kdm_greet_LDFLAGS = $(all_libraries) $(KDE_RPATH) -Index: kdm/kfrontend/kdmadmindialog.cpp -=================================================================== ---- /dev/null -+++ kdm/kfrontend/kdmadmindialog.cpp -@@ -0,0 +1,176 @@ -+ /* -+ -+ Admin dialog -+ -+ Copyright (C) 1997, 1998, 2000 Steffen Hansen <hansen@kde.org> -+ Copyright (C) 2000-2003 Oswald Buddenhagen <ossi@kde.org> -+ -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+ */ -+ -+#include "kdmadmindialog.h" -+#include "kdmconfig.h" -+#include "kgdialog.h" -+#include "kdm_greet.h" -+#include <stdlib.h> -+ -+#include <kapplication.h> -+#include <kseparator.h> -+#include <klocale.h> -+#include <kpushbutton.h> -+#include <kstdguiitem.h> -+ -+#include <qcombobox.h> -+#include <qvbuttongroup.h> -+#include <qstyle.h> -+#include <qlayout.h> -+#include <qaccel.h> -+#include <qpopupmenu.h> -+ -+int KDMAdmin::curPlugin = -1; -+PluginList KDMAdmin::pluginList; -+ -+KDMAdmin::KDMAdmin( const QString &user, QWidget *_parent ) -+ : inherited( _parent ) -+ , verify( 0 ), curUser(user) -+{ -+ QSizePolicy fp( QSizePolicy::Fixed, QSizePolicy::Fixed ); -+ -+ QVBoxLayout *box = new QVBoxLayout( this, 10 ); -+ -+ QHBoxLayout *hlay = new QHBoxLayout( box ); -+ -+ GSendInt( G_ReadDmrc ); -+ GSendStr( "root" ); -+ GRecvInt(); // ignore status code ... -+ -+ if (curPlugin < 0) { -+ curPlugin = 0; -+ pluginList = KGVerify::init( "classic" ); -+ } -+ verify = new KGStdVerify( this, this, -+ this, "root", -+ pluginList, KGreeterPlugin::Authenticate, -+ KGreeterPlugin::Shutdown ); -+ verify->selectPlugin( curPlugin ); -+ box->addLayout( verify->getLayout() ); -+ QAccel *accel = new QAccel( this ); -+ accel->insertItem( ALT+Key_A, 0 ); -+ connect( accel, SIGNAL(activated(int)), SLOT(slotActivatePlugMenu()) ); -+ -+ box->addWidget( new KSeparator( KSeparator::HLine, this ) ); -+ -+ okButton = new KPushButton( KStdGuiItem::ok(), this ); -+ okButton->setSizePolicy( fp ); -+ okButton->setDefault( true ); -+ cancelButton = new KPushButton( KStdGuiItem::cancel(), this ); -+ cancelButton->setSizePolicy( fp ); -+ -+ hlay = new QHBoxLayout( box ); -+ hlay->addStretch( 1 ); -+ hlay->addWidget( okButton ); -+ hlay->addStretch( 1 ); -+ hlay->addWidget( cancelButton ); -+ hlay->addStretch( 1 ); -+ -+ connect( okButton, SIGNAL(clicked()), SLOT(accept()) ); -+ connect( cancelButton, SIGNAL(clicked()), SLOT(reject()) ); -+ -+ slotWhenChanged(); -+} -+ -+KDMAdmin::~KDMAdmin() -+{ -+ hide(); -+ delete verify; -+} -+ -+void -+KDMAdmin::slotActivatePlugMenu() -+{ -+ QPopupMenu *cmnu = verify->getPlugMenu(); -+ QSize sh( cmnu->sizeHint() / 2 ); -+ cmnu->exec( geometry().center() - QPoint( sh.width(), sh.height() ) ); -+} -+ -+void -+KDMAdmin::accept() -+{ -+ verify->accept(); -+} -+ -+void -+KDMAdmin::slotWhenChanged() -+{ -+ verify->abort(); -+ verify->setEnabled( 1 ); -+ verify->start(); -+} -+ -+void -+KDMAdmin::bye_bye() -+{ -+ GSendInt( G_GetDmrc ); -+ GSendStr( "Session" ); -+ char *sess = GRecvStr(); -+ if (sess && strcmp(sess, "admin")) { -+ GSendInt( G_PutDmrc ); -+ GSendStr( "OrigSession"); -+ GSendStr( sess); -+ free(sess); -+ } -+ -+ GSendInt( G_PutDmrc ); -+ GSendStr( "Session" ); -+ GSendStr( "admin" ); -+ inherited::accept(); -+} -+ -+void -+KDMAdmin::verifyPluginChanged( int id ) -+{ -+ curPlugin = id; -+ adjustSize(); -+} -+ -+void -+KDMAdmin::verifyOk() -+{ -+ bye_bye(); -+} -+ -+void -+KDMAdmin::verifyFailed() -+{ -+ okButton->setEnabled( false ); -+ cancelButton->setEnabled( false ); -+} -+ -+void -+KDMAdmin::verifyRetry() -+{ -+ okButton->setEnabled( true ); -+ cancelButton->setEnabled( true ); -+} -+ -+void -+KDMAdmin::verifySetUser( const QString & ) -+{ -+} -+ -+ -+#include "kdmadmindialog.moc" -Index: kdm/kfrontend/kdmadmindialog.h -=================================================================== ---- /dev/null -+++ kdm/kfrontend/kdmadmindialog.h -@@ -0,0 +1,70 @@ -+ /* -+ -+ Shutdown dialog -+ -+ Copyright (C) 1997, 1998 Steffen Hansen <hansen@kde.org> -+ Copyright (C) 2000-2003 Oswald Buddenhagen <ossi@kde.org> -+ -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+ */ -+ -+ -+#ifndef KDMADMIN_H -+#define KDMADMIN_H -+ -+#include "kgverify.h" -+ -+#include <qradiobutton.h> -+ -+class LiloInfo; -+class QLabel; -+class KPushButton; -+class QButtonGroup; -+class QComboBox; -+ -+class KDMAdmin : public FDialog, public KGVerifyHandler { -+ Q_OBJECT -+ typedef FDialog inherited; -+ -+public: -+ KDMAdmin( const QString &user, QWidget *_parent = 0 ); -+ ~KDMAdmin(); -+ -+public slots: -+ void accept(); -+ void slotWhenChanged(); -+ void slotActivatePlugMenu(); -+ -+private: -+ void bye_bye(); -+ -+ KPushButton *okButton, *cancelButton; -+ KGStdVerify *verify; -+ QString curUser; -+ -+ static int curPlugin; -+ static PluginList pluginList; -+ -+public: // from KGVerifyHandler -+ virtual void verifyPluginChanged( int id ); -+ virtual void verifyOk(); -+ virtual void verifyFailed(); -+ virtual void verifyRetry(); -+ virtual void verifySetUser( const QString &user ); -+}; -+ -+#endif -Index: kdm/kfrontend/kgreeter.cpp -=================================================================== ---- kdm/kfrontend/kgreeter.cpp.orig -+++ kdm/kfrontend/kgreeter.cpp -@@ -27,6 +27,7 @@ Foundation, Inc., 51 Franklin Street, Fi - #include "kdmconfig.h" - #include "kdmclock.h" - #include "kdm_greet.h" -+#include "kdmadmindialog.h" - #include "themer/kdmthemer.h" - #include "themer/kdmitem.h" - #include "themer/kdmlabel.h" -@@ -509,7 +510,7 @@ KGreeter::insertSessions() - for (char **dit = _sessionsDirs; *dit; ++dit) { - QStringList ents = QDir( *dit ).entryList(); - for (QStringList::ConstIterator it = ents.begin(); it != ents.end(); ++it) -- if ((*it).endsWith( ".desktop" )) { -+ if ((*it).endsWith( ".desktop" ) && !(*it).endsWith("admin.desktop")) { - KSimpleConfig dsk( QString( *dit ).append( '/' ).append( *it ) ); - dsk.setGroup( "Desktop Entry" ); - putSession( (*it).left( (*it).length() - 8 ), -@@ -648,6 +649,17 @@ KGreeter::slotLoadPrevWM() - return; - } - } else { -+ if (!strcmp(sess, "admin")) { -+ // need to get the original -+ GSendInt( G_GetDmrc); -+ GSendStr( "OrigSession"); -+ sess = GRecvStr(); -+ if (!sess) { -+ free(sess); -+ sess = strdup("default"); -+ } -+ } -+ - for (uint i = 0; i < sessionTypes.count() && !sessionTypes[i].hid; i++) - if (sessionTypes[i].type == sess) { - free( sess ); -@@ -998,6 +1010,12 @@ KThemedGreeter::KThemedGreeter() - } - } - -+ admin_button = themer->findNode( "admin_button"); -+ if ( admin_button ) { -+ if ( !_useAdminSession ) -+ admin_button->hide( true ); -+ } -+ - if (plugMenu) { - inserten( i18n("&Authentication Method"), 0, plugMenu ); - needSep = true; -@@ -1103,6 +1121,8 @@ KThemedGreeter::slotThemeActivated( cons - slotSessMenu(); - else if (id == "system_button") - slotActionMenu(); -+ else if (id == "admin_button") -+ slotAskAdminPassword(); - } - - void -@@ -1129,4 +1149,15 @@ KThemedGreeter::keyPressEvent( QKeyEvent - accept(); - } - -+void -+KThemedGreeter::slotAskAdminPassword() -+{ -+ KDMAdmin k(curUser, this); -+ if (k.exec()) { -+ GSendInt(G_Ready); -+ hide(); -+ done(ex_exit); -+ } -+} -+ - #include "kgreeter.moc" -Index: kdm/kfrontend/kgreeter.h -=================================================================== ---- kdm/kfrontend/kgreeter.h.orig -+++ kdm/kfrontend/kgreeter.h -@@ -146,6 +146,7 @@ class KThemedGreeter : public KGreeter { - void slotThemeActivated( const QString &id ); - void slotSessMenu(); - void slotActionMenu(); -+ void slotAskAdminPassword(); - - protected: - virtual void updateStatus( bool fail, bool caps, int timedleft ); -@@ -158,7 +159,7 @@ class KThemedGreeter : public KGreeter { - KdmThemer *themer; - KdmItem *caps_warning, *xauth_warning, *pam_error, *timed_label, - *console_rect, *userlist_rect, -- *session_button, *system_button; -+ *session_button, *system_button, *admin_button; - - public: // from KGVerifyHandler - virtual void verifyFailed(); -Index: kdm/kfrontend/sessions/Makefile.am -=================================================================== ---- kdm/kfrontend/sessions/Makefile.am.orig -+++ kdm/kfrontend/sessions/Makefile.am -@@ -1,6 +1,6 @@ - sessionsdir = $(kde_datadir)/kdm/sessions - sessions_DATA = \ -- kde.desktop gnome.desktop \ -+ admin.desktop kde.desktop gnome.desktop \ - 9wm.desktop \ - aewm++.desktop \ - aewm.desktop \ -Index: kdm/kfrontend/sessions/admin.desktop -=================================================================== ---- /dev/null -+++ kdm/kfrontend/sessions/admin.desktop -@@ -0,0 +1,7 @@ -+[Desktop Entry] -+Encoding=UTF-8 -+Type=XSession -+Exec=YaSTadminSession -+TryExec=YaSTadminSession -+Name=admin -+Comment=Yast Admin Session -Index: kdm/kfrontend/themer/kdmlabel.cpp -=================================================================== ---- kdm/kfrontend/themer/kdmlabel.cpp.orig -+++ kdm/kfrontend/themer/kdmlabel.cpp -@@ -214,6 +214,7 @@ static const struct { - { "language", I18N_NOOP("&Language") }, - { "session", I18N_NOOP("Session &Type") }, - { "system", I18N_NOOP("&System") }, // i18n("Actions"); -+ { "admin", I18N_NOOP("&Administration") }, - { "disconnect", I18N_NOOP("&Disconnect") }, - { "quit", I18N_NOOP("&Quit") }, - { "halt", I18N_NOOP("Power O&ff") }, diff --git a/opensuse/tdebase/kdm-aliasing.diff b/opensuse/tdebase/kdm-aliasing.diff deleted file mode 100644 index 73fc86e54..000000000 --- a/opensuse/tdebase/kdm-aliasing.diff +++ /dev/null @@ -1,11 +0,0 @@ -Index: kdm/backend/Makefile.am -=================================================================== ---- kdm/backend/Makefile.am.orig -+++ kdm/backend/Makefile.am -@@ -1,5 +1,6 @@ - # forcibly remove thread-related defines & flags - AUTOMAKE_OPTIONS = foreign -+CFLAGS = $(XDM_CFLAGS) -fno-strict-aliasing - CPPFLAGS = $(USER_INCLUDES) $(X_INCLUDES) $(KRB4_INCS) $(KRB5_INCS) -I.. -I../.. - LDFLAGS = $(USER_LDFLAGS) $(X_LDFLAGS) $(X_RPATH) $(KRB4_RPATH) $(KRB5_RPATH) - LDADD = $(LIB_X11) -lXau $(LIBXDMCP) $(PASSWDLIBS) $(LIBSHADOW) $(LIBGEN) \ diff --git a/opensuse/tdebase/kdm-align-userlist-labels.diff b/opensuse/tdebase/kdm-align-userlist-labels.diff deleted file mode 100644 index 65accc55f..000000000 --- a/opensuse/tdebase/kdm-align-userlist-labels.diff +++ /dev/null @@ -1,46 +0,0 @@ -Index: kdm/kfrontend/kgreeter.cpp -=================================================================== ---- kdm/kfrontend/kgreeter.cpp.orig -+++ kdm/kfrontend/kgreeter.cpp -@@ -59,6 +59,7 @@ Foundation, Inc., 51 Franklin Street, Fi - #include <qtooltip.h> - #include <qaccel.h> - #include <qeventloop.h> -+#include <qbitmap.h> - - #include <pwd.h> - #include <grp.h> -@@ -313,6 +314,33 @@ KGreeter::insertUser( const QImage &defa - if ( p.isNull() ) - p = default_pix; - -+ const int size = 48; -+ const int wdiff = size - p.size().width(); -+ const int hdiff = size - p.size().height(); -+ if (wdiff>0 || hdiff>0) { -+ QPixmap pix(p); -+ QBitmap mask; -+ mask.convertFromImage(p.createAlphaMask()); -+ pix.resize(size, size); -+ bitBlt(&pix, wdiff/2.0, hdiff/2.0, &pix); -+ if (mask.isNull()) { -+ mask = QBitmap(size, size); -+ mask.fill(Qt::color1); -+ } -+ else { -+ mask.resize(size, size); -+ bitBlt(&mask, wdiff/2.0, hdiff/2.0, &mask); -+ } -+ QPainter pa(&mask); -+ pa.fillRect(0, 0, size, hdiff/2.0, Qt::color0); -+ pa.fillRect(0, 0, wdiff/2.0, size, Qt::color0); -+ pa.fillRect(size-(wdiff/2.0), 0, size, size, Qt::color0); -+ pa.fillRect(0, size-(hdiff/2.0), size, size, Qt::color0); -+ pa.end(); -+ pix.setMask(mask); -+ p=pix.convertToImage(); -+ } -+ - QString realname = KStringHandler::from8Bit( ps->pw_gecos ); - realname.truncate( realname.find( ',' ) ); - if (realname.isEmpty() || realname == username) diff --git a/opensuse/tdebase/kdm-all-users-nopass.diff b/opensuse/tdebase/kdm-all-users-nopass.diff deleted file mode 100644 index 612c6a553..000000000 --- a/opensuse/tdebase/kdm-all-users-nopass.diff +++ /dev/null @@ -1,34 +0,0 @@ -Index: kdm/backend/client.c -=================================================================== ---- kdm/backend/client.c.orig -+++ kdm/backend/client.c -@@ -386,6 +386,9 @@ AccNoPass( const char *un, struct passwd - if (cursource != PWSRC_MANUAL) - return 1; - -+ if (td->noPassAllUsers) -+ return 1; -+ - for (hg = 0, fp = td->noPassUsers; *fp; fp++) - if (**fp == '@') - hg = 1; -Index: kdm/config.def -=================================================================== ---- kdm/config.def.orig -+++ kdm/config.def -@@ -1852,6 +1852,15 @@ Description: - (and any other user with UID = 0). - <emphasis>Never</emphasis> list <systemitem class="username">root</systemitem>. - -+Key: NoPassAllUsers -+Type: bool -+Default: false -+User: core -+Instance: #:0/true -+Comment: & -+Description: -+ All users can login without password -+ - Key: AutoLoginEnable - Type: bool - Default: false diff --git a/opensuse/tdebase/kdm-audit-log.diff b/opensuse/tdebase/kdm-audit-log.diff deleted file mode 100644 index de571e44d..000000000 --- a/opensuse/tdebase/kdm-audit-log.diff +++ /dev/null @@ -1,190 +0,0 @@ -Index: kdm/backend/client.c -=================================================================== ---- kdm/backend/client.c.orig -+++ kdm/backend/client.c -@@ -87,6 +87,14 @@ extern int loginsuccess( const char *Use - #include "consolekit.h" - #endif - -+#define AU_FAILED 0 -+#define AU_SUCCESS 1 -+#ifdef HAVE_LIBAUDIT -+#include <libaudit.h> -+#else -+#define log_to_audit_system(l,h,d,s) do { ; } while (0) -+#endif -+ - /* - * Session data, mostly what struct verify_info was for - */ -@@ -291,6 +299,56 @@ fail_delay( int retval ATTR_UNUSED, unsi - {} - # endif - -+ /** -+ * log_to_audit_system: -+ * @login: Name of user -+ * @hostname: Name of host machine -+ * @tty: Name of display -+ * @success: 1 for success, 0 for failure -+ * -+ * Logs the success or failure of the login attempt with the linux kernel -+ * audit system. The intent is to capture failed events where the user -+ * fails authentication or otherwise is not permitted to login. There are -+ * many other places where pam could potentially fail and cause login to -+ * fail, but these are system failures rather than the signs of an account -+ * being hacked. -+ * -+ * Returns nothing. -+ */ -+ -+#ifdef HAVE_LIBAUDIT -+static void -+log_to_audit_system (const char *loginname, -+ const char *hostname, -+ const char *tty, -+ int success) -+{ -+ struct passwd *pw; -+ char buf[64]; -+ int audit_fd; -+ -+ audit_fd = audit_open(); -+ if (loginname) -+ pw = getpwnam(loginname); -+ else { -+ loginname = "unknown"; -+ pw = NULL; -+ } -+ Debug("log_to_audit %p %s\n", pw, loginname); -+ -+ if (pw) { -+ snprintf(buf, sizeof(buf), "uid=%d", pw->pw_uid); -+ audit_log_user_message(audit_fd, AUDIT_USER_LOGIN, -+ buf, hostname, NULL, tty, (int)success); -+ } else { -+ snprintf(buf, sizeof(buf), "acct=%s", loginname); -+ audit_log_user_message(audit_fd, AUDIT_USER_LOGIN, -+ buf, hostname, NULL, tty, (int)success); -+ } -+ close(audit_fd); -+} -+#endif -+ - static int - doPAMAuth( const char *psrv, struct pam_data *pdata ) - { -@@ -349,6 +407,8 @@ doPAMAuth( const char *psrv, struct pam_ - GSendStr( curuser ); - } - if (pretc != PAM_SUCCESS) { -+ /* Log the failed login attempt */ -+ log_to_audit_system (curuser, td->remoteHost, td->name, AU_FAILED); - switch (pretc) { - case PAM_USER_UNKNOWN: - case PAM_AUTH_ERR: -@@ -702,6 +762,8 @@ Verify( GConvFunc gconv, int rootok ) - if (!p->pw_uid) { - if (!rootok && !td->allowRootLogin) - V_RET_FAIL( "Root logins are not allowed" ); -+ /* Log the failed login attempt */ -+ log_to_audit_system (curuser, td->remoteHost, td->name, AU_FAILED); - return 1; /* don't deny root to log in */ - } - -@@ -738,6 +800,8 @@ Verify( GConvFunc gconv, int rootok ) - } - if (pretc == PAM_SUCCESS) - break; -+ /* Log the failed login attempt */ -+ log_to_audit_system (curuser, td->remoteHost, td->name, AU_FAILED); - /* effectively there is only PAM_AUTHTOK_ERR */ - GSendInt( V_FAIL ); - } -@@ -827,6 +891,8 @@ Verify( GConvFunc gconv, int rootok ) - GSendInt( V_MSG_ERR ); - GSendStr( "Your account has expired;" - " please contact your system administrator" ); -+ /* Log the failed login attempt */ -+ log_to_audit_system (curuser, td->remoteHost, td->name, AU_FAILED); - GSendInt( V_FAIL ); - LC_RET0; - } else if (tim > (expir - warntime) && !quietlog) { -@@ -861,6 +927,8 @@ Verify( GConvFunc gconv, int rootok ) - GSendInt( V_MSG_ERR ); - GSendStr( "Your account has expired;" - " please contact your system administrator" ); -+ /* Log the failed login attempt */ -+ log_to_audit_system (curuser, td->remoteHost, td->name, AU_FAILED); - GSendInt( V_FAIL ); - LC_RET0; - } -@@ -920,6 +988,8 @@ Verify( GConvFunc gconv, int rootok ) - close( fd ); - } - GSendStr( "Logins are not allowed at the moment.\nTry again later" ); -+ /* Log the failed login attempt */ -+ log_to_audit_system (curuser, td->remoteHost, td->name, AU_FAILED); - GSendInt( V_FAIL ); - LC_RET0; - } -@@ -930,6 +1000,8 @@ Verify( GConvFunc gconv, int rootok ) - PrepErrorGreet(); - GSendInt( V_MSG_ERR ); - GSendStr( "You are not allowed to login at the moment" ); -+ /* Log the failed login attempt */ -+ log_to_audit_system (curuser, td->remoteHost, td->name, AU_FAILED); - GSendInt( V_FAIL ); - LC_RET0; - } -@@ -941,6 +1013,8 @@ Verify( GConvFunc gconv, int rootok ) - Debug( "shell not in /etc/shells\n" ); - endusershell(); - V_RET_FAIL( "Your login shell is not listed in /etc/shells" ); -+ /* Log the failed login attempt */ -+ log_to_audit_system (curuser, td->remoteHost, td->name, AU_FAILED); - } - if (!strcmp( s, p->pw_shell )) { - endusershell(); -@@ -1365,6 +1439,9 @@ StartClient() - # define D_LOGIN_SETGROUP 0 - #endif /* USE_PAM */ - -+ /* Login succeeded */ -+ log_to_audit_system (curuser, td->remoteHost, td->name, AU_SUCCESS); -+ - removeAuth = 1; - chownCtrl( &td->ctrl, curuid ); - endpwent(); -Index: kdm/configure.in.in -=================================================================== ---- kdm/configure.in.in.orig -+++ kdm/configure.in.in -@@ -288,3 +288,27 @@ fi - AC_SUBST(DBUS_LIBS) - - dnl AC_OUTPUT(kdm/kfrontend/sessions/kde.desktop) -+ -+ -+AC_ARG_WITH(libaudit, -+ [ --with-libaudit=[auto/yes/no] Add Linux audit support [default=auto]],, -+ with_libaudit=auto) -+ -+# Check for Linux auditing API -+# -+# libaudit detection -+if test x$with_libaudit = xno ; then -+ have_libaudit=no; -+else -+ # See if we have audit daemon library -+ AC_CHECK_LIB(audit, audit_log_user_message, -+ have_libaudit=yes, have_libaudit=no) -+fi -+ -+AM_CONDITIONAL(HAVE_LIBAUDIT, test x$have_libaudit = xyes) -+ -+if test x$have_libaudit = xyes ; then -+ EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -laudit" -+ AC_DEFINE(HAVE_LIBAUDIT,1,[linux audit support]) -+fi -+ diff --git a/opensuse/tdebase/kdm-color-scheme.diff b/opensuse/tdebase/kdm-color-scheme.diff deleted file mode 100644 index f45486ad1..000000000 --- a/opensuse/tdebase/kdm-color-scheme.diff +++ /dev/null @@ -1,28 +0,0 @@ -Index: kdm/kfrontend/kgapp.cpp -=================================================================== ---- kdm/kfrontend/kgapp.cpp.orig -+++ kdm/kfrontend/kgapp.cpp -@@ -42,6 +42,7 @@ Foundation, Inc., 51 Franklin Street, Fi - #include <qtimer.h> - #include <qcursor.h> - #include <qpalette.h> -+#include <qfile.h> - - #include <stdlib.h> // free(), exit() - #include <unistd.h> // alarm() -@@ -144,7 +145,14 @@ kg_main( const char *argv0 ) - if (!_GUIStyle.isEmpty()) - app.setStyle( _GUIStyle ); - -- _colorScheme = locate( "data", "kdisplay/color-schemes/" + _colorScheme + ".kcsrc" ); -+ const QString _configColorScheme = _colorScheme; -+ -+ if (_useTheme && !_theme.isEmpty()) -+ _colorScheme = _theme + "/color.kcsrc"; -+ -+ if (!QFile::exists(_colorScheme)) -+ _colorScheme = locate( "data", "kdisplay/color-schemes/" + _configColorScheme + ".kcsrc" ); -+ - if (!_colorScheme.isEmpty()) { - KSimpleConfig config( _colorScheme, true ); - config.setGroup( "Color Scheme" ); diff --git a/opensuse/tdebase/kdm-consolekit.diff b/opensuse/tdebase/kdm-consolekit.diff deleted file mode 100644 index 9b4df34bc..000000000 --- a/opensuse/tdebase/kdm-consolekit.diff +++ /dev/null @@ -1,822 +0,0 @@ -Index: kdm/backend/client.c -=================================================================== ---- kdm/backend/client.c.orig -+++ kdm/backend/client.c -@@ -83,6 +83,10 @@ extern int loginsuccess( const char *Use - #endif - #include <signal.h> - -+#ifdef WITH_CONSOLE_KIT -+#include "consolekit.h" -+#endif -+ - /* - * Session data, mostly what struct verify_info was for - */ -@@ -1124,8 +1128,13 @@ static int removeSession; - static int removeCreds; - #endif - -+#ifdef WITH_CONSOLE_KIT -+int -+StartClient( const char *ck_session_cookie ) -+#else - int - StartClient() -+#endif - { - const char *home, *sessargs, *desksess; - char **env, *xma; -@@ -1223,6 +1232,11 @@ StartClient() - if (krbtkfile[0] != '\0') - env = setEnv( env, "KRBTKFILE", krbtkfile ); - #endif -+#ifdef WITH_CONSOLE_KIT -+ if (ck_session_cookie != NULL) { -+ env = setEnv ( env, "XDG_SESSION_COOKIE", ck_session_cookie ); -+ } -+#endif - userEnviron = inheritEnv( env, envvars ); - env = systemEnv( p->pw_name ); - systemEnviron = setEnv( env, "HOME", p->pw_dir ); -Index: kdm/backend/consolekit.c -=================================================================== ---- /dev/null -+++ kdm/backend/consolekit.c -@@ -0,0 +1,552 @@ -+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- -+ * -+ * Copyright (C) 2006-2007 William Jon McCann <mccann@jhu.edu> -+ * Copyright (C) 2007 Kevin Kofler <Kevin@tigcc.ticalc.org> -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ * -+ */ -+ -+#include "dm.h" -+#include "dm_auth.h" -+#include "dm_error.h" -+ -+#include <stdlib.h> -+#include <string.h> -+#include <pwd.h> -+ -+#define DBUS_API_SUBJECT_TO_CHANGE -+#include <dbus/dbus.h> -+ -+#include "consolekit.h" -+ -+ -+#define CK_NAME "org.freedesktop.ConsoleKit" -+#define CK_PATH "/org/freedesktop/ConsoleKit" -+#define CK_INTERFACE "org.freedesktop.ConsoleKit" -+#define CK_MANAGER_PATH "/org/freedesktop/ConsoleKit/Manager" -+#define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager" -+#define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session" -+ -+static DBusConnection *private_connection = NULL; -+ -+static void -+add_param_int (DBusMessageIter *iter_struct, -+ const char *key, -+ int value) -+{ -+ DBusMessageIter iter_struct_entry; -+ DBusMessageIter iter_var; -+ -+ dbus_message_iter_open_container (iter_struct, -+ DBUS_TYPE_STRUCT, -+ NULL, -+ &iter_struct_entry); -+ -+ dbus_message_iter_append_basic (&iter_struct_entry, -+ DBUS_TYPE_STRING, -+ &key); -+ -+ dbus_message_iter_open_container (&iter_struct_entry, -+ DBUS_TYPE_VARIANT, -+ DBUS_TYPE_INT32_AS_STRING, -+ &iter_var); -+ -+ dbus_message_iter_append_basic (&iter_var, -+ DBUS_TYPE_INT32, -+ &value); -+ -+ dbus_message_iter_close_container (&iter_struct_entry, -+ &iter_var); -+ -+ dbus_message_iter_close_container (iter_struct, &iter_struct_entry); -+} -+ -+static void -+add_param_boolean (DBusMessageIter *iter_struct, -+ const char *key, -+ int value) -+{ -+ DBusMessageIter iter_struct_entry; -+ DBusMessageIter iter_var; -+ -+ dbus_message_iter_open_container (iter_struct, -+ DBUS_TYPE_STRUCT, -+ NULL, -+ &iter_struct_entry); -+ -+ dbus_message_iter_append_basic (&iter_struct_entry, -+ DBUS_TYPE_STRING, -+ &key); -+ -+ dbus_message_iter_open_container (&iter_struct_entry, -+ DBUS_TYPE_VARIANT, -+ DBUS_TYPE_BOOLEAN_AS_STRING, -+ &iter_var); -+ -+ dbus_message_iter_append_basic (&iter_var, -+ DBUS_TYPE_BOOLEAN, -+ &value); -+ -+ dbus_message_iter_close_container (&iter_struct_entry, -+ &iter_var); -+ -+ dbus_message_iter_close_container (iter_struct, &iter_struct_entry); -+} -+ -+static void -+add_param_string (DBusMessageIter *iter_struct, -+ const char *key, -+ const char *value) -+{ -+ DBusMessageIter iter_struct_entry; -+ DBusMessageIter iter_var; -+ -+ dbus_message_iter_open_container (iter_struct, -+ DBUS_TYPE_STRUCT, -+ NULL, -+ &iter_struct_entry); -+ -+ dbus_message_iter_append_basic (&iter_struct_entry, -+ DBUS_TYPE_STRING, -+ &key); -+ -+ dbus_message_iter_open_container (&iter_struct_entry, -+ DBUS_TYPE_VARIANT, -+ DBUS_TYPE_STRING_AS_STRING, -+ &iter_var); -+ -+ dbus_message_iter_append_basic (&iter_var, -+ DBUS_TYPE_STRING, -+ &value); -+ -+ dbus_message_iter_close_container (&iter_struct_entry, -+ &iter_var); -+ -+ dbus_message_iter_close_container (iter_struct, &iter_struct_entry); -+} -+ -+static int -+session_get_x11_display (DBusConnection *connection, -+ const char *ssid, -+ char **str) -+{ -+ DBusError error; -+ DBusMessage *message; -+ DBusMessage *reply; -+ DBusMessageIter iter; -+ const char *value; -+ -+ if (str != NULL) { -+ *str = NULL; -+ } -+ -+ message = dbus_message_new_method_call (CK_NAME, -+ ssid, -+ CK_SESSION_INTERFACE, -+ "GetX11Display"); -+ if (message == NULL) { -+ Debug ("ConsoleKit: Couldn't allocate the D-Bus message"); -+ return FALSE; -+ } -+ -+ dbus_error_init (&error); -+ reply = dbus_connection_send_with_reply_and_block (connection, -+ message, -+ -1, &error); -+ if (dbus_error_is_set (&error)) { -+ Debug ("ConsoleKit: %s raised:\n %s\n\n", error.name, error.message); -+ reply = NULL; -+ } -+ -+ dbus_connection_flush (connection); -+ dbus_message_unref (message); -+ -+ if (reply == NULL) { -+ return FALSE; -+ } -+ -+ dbus_message_iter_init (reply, &iter); -+ dbus_message_iter_get_basic (&iter, &value); -+ if (str != NULL) { -+ *str = strdup (value); -+ } -+ dbus_message_unref (reply); -+ -+ return TRUE; -+} -+ -+static int -+session_unlock (DBusConnection *connection, -+ const char *ssid) -+{ -+ DBusError error; -+ DBusMessage *message; -+ DBusMessage *reply; -+ -+ Debug ("ConsoleKit: Unlocking session %s", ssid); -+ message = dbus_message_new_method_call (CK_NAME, -+ ssid, -+ CK_SESSION_INTERFACE, -+ "Unlock"); -+ if (message == NULL) { -+ Debug ("ConsoleKit: Couldn't allocate the D-Bus message"); -+ return FALSE; -+ } -+ -+ dbus_error_init (&error); -+ reply = dbus_connection_send_with_reply_and_block (connection, -+ message, -+ -1, &error); -+ dbus_message_unref (message); -+ dbus_message_unref (reply); -+ dbus_connection_flush (connection); -+ -+ if (dbus_error_is_set (&error)) { -+ Debug ("ConsoleKit: %s raised:\n %s\n\n", error.name, error.message); -+ return FALSE; -+ } -+ -+ return TRUE; -+} -+ -+/* from libhal */ -+static char ** -+get_path_array_from_iter (DBusMessageIter *iter, -+ int *num_elements) -+{ -+ int count; -+ char **buffer; -+ -+ count = 0; -+ buffer = (char **)malloc (sizeof (char *) * 8); -+ -+ if (buffer == NULL) -+ goto oom; -+ -+ buffer[0] = NULL; -+ while (dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_OBJECT_PATH) { -+ const char *value; -+ char *str; -+ -+ if ((count % 8) == 0 && count != 0) { -+ buffer = realloc (buffer, sizeof (char *) * (count + 8)); -+ if (buffer == NULL) -+ goto oom; -+ } -+ -+ dbus_message_iter_get_basic (iter, &value); -+ str = strdup (value); -+ if (str == NULL) -+ goto oom; -+ -+ buffer[count] = str; -+ -+ dbus_message_iter_next (iter); -+ count++; -+ } -+ -+ if ((count % 8) == 0) { -+ buffer = realloc (buffer, sizeof (char *) * (count + 1)); -+ if (buffer == NULL) -+ goto oom; -+ } -+ -+ buffer[count] = NULL; -+ if (num_elements != NULL) -+ *num_elements = count; -+ return buffer; -+ -+oom: -+ LogWarn ("%s %d : error allocating memory\n", __FILE__, __LINE__); -+ return NULL; -+ -+} -+ -+static char ** -+get_sessions_for_user (DBusConnection *connection, -+ const char *user, -+ const char *x11_display) -+{ -+ DBusError error; -+ DBusMessage *message; -+ DBusMessage *reply; -+ DBusMessageIter iter; -+ DBusMessageIter iter_reply; -+ DBusMessageIter iter_array; -+ struct passwd *pwent; -+ char **sessions; -+ -+ sessions = NULL; -+ message = NULL; -+ reply = NULL; -+ -+ pwent = getpwnam (user); -+ -+ dbus_error_init (&error); -+ message = dbus_message_new_method_call (CK_NAME, -+ CK_MANAGER_PATH, -+ CK_MANAGER_INTERFACE, -+ "GetSessionsForUser"); -+ if (message == NULL) { -+ Debug ("ConsoleKit: Couldn't allocate the D-Bus message"); -+ goto out; -+ } -+ -+ dbus_message_iter_init_append (message, &iter); -+ dbus_message_iter_append_basic (&iter, -+ DBUS_TYPE_UINT32, -+ &pwent->pw_uid); -+ -+ dbus_error_init (&error); -+ reply = dbus_connection_send_with_reply_and_block (connection, -+ message, -+ -1, &error); -+ dbus_connection_flush (connection); -+ -+ if (dbus_error_is_set (&error)) { -+ Debug ("ConsoleKit: %s raised:\n %s\n\n", error.name, error.message); -+ goto out; -+ } -+ -+ if (reply == NULL) { -+ Debug ("ConsoleKit: No reply for GetSessionsForUser"); -+ goto out; -+ } -+ -+ dbus_message_iter_init (reply, &iter_reply); -+ if (dbus_message_iter_get_arg_type (&iter_reply) != DBUS_TYPE_ARRAY) { -+ Debug ("ConsoleKit: Wrong reply for GetSessionsForUser - expecting an array."); -+ goto out; -+ } -+ -+ dbus_message_iter_recurse (&iter_reply, &iter_array); -+ sessions = get_path_array_from_iter (&iter_array, NULL); -+ -+ out: -+ if (message != NULL) { -+ dbus_message_unref (message); -+ } -+ if (reply != NULL) { -+ dbus_message_unref (reply); -+ } -+ -+ return sessions; -+} -+ -+void -+unlock_ck_session (const char *user, -+ const char *x11_display) -+{ -+ DBusError error; -+ DBusConnection *connection; -+ char **sessions; -+ int i; -+ -+ Debug ("ConsoleKit: Unlocking session for %s on %s", user, x11_display); -+ -+ dbus_error_init (&error); -+ connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error); -+ if (connection == NULL) { -+ Debug ("ConsoleKit: Failed to connect to the D-Bus daemon: %s", error.message); -+ dbus_error_free (&error); -+ return; -+ } -+ -+ sessions = get_sessions_for_user (connection, user, x11_display); -+ if (sessions == NULL || sessions[0] == NULL) { -+ Debug ("ConsoleKit: no sessions found"); -+ return; -+ } -+ -+ for (i = 0; sessions[i] != NULL; i++) { -+ char *ssid; -+ char *xdisplay; -+ -+ ssid = sessions[i]; -+ session_get_x11_display (connection, ssid, &xdisplay); -+ Debug ("ConsoleKit: session %s has DISPLAY %s", ssid, xdisplay); -+ -+ if (xdisplay != NULL -+ && x11_display != NULL -+ && strcmp (xdisplay, x11_display) == 0) { -+ int res; -+ -+ res = session_unlock (connection, ssid); -+ if (! res) { -+ LogError ("ConsoleKit: Unable to unlock %s", ssid); -+ } -+ } -+ -+ free (xdisplay); -+ } -+ -+ freeStrArr (sessions); -+} -+ -+char * -+open_ck_session (struct passwd *pwent, -+ struct display *d) -+{ -+ DBusConnection *connection; -+ DBusError error; -+ DBusMessage *message; -+ DBusMessage *reply; -+ DBusMessageIter iter; -+ DBusMessageIter iter_struct; -+ char *cookie; -+ -+ cookie = NULL; -+ -+ Debug ("ConsoleKit: Opening session for %s", pwent->pw_name); -+ -+ dbus_error_init (&error); -+ connection = dbus_bus_get_private (DBUS_BUS_SYSTEM, &error); -+ private_connection = connection; -+ -+ if (connection == NULL) { -+ Debug ("ConsoleKit: Failed to connect to the D-Bus daemon: %s", error.message); -+ dbus_error_free (&error); -+ return NULL; -+ } -+ -+ dbus_connection_set_exit_on_disconnect (connection, FALSE); -+ /* FIXME: What to do about these? -+ dbus_connection_set_watch_functions( connection, -+ dbusAddWatch, -+ dbusRemoveWatch, -+ dbusToggleWatch, -+ data, 0 ); -+ dbus_connection_set_timeout_functions( connection, -+ dbusAddTimeout, -+ dbusRemoveTimeout, -+ dbusToggleTimeout, -+ data, 0 ); -+ dbus_connection_set_wakeup_main_function( connection, -+ dbusWakeupMain, -+ data, 0 ); */ -+ -+ dbus_error_init (&error); -+ message = dbus_message_new_method_call (CK_NAME, -+ CK_MANAGER_PATH, -+ CK_MANAGER_INTERFACE, -+ "OpenSessionWithParameters"); -+ if (message == NULL) { -+ Debug ("ConsoleKit: Couldn't allocate the D-Bus message"); -+ return NULL; -+ } -+ -+ dbus_message_iter_init_append (message, &iter); -+ dbus_message_iter_open_container (&iter, -+ DBUS_TYPE_ARRAY, -+ DBUS_STRUCT_BEGIN_CHAR_AS_STRING -+ DBUS_TYPE_STRING_AS_STRING -+ DBUS_TYPE_VARIANT_AS_STRING -+ DBUS_STRUCT_END_CHAR_AS_STRING, -+ &iter_struct); -+ -+ add_param_int (&iter_struct, "user", pwent->pw_uid); -+ add_param_string (&iter_struct, "x11-display", d->name); -+ add_param_boolean (&iter_struct, "is-local", ((d->displayType & d_location) == dLocal)); -+#ifdef XDMCP -+ if (d->status == remoteLogin && !((d->displayType & d_location) == dLocal)) { -+ add_param_string (&iter_struct, "remote-host-name", d->remoteHost); -+ } -+#endif -+ -+#ifdef HAVE_VTS -+ if (d->serverVT > 0) { -+ char device[20]; -+ -+ /* FIXME: how does xorg construct this */ -+ sprintf(device, "/dev/tty%d", d->serverVT); -+ add_param_string (&iter_struct, "x11-display-device", device); -+ } -+#endif -+ -+ dbus_message_iter_close_container (&iter, &iter_struct); -+ -+ reply = dbus_connection_send_with_reply_and_block (connection, -+ message, -+ -1, &error); -+ if (dbus_error_is_set (&error)) { -+ Debug ("ConsoleKit: %s raised:\n %s\n\n", error.name, error.message); -+ reply = NULL; -+ } -+ -+ dbus_connection_flush (connection); -+ -+ dbus_message_unref (message); -+ dbus_error_free (&error); -+ -+ if (reply != NULL) { -+ const char *value; -+ -+ dbus_message_iter_init (reply, &iter); -+ dbus_message_iter_get_basic (&iter, &value); -+ cookie = strdup (value); -+ dbus_message_unref (reply); -+ } -+ -+ return cookie; -+} -+ -+void -+close_ck_session (const char *cookie) -+{ -+ DBusError error; -+ DBusMessage *message; -+ DBusMessage *reply; -+ DBusMessageIter iter; -+ -+ if (cookie == NULL) { -+ return; -+ } -+ -+ if (private_connection == NULL) { -+ return; -+ } -+ -+ dbus_error_init (&error); -+ message = dbus_message_new_method_call (CK_NAME, -+ CK_MANAGER_PATH, -+ CK_MANAGER_INTERFACE, -+ "CloseSession"); -+ if (message == NULL) { -+ Debug ("ConsoleKit: Couldn't allocate the D-Bus message"); -+ return; -+ } -+ -+ dbus_message_iter_init_append (message, &iter); -+ dbus_message_iter_append_basic (&iter, -+ DBUS_TYPE_STRING, -+ &cookie); -+ -+ reply = dbus_connection_send_with_reply_and_block (private_connection, -+ message, -+ -1, &error); -+ if (dbus_error_is_set (&error)) { -+ Debug ("ConsoleKit: %s raised:\n %s\n\n", error.name, error.message); -+ reply = NULL; -+ } -+ -+ dbus_connection_flush (private_connection); -+ -+ dbus_message_unref (message); -+ dbus_error_free (&error); -+ -+ dbus_connection_close (private_connection); -+ private_connection = NULL; -+} -Index: kdm/backend/consolekit.h -=================================================================== ---- /dev/null -+++ kdm/backend/consolekit.h -@@ -0,0 +1,36 @@ -+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- -+ * -+ * Copyright (C) 2006 William Jon McCann <mccann@jhu.edu> -+ * Copyright (C) 2007 Kevin Kofler <Kevin@tigcc.ticalc.org> -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ * -+ */ -+ -+ -+#ifndef __CONSOLE_KIT_H -+#define __CONSOLE_KIT_H -+ -+#include <pwd.h> -+ -+struct display; -+ -+char * open_ck_session (struct passwd *pwent, -+ struct display *display); -+void close_ck_session (const char *cookie); -+void unlock_ck_session (const char *user, -+ const char *x11_display); -+ -+#endif /* __CONSOLE_KIT_H */ -Index: kdm/backend/dm.h -=================================================================== ---- kdm/backend/dm.h.orig -+++ kdm/backend/dm.h -@@ -37,6 +37,8 @@ from the copyright holder. - #ifndef _DM_H_ - #define _DM_H_ 1 - -+#define WITH_CONSOLE_KIT -+ - #include "greet.h" - #include <config.ci> - -@@ -476,7 +478,11 @@ char **GRecvArgv( void ); - #define GCONV_BINARY 5 - typedef char *(*GConvFunc)( int what, const char *prompt ); - int Verify( GConvFunc gconv, int rootok ); -+#ifdef WITH_CONSOLE_KIT -+int StartClient( const char *ck_session_cookie ); -+#else - int StartClient( void ); -+#endif - void SessionExit( int status ) ATTR_NORETURN; - int ReadDmrc( void ); - extern char **userEnviron, **systemEnviron; -Index: kdm/backend/Imakefile -=================================================================== ---- kdm/backend/Imakefile.orig -+++ kdm/backend/Imakefile -@@ -155,13 +155,13 @@ PROCTITLE_DEFINES = -DHAS_SETPROCTITLE - netaddr.c reset.c resource.c protodpy.c policy.c \ - session.c socket.c streams.c util.c xdmcp.c \ - process.c mitauth.c \ -- genauth.c access.c choose.c \ -+ genauth.c access.c choose.c consolekit.c \ - $(XDMAUTHSRCS) $(RPCSRCS) $(KRB5SRCS) - COMMOBJS = auth.o daemon.o server.o dpylist.o dm.o error.o \ - netaddr.o reset.o resource.o protodpy.o policy.o \ - session.o socket.o streams.o util.o xdmcp.o \ - process.o mitauth.o \ -- genauth.o access.o choose.o \ -+ genauth.o access.o choose.o consolekit.o \ - $(XDMAUTHOBJS) $(RPCOBJS) $(KRB5OBJS) - - SRCS1 = $(COMMSRCS) client.c -Index: kdm/backend/Makefile.am -=================================================================== ---- kdm/backend/Makefile.am.orig -+++ kdm/backend/Makefile.am -@@ -1,6 +1,6 @@ - # forcibly remove thread-related defines & flags - AUTOMAKE_OPTIONS = foreign --AM_CPPFLAGS = $(USER_INCLUDES) $(X_INCLUDES) $(KRB4_INCS) $(KRB5_INCS) -I.. -I../.. -+AM_CPPFLAGS = -DWITH_CONSOLE_KIT=1 $(USER_INCLUDES) $(X_INCLUDES) $(KRB4_INCS) $(KRB5_INCS) $(DBUS_INCS) -I.. -I../.. - - bin_PROGRAMS = kdm - kdm_SOURCES = \ -@@ -9,6 +9,7 @@ kdm_SOURCES = \ - bootman.c \ - choose.c \ - client.c \ -+ consolekit.c \ - ctrl.c \ - daemon.c \ - dm.c \ -@@ -37,7 +38,7 @@ kdm_SOURCES = \ - kdm_LDFLAGS = $(USER_LDFLAGS) $(X_LDFLAGS) $(X_RPATH) $(KRB4_RPATH) $(KRB5_RPATH) - kdm_LDADD = $(LIB_X11) -lXau $(LIBXDMCP) $(PASSWDLIBS) \ - $(LIB_LIBS) $(KRB4_LIBS) $(KRB5_LIBS) $(LIBSOCKET) $(LIBRESOLV) \ -- $(LIBUCB) $(LIBUTIL) $(LIBPOSIX4) -+ $(DBUS_LIBS) $(LIBUCB) $(LIBUTIL) $(LIBPOSIX4) - - EXTRA_DIST = printf.c - -Index: kdm/backend/session.c -=================================================================== ---- kdm/backend/session.c.orig -+++ kdm/backend/session.c -@@ -45,6 +45,10 @@ from the copyright holder. - #include <ctype.h> - #include <signal.h> - -+#ifdef WITH_CONSOLE_KIT -+#include "consolekit.h" -+#endif -+ - struct display *td; - const char *td_setup = "auto"; - -@@ -530,6 +534,9 @@ ManageSession( struct display *d ) - int ex, cmd; - volatile int clientPid = 0; - volatile Time_t tdiff = 0; -+#ifdef WITH_CONSOLE_KIT -+ char *ck_session_cookie; -+#endif - - td = d; - Debug( "ManageSession %s\n", d->name ); -@@ -626,7 +633,12 @@ ManageSession( struct display *d ) - if (td_setup) - SetupDisplay( td_setup ); - -+#ifdef WITH_CONSOLE_KIT -+ ck_session_cookie = open_ck_session (getpwnam(curuser), d); -+ if (!(clientPid = StartClient(ck_session_cookie))) { -+#else - if (!(clientPid = StartClient())) { -+#endif - LogError( "Client start failed\n" ); - SessionExit( EX_NORMAL ); /* XXX maybe EX_REMANAGE_DPY? -- enable in dm.c! */ - } -@@ -648,6 +660,14 @@ ManageSession( struct display *d ) - catchTerm( SIGTERM ); - } - } -+ -+#ifdef WITH_CONSOLE_KIT -+ if (ck_session_cookie != NULL) { -+ close_ck_session (ck_session_cookie); -+ free (ck_session_cookie); -+ } -+#endif -+ - /* - * Sometimes the Xsession somehow manages to exit before - * a server crash is noticed - so we sleep a bit and wait -Index: kdm/configure.in.in -=================================================================== ---- kdm/configure.in.in.orig -+++ kdm/configure.in.in -@@ -240,4 +240,51 @@ if test "x$with_kdm_xconsole" = xyes; th - AC_DEFINE(WITH_KDM_XCONSOLE, 1, [Build kdm with built-in xconsole]) - fi - -+########### Check for DBus -+ -+ AC_MSG_CHECKING(for DBus) -+ -+ dbus_inc=NOTFOUND -+ dbus_lib=NOTFOUND -+ dbus=NOTFOUND -+ -+ search_incs="$kde_includes $kde_extra_includes /usr/include /usr/include/dbus-1.0 /usr/local/include /usr/local/include/dbus-1.0" -+ AC_FIND_FILE(dbus/dbus.h, $search_incs, dbus_incdir) -+ -+ search_incs_arch_deps="$kde_includes $kde_extra_includes /usr/lib$kdelibsuff/dbus-1.0/include /usr/local/lib$kdelibsuff/dbus-1.0/include" -+ AC_FIND_FILE(dbus/dbus-arch-deps.h, $search_incs_arch_deps, dbus_incdir_arch_deps) -+ -+ if test -r $dbus_incdir/dbus/dbus.h && test -r $dbus_incdir_arch_deps/dbus/dbus-arch-deps.h ; then -+ DBUS_INCS="-I$dbus_incdir -I$dbus_incdir_arch_deps" -+ dbus_inc=FOUND -+ fi -+ -+ search_libs="$kde_libraries $kde_extra_libs /usr/lib$kdelibsuff /usr/local/lib$kdelibsuff" -+ AC_FIND_FILE(libdbus-1.so, $search_libs, dbus_libdir) -+ -+ if test -r $dbus_libdir/libdbus-1.so ; then -+ DBUS_LIBS="-L$dbus_libdir -ldbus-1" -+ dbus_lib=FOUND -+ fi -+ -+ if test $dbus_inc != FOUND || test $dbus_lib != FOUND ; then -+ KDE_PKG_CHECK_MODULES( DBUS, "dbus-1", [ DBUS_INCS=$DBUS_CFLAGS; dbus_inc=FOUND; dbus_lib=FOUND; ] , AC_MSG_RESULT( Nothing found on PKG_CONFIG_PATH ) ) -+ fi -+ -+ dbus_bus_var=`pkg-config --variable=system_bus_default_address dbus-1 2>/dev/null` -+ if test -z "$dbus_bus_var"; then -+ dbus_bus_var="unix:path=/var/run/dbus/system_bus_socket" -+ fi -+ AC_DEFINE_UNQUOTED(DBUS_SYSTEM_BUS, "$dbus_bus_var", [Define the unix domain path for dbus system bus]) -+ -+ if test $dbus_inc = FOUND && test $dbus_lib = FOUND ; then -+ AC_MSG_RESULT(headers $DBUS_INCS libraries $DBUS_LIBS) -+ dbus=FOUND -+ else -+ AC_MSG_RESULT(searched but not found) -+ fi -+ -+ AC_SUBST(DBUS_INCS) -+ AC_SUBST(DBUS_LIBS) -+ - dnl AC_OUTPUT(kdm/kfrontend/sessions/kde.desktop) diff --git a/opensuse/tdebase/kdm-cope-with-new-grub.diff b/opensuse/tdebase/kdm-cope-with-new-grub.diff deleted file mode 100644 index cf28cf9be..000000000 --- a/opensuse/tdebase/kdm-cope-with-new-grub.diff +++ /dev/null @@ -1,27 +0,0 @@ -Index: kdm/backend/bootman.c -=================================================================== ---- kdm/backend/bootman.c.orig -+++ kdm/backend/bootman.c -@@ -132,19 +132,14 @@ setGrub( const char *opt, SdRec *sdr ) - static void - commitGrub( void ) - { -- FILE *f; -- int pid; -- static const char *args[] = { 0, "--batch", "--no-floppy", 0 }; -+ char buffer[PATH_MAX]; - - if (sdRec.bmstamp != mTime( GRUB_MENU ) && - setGrub( sdRec.osname, &sdRec ) != BO_OK) - return; - -- args[0] = grub; -- if ((f = pOpen( (char **)args, 'w', &pid ))) { -- fprintf( f, "savedefault --default=%d --once\n", sdRec.osindex ); -- pClose( f, pid ); -- } -+ snprintf(buffer, PATH_MAX, "/usr/sbin/grubonce %d", sdRec.osindex); -+ system(buffer); - } - - static char *lilo; diff --git a/opensuse/tdebase/kdm-make_it_cool.diff b/opensuse/tdebase/kdm-make_it_cool.diff deleted file mode 100644 index fb1f5b076..000000000 --- a/opensuse/tdebase/kdm-make_it_cool.diff +++ /dev/null @@ -1,1534 +0,0 @@ -Index: kdm/kfrontend/kdm_greet.c -=================================================================== ---- kdm/kfrontend/kdm_greet.c.orig -+++ kdm/kfrontend/kdm_greet.c -@@ -44,8 +44,8 @@ Foundation, Inc., 51 Franklin Street, Fi - # include <sched.h> - #endif - --#if defined(HAVE_XTEST) || defined(HAVE_XKB) - # include <X11/Xlib.h> -+#if defined(HAVE_XTEST) || defined(HAVE_XKB) - # include <X11/keysym.h> - #endif - -Index: kdm/kfrontend/themer/kdmrect.h -=================================================================== ---- kdm/kfrontend/themer/kdmrect.h.orig -+++ kdm/kfrontend/themer/kdmrect.h -@@ -36,6 +36,7 @@ class KdmRect : public KdmItem { - - public: - KdmRect( KdmItem *parent, const QDomNode &node, const char *name = 0 ); -+ KdmRect( QWidget *parent, const QDomNode &node, const char *name = 0 ); - - protected: - // draw the rect -@@ -54,8 +55,9 @@ protected: - bool hasBorder; - } rect; - --// virtual void setWidget( QWidget *widget ); -+ virtual void setWidget( QWidget *widget ); - // virtual void setLayoutItem( QLayoutItem *item ); -+ void init( const QDomNode &node, const char *name ); - - private: - void setAttribs( QWidget *widget ); -Index: kdm/kfrontend/themer/kdmitem.h -=================================================================== ---- kdm/kfrontend/themer/kdmitem.h.orig -+++ kdm/kfrontend/themer/kdmitem.h -@@ -90,6 +90,8 @@ public: - * Item constructor and destructor - */ - KdmItem( KdmItem *parent, const QDomNode &node = QDomNode(), const char *name = 0 ); -+ KdmItem( QWidget *parent, const QDomNode &node = QDomNode(), const char *name = 0 ); // for the root -+ - virtual ~KdmItem(); - - /** -@@ -151,6 +153,7 @@ public: - - KdmItem *findNode( const QString &id ) const; - virtual void setWidget( QWidget *widget ); -+ QWidget *widget() const { return myWidget; } - virtual void setLayoutItem( QLayoutItem *item ); - - virtual void hide( bool force = false ); -@@ -160,6 +163,9 @@ public: - bool isExplicitlyHidden() const { return isShown == ExplicitlyHidden; } - QRect rect() const { return area; } - -+ QWidget *parentWidget() const; -+ QString getId() const { return id; } -+ - signals: - void needUpdate( int x, int y, int w, int h ); - void activated( const QString &id ); -@@ -237,6 +243,7 @@ protected: - void parseColor( const QString &, QColor & ); - - void inheritFromButton( KdmItem *button ); -+ void init( const QDomNode &node = QDomNode(), const char *name = 0 ); - - QString itemType, id; - QValueList<KdmItem *> m_children; -Index: kdm/kfrontend/themer/kdmpixmap.h -=================================================================== ---- kdm/kfrontend/themer/kdmpixmap.h.orig -+++ kdm/kfrontend/themer/kdmpixmap.h -@@ -61,9 +61,10 @@ protected: - } pixmap; - - private: -- // Method to load the pixmap given by the theme -- void loadPixmap( const QString &fileName, QPixmap &p, QString &path ); -+ // Method to load the pixmap path given by the theme -+ QString fullPath( const QString &fileName ); - void renderSvg( PixmapStruct::PixmapClass *pClass, const QRect &area ); -+ void loadPixmap( PixmapStruct::PixmapClass *pClass ); - }; - - #endif -Index: kdm/kfrontend/themer/kdmlabel.h -=================================================================== ---- kdm/kfrontend/themer/kdmlabel.h.orig -+++ kdm/kfrontend/themer/kdmlabel.h -@@ -67,6 +67,7 @@ protected: - - public slots: - void update(); -+ void slotAccel(); - - private: - /* Method to lookup the caption associated with an item */ -@@ -76,6 +77,10 @@ private: - QString lookupText( const QString &t ); - - QString cText; -+ int cAccel; -+ QAccel *myAccel; -+ -+ void setTextInt(const QString &); - }; - - #endif -Index: kdm/kfrontend/themer/kdmthemer.cpp -=================================================================== ---- kdm/kfrontend/themer/kdmthemer.cpp.orig -+++ kdm/kfrontend/themer/kdmthemer.cpp -@@ -36,11 +36,13 @@ - - #include <qfile.h> - #include <qfileinfo.h> --//#include <qtimer.h> // animation timer - TODO -+#include <qtimer.h> // animation timer - TODO - #include <qobjectlist.h> - #include <qpainter.h> - #include <qwidget.h> - #include <qregion.h> -+#include <qlineedit.h> -+#include <qapplication.h> - - #include <unistd.h> - -@@ -72,7 +74,8 @@ KdmThemer::KdmThemer( const QString &_fi - return; - } - // Set the root (screen) item -- rootItem = new KdmRect( 0, QDomNode(), "kdm root" ); -+ rootItem = new KdmRect( parent, QDomNode(), "kdm root" ); -+ - connect( rootItem, SIGNAL(needUpdate( int, int, int, int )), - widget(), SLOT(update( int, int, int, int )) ); - -@@ -82,6 +85,9 @@ KdmThemer::KdmThemer( const QString &_fi - generateItems( rootItem ); - - connect( rootItem, SIGNAL(activated( const QString & )), SIGNAL(activated( const QString & )) ); -+ connect( rootItem, SIGNAL(activated( const QString & )), SLOT(slotActivated( const QString & )) ); -+ -+ QTimer::singleShot(800, this, SLOT(slotPaintRoot())); - - /* *TODO* - // Animation timer -@@ -151,7 +157,7 @@ KdmThemer::widgetEvent( QEvent *e ) - case QEvent::Paint: - { - QRect paintRect = static_cast<QPaintEvent *>(e)->rect(); -- kdDebug() << "paint on: " << paintRect << endl; -+ kdDebug() << timestamp() << " paint on: " << paintRect << endl; - - if (!backBuffer) - backBuffer = new QPixmap( widget()->size() ); -@@ -195,7 +201,7 @@ KdmThemer::generateItems( KdmItem *paren - - // Get its tag, and check it's correct ("greeter") - if (theme.tagName() != "greeter") { -- kdDebug() << "This does not seem to be a correct theme file." << endl; -+ kdDebug() << timestamp() << " This does not seem to be a correct theme file." << endl; - return; - } - // Get the list of child nodes -@@ -214,6 +220,13 @@ KdmThemer::generateItems( KdmItem *paren - if (tagName == "item") { - if (!willDisplay( subnode )) - continue; -+ QString id = el.attribute("id"); -+ if (id.startsWith("plugin-specific-")) { -+ id = id.mid(strlen("plugin-specific-")); -+ if (!_pluginsLogin.contains(id)) -+ continue; -+ } -+ - // It's a new item. Draw it - QString type = el.attribute( "type" ); - -@@ -225,13 +238,11 @@ KdmThemer::generateItems( KdmItem *paren - newItem = new KdmPixmap( parent, subnode ); - else if (type == "rect") - newItem = new KdmRect( parent, subnode ); -- else if (type == "entry") { -+ else if (type == "entry" || type == "list") { - newItem = new KdmRect( parent, subnode ); - newItem->setType( type ); - } - // newItem = new KdmEntry( parent, subnode ); -- //else if (type=="list") -- // newItem = new KdmList( parent, subnode ); - else if (type == "svg") - newItem = new KdmPixmap( parent, subnode ); - if (newItem) { -@@ -287,6 +298,11 @@ bool KdmThemer::willDisplay( const QDomN - #endif - if (type == "halt" || type == "reboot") - return _allowShutdown != SHUT_NONE; -+ else if (type == "userlist") -+ return _userList; -+ else if ( type == "!userlist" ) -+ return !_userList; -+ - // if (type == "system") - // return true; - -@@ -301,7 +317,7 @@ KdmThemer::showStructure( QObject *obj ) - const QObjectList *wlist = obj->children(); - static int counter = 0; - if (counter == 0) -- kdDebug() << "\n\n<======= Widget tree =================" << endl; -+ kdDebug() << timestamp() << " \n\n<======= Widget tree =================" << endl; - if (wlist) { - counter++; - QObjectListIterator it( *wlist ); -@@ -323,7 +339,46 @@ KdmThemer::showStructure( QObject *obj ) - counter--; - } - if (counter == 0) -- kdDebug() << "\n\n<======= Widget tree =================\n\n" << endl; -+ kdDebug() << timestamp() << " \n\n<======= Widget tree =================\n\n" << endl; -+} -+ -+void -+KdmThemer::slotActivated( const QString &id ) -+{ -+ QString toactivate; -+ if (id == "username-label") -+ toactivate = "user-entry"; -+ else if (id == "password-label") -+ toactivate = "pw-entry"; -+ else -+ return; -+ -+ KdmItem *item = findNode(toactivate); -+ if (!item || !item->widget()) -+ return; -+ -+ item->widget()->setFocus(); -+ QLineEdit *le = (QLineEdit*)item->widget()->qt_cast("QLineEdit"); -+ if (le) -+ le->selectAll(); -+} -+ -+void -+KdmThemer::slotPaintRoot() -+{ -+ KdmItem *back_item = findNode("background"); -+ if (!back_item) -+ return; -+ -+ QRect screen = QApplication::desktop()->screenGeometry(0); -+ QPixmap pm(screen.size()); -+ -+ QPainter painter( &pm, true ); -+ back_item->paint( &painter, back_item->rect()); -+ painter.end(); -+ -+ QApplication::desktop()->screen()->setErasePixmap(pm); -+ QApplication::desktop()->screen()->erase(); - } - - #include "kdmthemer.moc" -Index: kdm/kfrontend/themer/kdmthemer.h -=================================================================== ---- kdm/kfrontend/themer/kdmthemer.h.orig -+++ kdm/kfrontend/themer/kdmthemer.h -@@ -80,6 +80,10 @@ public: - signals: - void activated( const QString &id ); - -+protected slots: -+ void slotActivated( const QString &id ); -+ void slotPaintRoot(); -+ - private: - /* - * Our display mode (e.g. console, remote, ...) -Index: kdm/kfrontend/themer/kdmlayout.cpp -=================================================================== ---- kdm/kfrontend/themer/kdmlayout.cpp.orig -+++ kdm/kfrontend/themer/kdmlayout.cpp -@@ -20,6 +20,7 @@ - */ - - #include "kdmlayout.h" -+#include "kdmconfig.h" - #include "kdmitem.h" - - #include <kdebug.h> -@@ -35,11 +36,11 @@ KdmLayoutFixed::KdmLayoutFixed( const QD - void - KdmLayoutFixed::update( const QRect &parentGeometry, bool force ) - { -- kdDebug() << "KdmLayoutFixed::update " << parentGeometry << endl; -+ kdDebug() << timestamp() << " KdmLayoutFixed::update " << parentGeometry << endl; - - // I can't layout children if the parent rectangle is not valid - if (parentGeometry.width() < 0 || parentGeometry.height() < 0) { -- kdDebug() << "invalid\n"; -+ kdDebug() << timestamp() << " invalid\n"; - return; - } - // For each child in list I ask their hinted size and set it! -@@ -102,7 +103,7 @@ KdmLayoutBox::update( const QRect &paren - childrenRect.setTop( childrenRect.top() + height + box.spacing ); - } else { - QRect temp( childrenRect.left(), childrenRect.top(), width, childrenRect.height() ); -- kdDebug() << "placement " << *it << " " << temp << " " << (*it)->placementHint( temp ) << endl; -+ kdDebug() << timestamp() << " placement " << *it << " " << temp << " " << (*it)->placementHint( temp ) << endl; - temp = (*it)->placementHint( temp ); - (*it)->setGeometry( temp, force ); - childrenRect.setLeft( childrenRect.left() + width + box.spacing ); -@@ -125,7 +126,7 @@ KdmLayoutBox::update( const QRect &paren - kdDebug() << this << " placementHint " << *it << " " << temp << " " << itemRect << endl; - temp.setWidth( itemRect.width() ); - childrenRect.setLeft( childrenRect.left() + itemRect.size().width() + box.spacing ); -- kdDebug() << "childrenRect after " << *it << " " << childrenRect << endl; -+ kdDebug() << timestamp() << " childrenRect after " << *it << " " << childrenRect << endl; - } - itemRect = (*it)->placementHint( temp ); - kdDebug() << this << " placementHint2 " << *it << " " << temp << " " << itemRect << endl; -Index: kdm/kfrontend/themer/kdmrect.cpp -=================================================================== ---- kdm/kfrontend/themer/kdmrect.cpp.orig -+++ kdm/kfrontend/themer/kdmrect.cpp -@@ -33,6 +33,18 @@ - KdmRect::KdmRect( KdmItem *parent, const QDomNode &node, const char *name ) - : KdmItem( parent, node, name ) - { -+ init( node, name ); -+} -+ -+KdmRect::KdmRect( QWidget *parent, const QDomNode &node, const char *name ) -+ : KdmItem( parent, node, name ) -+{ -+ init( node, name ); -+} -+ -+void -+KdmRect::init( const QDomNode &node, const char * ) -+{ - itemType = "rect"; - - // Set default values for rect (note: strings are already Null) -@@ -137,13 +149,6 @@ KdmRect::recursiveSetAttribs( QLayoutIte - } - - void --KdmRect::setWidget( QWidget *widget ) --{ -- KdmItem::setWidget( widget ); -- setAttribs( widget ); --} -- --void - KdmRect::setLayoutItem( QLayoutItem *item ) - { - KdmItem::setLayoutItem( item ); -@@ -151,4 +156,17 @@ KdmRect::setLayoutItem( QLayoutItem *ite - } - */ - -+void -+KdmRect::setWidget( QWidget *widget ) -+{ -+ if ( rect.normal.color.isValid() && widget ) -+ { -+ QPalette p = widget->palette(); -+ p.setColor( QPalette::Normal, QColorGroup::Text, rect.normal.color ); -+ widget->setPalette(p); -+ } -+ KdmItem::setWidget( widget ); -+ //setAttribs( widget ); -+} -+ - #include "kdmrect.moc" -Index: kdm/kfrontend/themer/kdmitem.cpp -=================================================================== ---- kdm/kfrontend/themer/kdmitem.cpp.orig -+++ kdm/kfrontend/themer/kdmitem.cpp -@@ -23,10 +23,11 @@ - * Generic Kdm Item - */ - --//#define DRAW_OUTLINE 1 // for debugging only -+// #define DRAW_OUTLINE 1 // for debugging only - - #include "kdmitem.h" - #include "kdmlayout.h" -+#include "kdmconfig.h" - - #include <kglobal.h> - #include <kdebug.h> -@@ -35,9 +36,7 @@ - #include <qwidget.h> - #include <qlayout.h> - #include <qimage.h> --#ifdef DRAW_OUTLINE --# include <qpainter.h> --#endif -+#include <qpainter.h> - - KdmItem::KdmItem( KdmItem *parent, const QDomNode &node, const char *name ) - : QObject( parent, name ) -@@ -48,6 +47,25 @@ KdmItem::KdmItem( KdmItem *parent, const - , myLayoutItem( 0 ) - , buttonParent( 0 ) - { -+ init(node, name); -+} -+ -+ -+KdmItem::KdmItem( QWidget *parent, const QDomNode &node, const char *name ) -+ : QObject( parent, name ) -+ , boxManager( 0 ) -+ , fixedManager( 0 ) -+ , image( 0 ) -+ , myWidget( 0 ) -+ , myLayoutItem( 0 ) -+ , buttonParent( 0 ) -+{ -+ init(node, name); -+} -+ -+void -+KdmItem::init( const QDomNode &node, const char * ) -+{ - // Set default layout for every item - currentManager = MNone; - pos.x = pos.y = 0; -@@ -62,7 +80,7 @@ KdmItem::KdmItem( KdmItem *parent, const - state = Snormal; - - // The "toplevel" node (the screen) is really just like a fixed node -- if (!parent || !parent->inherits( "KdmItem" )) { -+ if (!parent() || !parent()->inherits( "KdmItem" )) { - setFixedLayout(); - return; - } -@@ -87,7 +105,7 @@ KdmItem::KdmItem( KdmItem *parent, const - id = tnode.toElement().attribute( "id", QString::number( (ulong)this, 16 ) ); - - // Tell 'parent' to add 'me' to its children -- KdmItem *parentItem = static_cast<KdmItem *>( parent ); -+ KdmItem *parentItem = static_cast<KdmItem *>( parent() ); - parentItem->addChildItem( this ); - } - -@@ -195,7 +213,7 @@ KdmItem::setWidget( QWidget *widget ) - if (frame) - frame->setFrameStyle( QFrame::NoFrame ); - -- myWidget->setGeometry(area); -+ setGeometry(area, true); - - connect( myWidget, SIGNAL(destroyed()), SLOT(widgetGone()) ); - } -@@ -236,15 +254,21 @@ KdmItem::setGeometry( const QRect &newGe - - area = newGeometry; - -- if (myWidget) -- myWidget->setGeometry( newGeometry ); -+ if (myWidget) { -+ QRect widGeo = newGeometry; -+ if ( widGeo.height() > myWidget->maximumHeight() ) { -+ widGeo.moveTop( widGeo.top() + ( widGeo.height() - myWidget->maximumHeight() ) / 2 ); -+ widGeo.setHeight( myWidget->maximumHeight() ); -+ } -+ myWidget->setGeometry( widGeo ); -+ } - if (myLayoutItem) - myLayoutItem->setGeometry( newGeometry ); - - // recurr to all boxed children - if (boxManager && !boxManager->isEmpty()) - boxManager->update( newGeometry, force ); -- -+ - // recurr to all fixed children - if (fixedManager && !fixedManager->isEmpty()) - fixedManager->update( newGeometry, force ); -@@ -258,8 +282,16 @@ KdmItem::paint( QPainter *p, const QRect - if (isHidden()) - return; - -- if (myWidget || (myLayoutItem && myLayoutItem->widget())) -- return; -+ if (myWidget || (myLayoutItem && myLayoutItem->widget())) { -+ // KListView because it's missing a Q_OBJECT -+ if ( myWidget && myWidget->isA( "KListView" ) ) { -+ QPixmap copy( myWidget->size() ); -+ kdDebug() << myWidget->geometry() << " " << area << " " << myWidget->size() << endl; -+ bitBlt( ©, QPoint( 0, 0), p->device(), myWidget->geometry(), Qt::CopyROP ); -+ myWidget->setPaletteBackgroundPixmap( copy ); -+ } -+ return; -+ } - - if (area.intersects( rect )) { - QRect contentsRect = area.intersect( rect ); -@@ -280,6 +312,8 @@ KdmItem::paint( QPainter *p, const QRect - QValueList<KdmItem *>::Iterator it; - for (it = m_children.begin(); it != m_children.end(); ++it) - (*it)->paint( p, rect ); -+ -+ - } - - KdmItem *KdmItem::currentActive = 0; -@@ -287,8 +321,11 @@ KdmItem *KdmItem::currentActive = 0; - void - KdmItem::mouseEvent( int x, int y, bool pressed, bool released ) - { -+ if (isShown == ExplicitlyHidden) -+ return; -+ - if (buttonParent && buttonParent != this) { -- buttonParent->mouseEvent( x, y, pressed, released ); -+ buttonParent->mouseEvent( x, y, pressed, released ); - return; - } - -@@ -362,7 +399,8 @@ KdmItem::placementHint( const QRect &par - w = parentRect.width(), - h = parentRect.height(); - -- kdDebug() << "KdmItem::placementHint parentRect=" << id << parentRect << " hintedSize=" << hintedSize << endl; -+ kdDebug() << timestamp() << " KdmItem::placementHint parentRect=" << parentRect << " hintedSize=" << hintedSize << endl; -+ - // check if width or height are set to "box" - if (pos.wType == DTbox || pos.hType == DTbox) { - if (myLayoutItem || myWidget) -@@ -372,7 +410,7 @@ KdmItem::placementHint( const QRect &par - return parentRect; - boxHint = boxManager->sizeHint(); - } -- kdDebug() << " => boxHint " << boxHint << endl; -+ kdDebug() << timestamp() << " boxHint " << boxHint << endl; - } - - if (pos.xType == DTpixel) -@@ -380,25 +418,25 @@ KdmItem::placementHint( const QRect &par - else if (pos.xType == DTnpixel) - x = parentRect.right() - pos.x; - else if (pos.xType == DTpercent) -- x += int( parentRect.width() / 100.0 * pos.x ); -+ x += qRound( parentRect.width() / 100.0 * pos.x ); - - if (pos.yType == DTpixel) - y += pos.y; - else if (pos.yType == DTnpixel) - y = parentRect.bottom() - pos.y; - else if (pos.yType == DTpercent) -- y += int( parentRect.height() / 100.0 * pos.y ); -+ y += qRound( parentRect.height() / 100.0 * pos.y ); - - if (pos.wType == DTpixel) - w = pos.width; - else if (pos.wType == DTnpixel) - w -= pos.width; - else if (pos.wType == DTpercent) -- w = int( parentRect.width() / 100.0 * pos.width ); -+ w = qRound( parentRect.width() / 100.0 * pos.width ); - else if (pos.wType == DTbox) - w = boxHint.width(); - else if (hintedSize.width() > 0) -- w = hintedSize.width(); -+ w = hintedSize.width(); - else - w = 0; - -@@ -407,14 +445,22 @@ KdmItem::placementHint( const QRect &par - else if (pos.hType == DTnpixel) - h -= pos.height; - else if (pos.hType == DTpercent) -- h = int( parentRect.height() / 100.0 * pos.height ); -+ h = qRound( parentRect.height() / 100.0 * pos.height ); - else if (pos.hType == DTbox) - h = boxHint.height(); -- else if (hintedSize.height() > 0) -- h = hintedSize.height(); -- else -+ else if (hintedSize.height() > 0) { -+ if (w && pos.wType != DTnone) -+ h = (hintedSize.height() * w) / hintedSize.width(); -+ else -+ h = hintedSize.height(); -+ } else - h = 0; - -+ // we choose to take the hinted size, but it's better to listen to the aspect ratio -+ if (pos.wType == DTnone && pos.hType != DTnone && h && w) { -+ w = qRound(float(hintedSize.width() * h) / hintedSize.height()); -+ } -+ - // defaults to center - int dx = -w / 2, dy = -h / 2; - -@@ -430,7 +476,7 @@ KdmItem::placementHint( const QRect &par - dx = -w; - } - // KdmItem *p = static_cast<KdmItem*>( parent() ); -- kdDebug() << "KdmItem::placementHint " << id << " x=" << x << " dx=" << dx << " w=" << w << " y=" << y << " dy=" << dy << " h=" << h << " " << parentRect << endl; -+ kdDebug() << timestamp() << " placementHint " << this << " x=" << x << " dx=" << dx << " w=" << w << " y=" << y << " dy=" << dy << " h=" << h << " " << parentRect << endl; - y += dy; - x += dx; - -@@ -529,4 +575,17 @@ KdmItem::setFixedLayout( const QDomNode - currentManager = MFixed; - } - -+QWidget * -+KdmItem::parentWidget() const -+{ -+ if (myWidget) -+ return myWidget; -+ if (!this->parent()) -+ return 0; -+ -+ if (parent()->qt_cast("QWidget")) -+ return (QWidget*)parent(); -+ return ((KdmItem*)parent())->parentWidget(); -+} -+ - #include "kdmitem.moc" -Index: kdm/kfrontend/themer/kdmpixmap.cpp -=================================================================== ---- kdm/kfrontend/themer/kdmpixmap.cpp.orig -+++ kdm/kfrontend/themer/kdmpixmap.cpp -@@ -22,6 +22,7 @@ - #include <config.h> - - #include "kdmpixmap.h" -+#include <kdmconfig.h> - - #include <kimageeffect.h> - #ifdef HAVE_LIBART -@@ -29,6 +30,7 @@ - #endif - - #include <kdebug.h> -+#include <kstandarddirs.h> - - #include <qpainter.h> - #include <qpixmap.h> -@@ -58,21 +60,28 @@ KdmPixmap::KdmPixmap( KdmItem *parent, c - QString tagName = el.tagName(); - - if (tagName == "normal") { -- loadPixmap( el.attribute( "file", "" ), pixmap.normal.pixmap, pixmap.normal.fullpath ); -+ pixmap.normal.fullpath = fullPath( el.attribute( "file", "" ) ); - parseColor( el.attribute( "tint", "#ffffff" ), pixmap.normal.tint ); - pixmap.normal.alpha = el.attribute( "alpha", "1.0" ).toFloat(); - } else if (tagName == "active") { - pixmap.active.present = true; -- loadPixmap( el.attribute( "file", "" ), pixmap.active.pixmap, pixmap.active.fullpath ); -+ pixmap.active.fullpath = fullPath( el.attribute( "file", "" ) ); - parseColor( el.attribute( "tint", "#ffffff" ), pixmap.active.tint ); - pixmap.active.alpha = el.attribute( "alpha", "1.0" ).toFloat(); - } else if (tagName == "prelight") { - pixmap.prelight.present = true; -- loadPixmap( el.attribute( "file", "" ), pixmap.prelight.pixmap, pixmap.prelight.fullpath ); -+ pixmap.prelight.fullpath = fullPath(el.attribute( "file", "" ) ); - parseColor( el.attribute( "tint", "#ffffff" ), pixmap.prelight.tint ); - pixmap.prelight.alpha = el.attribute( "alpha", "1.0" ).toFloat(); - } - } -+ -+ // look if we have to have the aspect ratio ready -+ if (((pos.wType == DTnone && pos.hType != DTnone) || -+ (pos.wType != DTnone && pos.hType == DTnone) || -+ (pos.wType == DTnone && pos.hType == DTnone)) && -+ !pixmap.normal.fullpath.endsWith( ".svg" )) -+ loadPixmap( &pixmap.normal ); - } - - QSize -@@ -100,19 +109,16 @@ KdmPixmap::setGeometry( const QRect &new - } - - --void --KdmPixmap::loadPixmap( const QString &fileName, QPixmap &map, QString &fullName ) -+QString -+KdmPixmap::fullPath( const QString &fileName) - { -- if (fileName.isEmpty()) -- return; -+ if (fileName.isEmpty()) -+ return QString::null; - -- fullName = fileName; -+ QString fullName = fileName; - if (fullName.at( 0 ) != '/') - fullName = baseDir() + "/" + fileName; -- -- if (!fullName.endsWith( ".svg" )) // we delay it for svgs -- if (!map.load( fullName )) -- fullName = QString::null; -+ return fullName; - } - - void -@@ -140,6 +146,25 @@ KdmPixmap::renderSvg( PixmapStruct::Pixm - } - - void -+KdmPixmap::loadPixmap( PixmapStruct::PixmapClass *pClass ) -+{ -+ QString fullpath = pClass->fullpath; -+ -+ kdDebug() << timestamp() << " load " << fullpath << endl; -+ int index = fullpath.findRev('.'); -+ QString ext = fullpath.right(fullpath.length() - index); -+ fullpath = fullpath.left(index); -+ kdDebug() << timestamp() << " ext " << ext << " " << fullpath << endl; -+ QString testpath = QString("-%1x%2").arg(area.width()).arg(area.height()) + ext; -+ kdDebug() << timestamp() << " testing for " << fullpath + testpath << endl; -+ if (KStandardDirs::exists(fullpath + testpath)) -+ pClass->pixmap.load(fullpath + testpath); -+ else -+ pClass->pixmap.load( fullpath + ext ); -+ kdDebug() << timestamp() << " done\n"; -+} -+ -+void - KdmPixmap::drawContents( QPainter *p, const QRect &r ) - { - // choose the correct pixmap class -@@ -149,12 +174,20 @@ KdmPixmap::drawContents( QPainter *p, co - if (state == Sprelight && pixmap.prelight.present) - pClass = &pixmap.prelight; - -+ kdDebug() << "draw " << id << " " << pClass->pixmap.isNull() << endl; -+ - if (pClass->pixmap.isNull()) { -- if (pClass->fullpath.isEmpty()) // if neither is set, we're empty -+ -+ if (pClass->fullpath.isEmpty()) // if neither is set, we're empty - return; -- -- kdDebug() << "renderSVG\n"; -- renderSvg( pClass, area ); -+ -+ if (!pClass->fullpath.endsWith( ".svg" ) ) { -+ loadPixmap(pClass); -+ } else { -+ kdDebug() << timestamp() << " renderSVG\n"; -+ renderSvg( pClass, area ); -+ kdDebug() << timestamp() << " done\n"; -+ } - } - - int px = area.left() + r.left(); -@@ -176,25 +209,37 @@ KdmPixmap::drawContents( QPainter *p, co - - - if (pClass->readyPixmap.isNull()) { -- QImage scaledImage; -+ -+ bool haveTint = pClass->tint.rgb() != 0xFFFFFF; -+ bool haveAlpha = pClass->alpha < 1.0; - -+ QImage scaledImage; -+ - // use the loaded pixmap or a scaled version if needed - -+ kdDebug() << timestamp() << " prepare readyPixmap " << pClass->fullpath << " " << area.size() << " " << pClass->pixmap.size() << endl; - if (area.size() != pClass->pixmap.size()) { - if (pClass->fullpath.endsWith( ".svg" )) { -- kdDebug() << "renderSVG\n"; -+ kdDebug() << timestamp() << " renderSVG\n"; - renderSvg( pClass, area ); - scaledImage = pClass->pixmap.convertToImage(); - } else { -- kdDebug() << "convertFromImage\n"; -+ kdDebug() << timestamp() << " convertFromImage smoothscale\n"; - QImage tempImage = pClass->pixmap.convertToImage(); -+ kdDebug() << timestamp() << " convertToImage done\n"; - scaledImage = tempImage.smoothScale( area.width(), area.height() ); -+ kdDebug() << timestamp() << " done\n"; - } -- } else -+ } else { -+ if (haveTint || haveAlpha) -+ { - scaledImage = pClass->pixmap.convertToImage(); -- -- bool haveTint = pClass->tint.rgb() != 0xFFFFFF; -- bool haveAlpha = pClass->alpha < 1.0; -+ // enforce rgba values for the later -+ scaledImage = scaledImage.convertDepth( 32 ); -+ } -+ else -+ pClass->readyPixmap = pClass->pixmap; -+ } - - if (haveTint || haveAlpha) { - // blend image(pix) with the given tint -@@ -221,9 +266,12 @@ KdmPixmap::drawContents( QPainter *p, co - - } - -- pClass->readyPixmap.convertFromImage( scaledImage ); -+ if (!scaledImage.isNull()) { -+ kdDebug() << timestamp() << " convertFromImage " << id << " " << area << endl; -+ pClass->readyPixmap.convertFromImage( scaledImage ); -+ } - } -- // kdDebug() << "Pixmap::drawContents " << pClass->readyPixmap.size() << " " << px << " " << py << " " << sx << " " << sy << " " << sw << " " << sh << endl; -+ kdDebug() << timestamp() << " Pixmap::drawContents " << pClass->readyPixmap.size() << " " << px << " " << py << " " << sx << " " << sy << " " << sw << " " << sh << endl; - p->drawPixmap( px, py, pClass->readyPixmap, sx, sy, sw, sh ); - } - -Index: kdm/kfrontend/themer/kdmlabel.cpp -=================================================================== ---- kdm/kfrontend/themer/kdmlabel.cpp.orig -+++ kdm/kfrontend/themer/kdmlabel.cpp -@@ -19,8 +19,10 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -+#include <config.h> - #include "kdmlabel.h" --#include <kgreeter.h> -+#include "kdmconfig.h" -+#include "../kgreeter.h" - - #include <kglobal.h> - #include <klocale.h> -@@ -31,6 +33,7 @@ - #include <qpainter.h> - #include <qfontmetrics.h> - #include <qtimer.h> -+#include <qaccel.h> - - #include <unistd.h> - #include <sys/utsname.h> -@@ -39,7 +42,7 @@ - #endif - - KdmLabel::KdmLabel( KdmItem *parent, const QDomNode &node, const char *name ) -- : KdmItem( parent, node, name ) -+ : KdmItem( parent, node, name ), myAccel(0) - { - itemType = "label"; - -@@ -92,21 +95,46 @@ KdmLabel::KdmLabel( KdmItem *parent, con - } - } - -- // Check if this is a timer label -+ // Check if this is a timer label) - label.isTimer = label.text.find( "%c" ) >= 0; - if (label.isTimer) { - timer = new QTimer( this ); - timer->start( 1000 ); - connect( timer, SIGNAL(timeout()), SLOT(update()) ); - } -- cText = lookupText( label.text ); -+ setTextInt( lookupText( label.text ) ); -+} -+ -+void -+KdmLabel::setTextInt( const QString &txt) -+{ -+ // TODO: catch && -+ cText = txt; -+ cAccel = txt.find('&'); -+ delete myAccel; -+ myAccel = 0; -+ if (cAccel != -1) { -+ cText.remove('&'); -+ myAccel = new QAccel(parentWidget()); -+ myAccel->insertItem(ALT + UNICODE_ACCEL + cText.at(cAccel).lower().unicode()); -+ connect(myAccel, SIGNAL(activated(int)), SLOT(slotAccel())); -+ } -+} -+ -+void -+KdmLabel::slotAccel() -+{ -+ if (buttonParent) -+ emit activated(buttonParent->getId()); -+ else -+ emit activated(id); - } - - void - KdmLabel::setText( const QString &txt ) - { - label.text = txt; -- update(); -+ setTextInt( lookupText( label.text ) ); - } - - QSize -@@ -139,7 +167,23 @@ KdmLabel::drawContents( QPainter *p, con - p->setFont( l->font ); - p->setPen( l->color ); - //TODO paint clipped (tested but not working..) -- p->drawText( area, AlignLeft | SingleLine, cText ); -+ if (cAccel != -1 && (!id.isEmpty() || buttonParent) ) { -+ QString left = cText.left(cAccel); -+ QString right = cText.mid(cAccel + 1); -+ p->drawText( area, AlignLeft | SingleLine, left ); -+ QRect tarea = area; -+ QFontMetrics fm(l->font); -+ tarea.rLeft() += fm.width(left); -+ QFont f(l->font); -+ f.setUnderline(true); -+ p->setFont ( f ); -+ p->drawText( tarea, AlignLeft | SingleLine, QString(cText.at(cAccel))); -+ tarea.rLeft() += fm.width(cText.at(cAccel)); -+ p->setFont( l->font ); -+ p->drawText( tarea, AlignLeft | SingleLine, right); -+ } else { -+ p->drawText( area, AlignLeft | SingleLine, cText); -+ } - } - - void -@@ -159,7 +203,7 @@ KdmLabel::update() - { - QString text = lookupText( label.text ); - if (text != cText) { -- cText = text; -+ setTextInt(text); - needUpdate(); - } - } -@@ -167,22 +211,23 @@ KdmLabel::update() - static const struct { - const char *type, *text; - } stocks[] = { -- { "language", I18N_NOOP("Language") }, -- { "session", I18N_NOOP("Session Type") }, -- { "system", I18N_NOOP("Menu") }, // i18n("Actions"); -- { "disconnect", I18N_NOOP("Disconnect") }, -- { "quit", I18N_NOOP("Quit") }, -- { "halt", I18N_NOOP("Power off") }, -- { "suspend", I18N_NOOP("Suspend") }, -- { "reboot", I18N_NOOP("Reboot") }, -+ { "language", I18N_NOOP("&Language") }, -+ { "session", I18N_NOOP("Session &Type") }, -+ { "system", I18N_NOOP("&System") }, // i18n("Actions"); -+ { "disconnect", I18N_NOOP("&Disconnect") }, -+ { "quit", I18N_NOOP("&Quit") }, -+ { "halt", I18N_NOOP("Power O&ff") }, -+ { "suspend", I18N_NOOP("S&uspend") }, -+ { "reboot", I18N_NOOP("&Reboot") }, - { "chooser", I18N_NOOP("XDMCP Chooser") }, - { "config", I18N_NOOP("Configure") }, -- { "caps-lock-warning", I18N_NOOP("You have got caps lock on.") }, -- { "timed-label", I18N_NOOP("User %s will login in %d seconds") }, -- { "welcome-label", I18N_NOOP("Welcome to %h") }, // _greetString -- { "username-label", I18N_NOOP("Username:") }, -- { "password-label", I18N_NOOP("Password:") }, -- { "login", I18N_NOOP("Login") } -+ { "caps-lock-warning", I18N_NOOP("Caps Lock is enabled.") }, -+ { "timed-label", I18N_NOOP("User %s will log in in %d seconds") }, -+ { "welcome-label", I18N_NOOP("Welcome to %h") }, // _greetString -+ { "username-label", I18N_NOOP("&Username:") }, -+ { "password-label", I18N_NOOP("&Password:") }, -+ { "domain-label", I18N_NOOP("&Domain:") }, -+ { "login", I18N_NOOP("L&ogin") } - }; - - QString -@@ -195,7 +240,7 @@ KdmLabel::lookupStock( const QString &st - if (type == stocks[i].type) - return i18n(stocks[i].text); - -- kdDebug() << "Invalid <stock> element. Check your theme!" << endl; -+ kdDebug() << timestamp() << " Invalid <stock> element. Check your theme!" << endl; - return stock; - } - -@@ -205,7 +250,6 @@ KdmLabel::lookupText( const QString &t ) - QString text = t; - - text.replace( '_', '&' ); --// text.remove( '_' ); // FIXME add key accels, remove underscores for now - - QMap<QChar,QString> m; - struct utsname uts; -Index: kdm/kfrontend/kdmconfig.h -=================================================================== ---- kdm/kfrontend/kdmconfig.h.orig -+++ kdm/kfrontend/kdmconfig.h -@@ -35,6 +35,7 @@ Foundation, Inc., 51 Franklin Street, Fi - #include <qstring.h> - #include <qstringlist.h> - #include <qfont.h> -+#include <sys/time.h> - - extern QString _stsFile; - extern bool _isLocal; -@@ -46,6 +47,19 @@ CONF_GREET_CPP_DECLS - struct dpySpec; - void decodeSess( dpySpec *sess, QString &user, QString &loc ); - -+extern struct timeval st; -+ -+inline QString timestamp() { -+ struct timeval nst; -+ gettimeofday(&nst, 0); -+ if (!st.tv_sec) -+ gettimeofday(&st, 0); -+ -+ QString ret; -+ ret.sprintf("[%07ld]", (nst.tv_sec - st.tv_sec) * 1000 + (nst.tv_usec - st.tv_usec) / 1000); -+ return ret; -+} -+ - extern "C" - #endif - void init_config( void ); -Index: kdm/kfrontend/kgreeter.h -=================================================================== ---- kdm/kfrontend/kgreeter.h.orig -+++ kdm/kfrontend/kgreeter.h -@@ -73,9 +73,10 @@ class KGreeter : public KGDialog, public - void slotUserEntered(); - - protected: -+ void readFacesList(); - void installUserList(); - void insertUser( const QImage &, const QString &, struct passwd * ); -- void insertUsers(); -+ void insertUsers( int limit = -1); - void putSession( const QString &, const QString &, bool, const char * ); - void insertSessions(); - virtual void pluginSetup(); -@@ -87,10 +88,13 @@ class KGreeter : public KGDialog, public - QStringList *userList; - QPopupMenu *sessMenu; - QValueVector<SessType> sessionTypes; -+ QStringList randomFaces; -+ QMap<QString, QString> randomFacesMap; - int nNormals, nSpecials; - int curPrev, curSel; - bool prevValid; - bool needLoad; -+ bool themed; - - static int curPlugin; - static PluginList pluginList; -Index: kdm/kfrontend/kgdialog.cpp -=================================================================== ---- kdm/kfrontend/kgdialog.cpp.orig -+++ kdm/kfrontend/kgdialog.cpp -@@ -29,6 +29,7 @@ Foundation, Inc., 51 Franklin Street, Fi - #include "kdm_greet.h" - - #include <klocale.h> -+#include <kiconloader.h> - - #include <qaccel.h> - #include <qlayout.h> -@@ -58,7 +59,7 @@ KGDialog::completeMenu() - #ifdef HAVE_VTS - if (_isLocal) { - dpyMenu = new QPopupMenu( this ); -- int id = inserten( i18n("Sw&itch User"), ALT+Key_I, dpyMenu ); -+ int id = inserten( i18n("Sw&itch User"), CTRL + Key_I, dpyMenu ); - connect( dpyMenu, SIGNAL(activated( int )), - SLOT(slotDisplaySelected( int )) ); - connect( dpyMenu, SIGNAL(aboutToShow()), -@@ -71,7 +72,7 @@ KGDialog::completeMenu() - - if (_allowClose) - inserten( _isLocal ? i18n("R&estart X Server") : i18n("Clos&e Connection"), -- ALT+Key_E, SLOT(slotExit()) ); -+ 0, SLOT(slotExit()) ); - - #ifdef XDMCP - if (_isLocal && _loginMode != _switchIf) { -@@ -81,10 +82,11 @@ KGDialog::completeMenu() - #endif - - if (_hasConsole) -- inserten( i18n("Co&nsole Login"), ALT+Key_N, SLOT(slotConsole()) ); -+ inserten( i18n("Co&nsole Login"), CTRL+Key_N, SLOT(slotConsole()) ); - - if (_allowShutdown != SHUT_NONE) { -- inserten( i18n("&Shutdown..."), ALT+Key_S, SLOT(slotShutdown( int )) ); -+ ensureMenu(); -+ optMenu->insertItem(SmallIconSet( "exit" ), i18n("&Shutdown..."), this, SLOT(slotShutdown(int)), CTRL+Key_S ); - QAccel *accel = new QAccel( this ); - accel->insertItem( ALT+CTRL+Key_Delete ); - connect( accel, SIGNAL(activated( int )), SLOT(slotShutdown( int )) ); -Index: kdm/kfrontend/kdmconfig.cpp -=================================================================== ---- kdm/kfrontend/kdmconfig.cpp.orig -+++ kdm/kfrontend/kdmconfig.cpp -@@ -33,6 +33,8 @@ Foundation, Inc., 51 Franklin Street, Fi - #include <unistd.h> - #include <sys/utsname.h> - -+struct timeval st = {0, 0}; -+ - CONF_GREET_DEFS - - QString _stsFile; -Index: kdm/kfrontend/kgapp.cpp -=================================================================== ---- kdm/kfrontend/kgapp.cpp.orig -+++ kdm/kfrontend/kgapp.cpp -@@ -36,6 +36,8 @@ Foundation, Inc., 51 Franklin Street, Fi - #include <kcrash.h> - #include <kstandarddirs.h> - #include <ksimpleconfig.h> -+#include <klocale.h> -+#include <kdebug.h> - - #include <qtimer.h> - #include <qcursor.h> -@@ -130,6 +132,7 @@ kg_main( const char *argv0 ) - static char *argv[] = { (char *)"kdmgreet", 0 }; - KCmdLineArgs::init( 1, argv, *argv, 0, 0, 0, true ); - -+ kdDebug() << timestamp() << "start" << endl; - kde_have_kipc = false; - KApplication::disableAutoDcopRegistration(); - KCrash::setSafer( true ); -@@ -166,6 +169,7 @@ kg_main( const char *argv0 ) - - GSendInt( G_Ready ); - -+ kdDebug() << timestamp() << " main1" << endl; - setCursor( dpy, app.desktop()->winId(), XC_left_ptr ); - - for (;;) { -@@ -206,6 +210,7 @@ kg_main( const char *argv0 ) - if (_useTheme && !_theme.isEmpty()) { - KThemedGreeter *tgrt; - dialog = tgrt = new KThemedGreeter; -+ kdDebug() << timestamp() << " themed" << endl; - if (!tgrt->isOK()) { - delete tgrt; - dialog = new KStdGreeter; -Index: kdm/kfrontend/kgreeter.cpp -=================================================================== ---- kdm/kfrontend/kgreeter.cpp.orig -+++ kdm/kfrontend/kgreeter.cpp -@@ -38,6 +38,7 @@ Foundation, Inc., 51 Franklin Street, Fi - #include <klistview.h> - #include <ksimpleconfig.h> - #include <kstringhandler.h> -+#include <kdebug.h> - - #undef Unsorted // x headers suck - make qdir.h work with --enable-final - #include <qdir.h> -@@ -46,6 +47,7 @@ Foundation, Inc., 51 Franklin Street, Fi - #include <qmemarray.h> - #include <qimage.h> - #include <qmovie.h> -+#include <qpainter.h> - #include <qpopupmenu.h> - #include <qtimer.h> - #include <qheader.h> -@@ -63,27 +65,46 @@ Foundation, Inc., 51 Franklin Street, Fi - #include <unistd.h> - #include <fcntl.h> - #include <sys/types.h> -+#include <utmp.h> -+#include <utmpx.h> - - #include <X11/Xlib.h> - - class UserListView : public KListView { - public: -- UserListView( QWidget *parent = 0, const char *name = 0 ) -+ UserListView( bool _them, QWidget *parent = 0, const char *name = 0 ) - : KListView( parent, name ) -- , cachedSizeHint( -1, 0 ) -+ , themed(_them), cachedSizeHint( -1, 0 ) - { - setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Ignored ); - header()->hide(); - addColumn( QString::null ); - setColumnAlignment( 0, AlignVCenter ); - setResizeMode( QListView::LastColumn ); -+ if (themed) { -+ setBackgroundMode( Qt::NoBackground ); -+ viewport()->setBackgroundMode( Qt::NoBackground ); -+ setFrameStyle( QFrame::NoFrame ); -+ } - } - -+ bool themed; - mutable QSize cachedSizeHint; - -- protected: -+ int sumHeight() const -+ { -+ int sum = 0; -+ for (QListViewItem *itm = firstChild(); itm; itm = itm->nextSibling()) { -+ sum += itm->height(); -+ } -+ return sum; -+ } -+public: - virtual QSize sizeHint() const - { -+ if (themed) -+ return KListView::sizeHint(); -+ - if (!cachedSizeHint.isValid()) { - constPolish(); - uint maxw = 0; -@@ -98,8 +119,23 @@ class UserListView : public KListView { - } - return cachedSizeHint; - } --}; -+ virtual void paintEmptyArea ( QPainter * p, const QRect & rect ) -+ { -+ if (!themed) -+ return KListView::paintEmptyArea(p, rect ); -+ -+ const QPixmap *pm = paletteBackgroundPixmap(); -+ if (!pm || pm->isNull()) -+ return; -+ -+ kdDebug() << "paintEmpty " << rect << endl; -+ QRect devRect = p->xForm( rect ); -+ kdDebug() << "paintEmpty2 " << devRect << endl; -+ p->drawPixmap(0, 0, *pm, devRect.left(), devRect.top() ); -+ } - -+ QPixmap background; -+}; - - int KGreeter::curPlugin = -1; - PluginList KGreeter::pluginList; -@@ -115,12 +151,14 @@ KGreeter::KGreeter( bool framed ) - , curSel( -1 ) - , prevValid( true ) - , needLoad( false ) -+ , themed( framed ) - { - stsFile = new KSimpleConfig( _stsFile ); - stsFile->setGroup( "PrevUser" ); - - if (_userList) { -- userView = new UserListView( this ); -+ readFacesList(); -+ userView = new UserListView( framed, this ); - connect( userView, SIGNAL(clicked( QListViewItem * )), - SLOT(slotUserClicked( QListViewItem * )) ); - connect( userView, SIGNAL(doubleClicked( QListViewItem * )), -@@ -128,10 +166,8 @@ KGreeter::KGreeter( bool framed ) - } - if (_userCompletion) - userList = new QStringList; -- if (userView || userList) -- insertUsers(); - -- sessMenu = new QPopupMenu( this ); -+ sessMenu = new QPopupMenu( this ); - connect( sessMenu, SIGNAL(activated( int )), - SLOT(slotSessionSelected( int )) ); - insertSessions(); -@@ -150,6 +186,33 @@ KGreeter::~KGreeter() - delete stsFile; - } - -+void KGreeter::readFacesList() -+{ -+ FILE *f = fopen( QFile::encodeName( _faceDir + "/.randomlist" ), "rt" ); -+ if ( !f ) -+ return; -+ QTextIStream is( f ); -+ while ( !is.eof() ) -+ { -+ QString line = is.readLine().simplifyWhiteSpace(); -+ if ( line.isEmpty() ) -+ continue; -+ QString icon; -+ int index = line.find( ' ' ); -+ if ( index > 0 ) { -+ icon = line.left( index ); -+ line = line.mid( index ); -+ } else { -+ icon = line; -+ line = QString::null; -+ } -+ randomFaces.push_back( icon ); -+ QStringList list = QStringList::split( ' ', line ); -+ for ( QStringList::ConstIterator it = list.begin(); it != list.end(); ++it ) -+ randomFacesMap[*it] = icon; -+ } -+} -+ - class UserListViewItem : public KListViewItem { - public: - UserListViewItem( UserListView *parent, const QString &text, -@@ -163,6 +226,14 @@ class UserListViewItem : public KListVie - parent->cachedSizeHint.setWidth( -1 ); - } - -+ virtual void paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) -+ { -+ if (((UserListView*)listView())->themed) -+ QListViewItem::paintCell(p, cg, column, width, alignment); -+ else -+ KListViewItem::paintCell(p, cg, column, width, alignment); -+ } -+ - QString login; - }; - -@@ -224,10 +295,23 @@ KGreeter::insertUser( const QImage &defa - QSize ns( 48, 48 ); - if (p.size() != ns) - p = p.convertDepth( 32 ).smoothScale( ns, QImage::ScaleMin ); -- goto gotit; -+ break; - } while (--nd >= 0); -- p = default_pix; -- gotit: -+ -+ if ( p.isNull() && randomFaces.count() ) { -+ QString randomFace = randomFacesMap[username]; -+ if ( randomFace.isNull() ) { -+ QStringList::size_type index = 0; -+ for ( size_t i = 0; i < username.length(); ++i ) -+ index += ( 0x7f - username.at( i ).latin1() ) % 37; -+ randomFace = randomFaces[ index % randomFaces.count() ]; -+ } -+ p.load( _faceDir + "/../pics/users/" + randomFace + ".png" ); -+ } -+ -+ if ( p.isNull() ) -+ p = default_pix; -+ - QString realname = KStringHandler::from8Bit( ps->pw_gecos ); - realname.truncate( realname.find( ',' ) ); - if (realname.isEmpty() || realname == username) -@@ -278,7 +362,7 @@ UserList::UserList( char **in ) - } - - void --KGreeter::insertUsers() -+KGreeter::insertUsers(int limit_users) - { - struct passwd *ps; - -@@ -305,6 +389,8 @@ KGreeter::insertUsers() - if (_showUsers == SHOW_ALL) { - UserList noUsers( _noUsers ); - QDict<int> dupes( 1000 ); -+ QStringList toinsert; -+ int count = 0; - for (setpwent(); (ps = getpwent()) != 0;) { - if (*ps->pw_dir && *ps->pw_shell && - (ps->pw_uid >= (unsigned)_lowUserId || -@@ -316,10 +402,53 @@ KGreeter::insertUsers() - QString username( QFile::decodeName( ps->pw_name ) ); - if (!dupes.find( username )) { - dupes.insert( username, (int *)-1 ); -- insertUser( default_pix, username, ps ); -+ toinsert.append( username ); -+ -+ if ( limit_users >= 0 && ++count > limit_users ) -+ break; - } - } - } -+ if ( limit_users >= 0 && ++count > limit_users ) { -+ utmpname( _PATH_WTMP ); -+ setutxent(); -+ toinsert = QStringList(); -+ dupes.clear(); -+ -+ for ( count = 0; count < limit_users; ) { -+ struct utmpx * ent = getutxent(); -+ if ( !ent ) -+ break; -+ struct passwd *ps = getpwnam( ent->ut_user ); -+ if (ps && *ps->pw_dir && *ps->pw_shell && -+ (ps->pw_uid >= (unsigned)_lowUserId || -+ !ps->pw_uid && _showRoot) && -+ ps->pw_uid <= (unsigned)_highUserId && -+ !noUsers.hasUser( ps->pw_name ) && -+ !noUsers.hasGroup( ps->pw_gid )) -+ { -+ QString username( QFile::decodeName( ent->ut_user ) ); -+ if (!dupes.find( username )) { -+ dupes.insert( username, (int *)-1 ); -+ toinsert.append( username ); -+ count++; -+ } -+ } -+ -+ -+ } -+ endutxent(); -+ } -+ -+ for ( QStringList::ConstIterator it = toinsert.begin(); -+ it != toinsert.end(); ++it ) -+ { -+ // pretty stupid to do another lookup round, but the number is limited -+ // and caching struct passwd is pretty ugly -+ struct passwd *ps = getpwnam( QFile::encodeName( *it ) ); -+ if ( ps ) -+ insertUser( default_pix, *it, ps ); -+ } - } else { - UserList users( _users ); - if (users.hasGroups()) { -@@ -721,21 +850,24 @@ KStdGreeter::KStdGreeter() - hbox2->addStretch( 1 ); - - if (sessMenu->count() > 1) { -- inserten( i18n("Session &Type"), ALT+Key_T, sessMenu ); -+ inserten( i18n("Session &Type"), 0, sessMenu ); - needSep = true; - } - - if (plugMenu) { -- inserten( i18n("&Authentication Method"), ALT+Key_A, plugMenu ); -+ inserten( i18n("&Authentication Method"), 0, plugMenu ); - needSep = true; - } - - #ifdef XDMCP -- completeMenu( LOGIN_LOCAL_ONLY, ex_choose, i18n("&Remote Login"), ALT+Key_R ); -+ completeMenu( LOGIN_LOCAL_ONLY, ex_choose, i18n("&Remote Login"), 0 ); - #else - completeMenu(); - #endif - -+ if (userView || userList) -+ insertUsers(); -+ - if (optMenu) - menuButton->setPopup( optMenu ); - else -@@ -829,6 +961,9 @@ KThemedGreeter::KThemedGreeter() - if (xauth_warning && (_authorized || !_authComplain)) - xauth_warning->hide( true ); - -+ if (userView || userList) -+ insertUsers( 7 ); // TODO: find out how many are a good value -+ - // if (!_greetString.isEmpty()) { - // } - // clock = new KdmClock( this, "clock" ); -@@ -854,37 +989,31 @@ KThemedGreeter::KThemedGreeter() - if ((itm = themer->findNode( "session_button" ))) { - if (sessMenu->count() <= 1) - itm->hide( true ); -- else { -- session_button = itm; -- QAccel *accel = new QAccel( this ); -- accel->insertItem( ALT+Key_T, 0 ); -- connect( accel, SIGNAL(activated( int )), SLOT(slotSessMenu()) ); -- } -+ else -+ session_button = itm; - } else { - if (sessMenu->count() > 1) { -- inserten( i18n("Session &Type"), ALT+Key_T, sessMenu ); -+ inserten( i18n("Session &Type"), 0, sessMenu ); - needSep = true; - } - } - - if (plugMenu) { -- inserten( i18n("&Authentication Method"), ALT+Key_A, plugMenu ); -+ inserten( i18n("&Authentication Method"), 0, plugMenu ); - needSep = true; - } - - #ifdef XDMCP -- completeMenu( LOGIN_LOCAL_ONLY, ex_choose, i18n("&Remote Login"), ALT+Key_R ); -+ completeMenu( LOGIN_LOCAL_ONLY, ex_choose, i18n("&Remote Login"), 0 ); - #else - completeMenu(); - #endif - - system_button = themer->findNode( "system_button" ); -- QAccel *accel = new QAccel( this ); -- accel->insertItem( ALT+Key_M, 0 ); -- connect( accel, SIGNAL(activated( int )), SLOT(slotActionMenu()) ); - - pluginSetup(); - -+ - verify->start(); - } - -@@ -902,8 +1031,8 @@ KThemedGreeter::pluginSetup() - inherited::pluginSetup(); - - if (userView && verify->entitiesLocal() && verify->entityPresettable() && userlist_rect) { -+ userView->setMaximumHeight( userView->sumHeight() ); - userlist_rect->setWidget( userView ); -- userView->show(); - } else { - if (userView) - userView->hide(); -@@ -919,12 +1048,17 @@ KThemedGreeter::verifyFailed() - { - // goButton->setEnabled( false ); - inherited::verifyFailed(); -+ if (userView) -+ userView->setEnabled(false); - } - - void - KThemedGreeter::verifyRetry() - { - // goButton->setEnabled( true ); -+ if (userView) -+ userView->setEnabled(true); -+ - } - - QString KThemedGreeter::timedUser = QString::null; diff --git a/opensuse/tdebase/kdm-mark_autologin.diff b/opensuse/tdebase/kdm-mark_autologin.diff deleted file mode 100644 index a913f5a94..000000000 --- a/opensuse/tdebase/kdm-mark_autologin.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: kdm/backend/client.c -=================================================================== ---- kdm/backend/client.c.orig -+++ kdm/backend/client.c -@@ -1214,6 +1214,8 @@ StartClient() - env = setEnv( env, "PATH", curuid ? td->userPath : td->systemPath ); - env = setEnv( env, "SHELL", p->pw_shell ); - env = setEnv( env, "HOME", p->pw_dir ); -+ if (cursource == PWSRC_AUTOLOGIN) -+ env = setEnv (env, "KDM_AUTOLOGIN", curuser); - #if !defined(USE_PAM) && !defined(_AIX) && defined(KERBEROS) - if (krbtkfile[0] != '\0') - env = setEnv( env, "KRBTKFILE", krbtkfile ); diff --git a/opensuse/tdebase/kdm-pam-np-legacy b/opensuse/tdebase/kdm-pam-np-legacy deleted file mode 100644 index 5d139e0bb..000000000 --- a/opensuse/tdebase/kdm-pam-np-legacy +++ /dev/null @@ -1,7 +0,0 @@ -#%PAM-1.0 -auth required pam_permit.so -account include common-account -password include common-password -session include common-session -session required pam_devperm.so -session required pam_resmgr.so diff --git a/opensuse/tdebase/kdm-relaxed-auth.diff b/opensuse/tdebase/kdm-relaxed-auth.diff deleted file mode 100644 index c94fa2b5d..000000000 --- a/opensuse/tdebase/kdm-relaxed-auth.diff +++ /dev/null @@ -1,22 +0,0 @@ -Index: kdm/backend/auth.c -=================================================================== ---- kdm/backend/auth.c.orig -+++ kdm/backend/auth.c -@@ -518,6 +518,7 @@ DefineLocal( FILE *file, Xauth *auth, in - uname( &name ); - writeAddr( FamilyLocal, strlen( name.nodename ), name.nodename, - file, auth, ok ); -+ setenv("XAUTHLOCALHOSTNAME", name.nodename, 1); - #endif - - #if !defined(NEED_UTSNAME) || defined(__hpux) -@@ -1211,6 +1212,9 @@ SetUserAuthorization( struct display *d - userEnviron = setEnv( userEnviron, "XAUTHORITY", envname ); - systemEnviron = setEnv( systemEnviron, "XAUTHORITY", envname ); - } -+ name = getenv("XAUTHLOCALHOSTNAME"); -+ if (name) -+ userEnviron = setEnv( userEnviron, "XAUTHLOCALHOSTNAME", name); - /* a chown() used to be here, but this code runs as user anyway */ - } - Debug( "done SetUserAuthorization\n" ); diff --git a/opensuse/tdebase/kdm-suspend-hal.diff b/opensuse/tdebase/kdm-suspend-hal.diff deleted file mode 100644 index 711e1c114..000000000 --- a/opensuse/tdebase/kdm-suspend-hal.diff +++ /dev/null @@ -1,331 +0,0 @@ -Index: kdm/backend/ctrl.c -=================================================================== ---- kdm/backend/ctrl.c.orig -+++ kdm/backend/ctrl.c -@@ -483,6 +483,10 @@ processCtrl( const char *string, int len - Reply( "nuke\t" ); - } - } -+ if (d->allowSuspend != SHUT_NONE) { -+ Reply( "suspend\t" ); -+ } -+ - if ((d->displayType & d_location) == dLocal && - AnyReserveDisplays()) - Writer( fd, cbuf, sprintf( cbuf, "reserve %d\t", -Index: kdm/backend/greet.h -=================================================================== ---- kdm/backend/greet.h.orig -+++ kdm/backend/greet.h -@@ -125,6 +125,7 @@ from the copyright holder. - # define SHUT_REBOOT 1 /* how */ - # define SHUT_HALT 2 - # define SHUT_CONSOLE -1 /* pseudo-code */ -+# define SHUT_SUSPEND -2 /* pseudo-code */ - # define SHUT_SCHEDULE 0 /* when; config only */ - # define SHUT_TRYNOW 1 - # define SHUT_FORCENOW 2 -Index: kdm/config.def -=================================================================== ---- kdm/config.def.orig -+++ kdm/config.def -@@ -1799,6 +1799,19 @@ Description: - Who is allowed to shut down the system. This applies both to the - greeter and to the command <acronym>FiFo</acronym>. - -+Key: AllowSuspend -+Type: enum -+ None/SHUT_NONE: no <guilabel>Suspend...</guilabel> menu entry is shown at all -+ Root/SHUT_ROOT: the <systemitem class="username">root</systemitem> password must be entered to suspend -+ All/SHUT_ALL: everybody can suspend the machine -+Default: Root -+User: greeter -+User: core -+Instance: #:0/All -+Comment: & -+Description: -+ If the user should have an option to suspend the system if configured to (also in the desktop) -+ - Key: AllowSdForceNow - Type: enum - None: no forced shutdown is allowed at all -Index: kdm/kfrontend/kdmshutdown.cpp -=================================================================== ---- kdm/kfrontend/kdmshutdown.cpp.orig -+++ kdm/kfrontend/kdmshutdown.cpp -@@ -22,6 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fi - - */ - -+#include <liblazy.h> - #include "kdmshutdown.h" - #include "kdm_greet.h" - -@@ -34,6 +35,7 @@ Foundation, Inc., 51 Franklin Street, Fi - #include <kdialog.h> - #include <kstandarddirs.h> - #include <kuser.h> -+#include <kdebug.h> - - #include <qcombobox.h> - #include <qvbuttongroup.h> -@@ -57,6 +59,10 @@ Foundation, Inc., 51 Franklin Street, Fi - int KDMShutdownBase::curPlugin = -1; - PluginList KDMShutdownBase::pluginList; - -+#define DBUS_HAL_INTERFACE "org.freedesktop.Hal" -+#define DBUS_HAL_SYSTEM_POWER_INTERFACE "org.freedesktop.Hal.Device.SystemPowerManagement" -+#define HAL_UDI_COMPUTER "/org/freedesktop/Hal/devices/computer" -+ - KDMShutdownBase::KDMShutdownBase( int _uid, QWidget *_parent ) - : inherited( _parent ) - , box( new QVBoxLayout( this, KDmh, KDsh ) ) -@@ -71,6 +77,7 @@ KDMShutdownBase::KDMShutdownBase( int _u - , verify( 0 ) - , needRoot( -1 ) - , uid( _uid ) -+ , willSuspend( false ) - { - } - -@@ -87,6 +94,7 @@ KDMShutdownBase::complete( QWidget *prev - - if (uid && - ((willShut && _allowShutdown == SHUT_ROOT) || -+ ( willSuspend && _allowSuspend == SHUT_ROOT ) || - (mayNuke && _allowNuke == SHUT_ROOT))) - { - rootlab = new QLabel( i18n("Root authorization required."), this ); -@@ -169,6 +177,7 @@ KDMShutdownBase::updateNeedRoot() - { - int nNeedRoot = uid && - (((willShut && _allowShutdown == SHUT_ROOT) || -+ ( willSuspend && _allowSuspend == SHUT_ROOT ) || - (_allowNuke == SHUT_ROOT && doesNuke))); - if (verify && nNeedRoot != needRoot) { - if (needRoot == 1) -@@ -425,7 +434,7 @@ KDMRadioButton::mouseDoubleClickEvent( Q - - - KDMDelayedPushButton::KDMDelayedPushButton( const KGuiItem &item, -- QWidget *parent, -+ QWidget *parent, - const char *name ) - : inherited( item, parent, name ) - , pop( 0 ) -@@ -490,6 +499,57 @@ KDMSlimShutdown::KDMSlimShutdown( QWidge - buttonlay->addWidget( btnReboot ); - connect( btnReboot, SIGNAL(clicked()), SLOT(slotReboot()) ); - -+ if ( _allowSuspend != SHUT_NONE ) -+ { -+ int supported = -1; -+ liblazy_hal_get_property_bool(HAL_UDI_COMPUTER, "power_management.can_suspend", &supported); -+ if (supported == 1) -+ suspend_ram = true; -+ else -+ suspend_ram = false; -+ -+ liblazy_hal_get_property_bool(HAL_UDI_COMPUTER, "power_management.can_standby", &supported); -+ if (supported == 1) -+ standby = true; -+ else -+ standby = false; -+ liblazy_hal_get_property_bool(HAL_UDI_COMPUTER, "power_management.can_hibernate", &supported); -+ if (supported == 1) -+ suspend_disk = true; -+ else -+ suspend_disk = false; -+ -+/* if (liblazy_polkit_is_user_allowed_by_uid(0, "hal-power-hibernate", NULL) != 1) -+ suspend_disk = false; -+ if (liblazy_polkit_is_user_allowed_by_uid(0, "hal-power-suspend", NULL) != 1) -+ suspend_ram = false; -+ if (liblazy_polkit_is_user_allowed_by_uid(0, "hal-power-standby", NULL) != 1) -+ standby = false; -+*/ -+ int sum = standby + suspend_ram + suspend_disk; -+ if ( sum ) { -+ buttonlay->addSpacing( KDialog::spacingHint() ); -+ -+ QButton *btnSuspend; -+ if (sum > 1) { -+ btnSuspend = new KDMDelayedPushButton( KGuiItem( i18n("&Suspend Computer"), "player_pause"), this ); -+ QPopupMenu *suspends = new QPopupMenu(this); -+ if (suspend_disk) -+ suspends->insertItem(i18n("Suspend to Disk"), 1); -+ if (suspend_ram) -+ suspends->insertItem(i18n("Suspend to RAM"), 2); -+ if (standby) -+ suspends->insertItem(i18n("Standby"), 3); -+ connect(suspends, SIGNAL(activated(int)), SLOT(slotSuspend(int))); -+ static_cast<KDMDelayedPushButton*>(btnSuspend)->setPopup(suspends); -+ } else { -+ btnSuspend = new KPushButton( KGuiItem( i18n("&Suspend Computer"), "player_pause"), this ); -+ } -+ buttonlay->addWidget( btnSuspend ); -+ connect(btnSuspend, SIGNAL(clicked()), SLOT(slotSuspend())); -+ } -+ } -+ - GSet( 1 ); - GSendInt( G_ListBootOpts ); - if (GRecvInt() == BO_OK) { -@@ -536,6 +596,65 @@ KDMSlimShutdown::~KDMSlimShutdown() - freeStrArr( targetList ); - } - -+void KDMSlimShutdown::slotSuspend() -+{ -+ if (suspend_disk) -+ slotSuspend( 1 ); -+ else if (suspend_ram) -+ slotSuspend( 2 ); -+ else if ( standby ) -+ slotSuspend( 3 ); -+ else -+ reject(); -+} -+ -+void KDMSlimShutdown::slotSuspend(int id) -+{ -+ reject(); -+ // dpySpec *sess = fetchSessions( lstRemote | lstTTY ); -+ // it would be nice to show the sessions to suspend, but it -+ // would require string changes (coolo) -+ dpySpec *sess = 0; -+ kdDebug() << "slotSuspend " << _allowSuspend << endl; -+ if (sess || _allowSuspend == SHUT_ROOT) -+ { -+ int ret = KDMConfShutdown( -1, sess, SHUT_SUSPEND, 0 ).exec(); -+ if ( !ret ) -+ return; -+ } -+ -+ int error = 0; -+ int wake = 0; -+ DBusMessage *reply; -+ -+ if (suspend_disk && id == 1) { -+ error = liblazy_dbus_system_send_method_call(DBUS_HAL_INTERFACE, -+ HAL_UDI_COMPUTER, -+ DBUS_HAL_SYSTEM_POWER_INTERFACE, -+ "Hibernate", -+ &reply, -+ DBUS_TYPE_INVALID); -+ } else if (suspend_ram && id == 2) -+ error = liblazy_dbus_system_send_method_call(DBUS_HAL_INTERFACE, -+ HAL_UDI_COMPUTER, -+ DBUS_HAL_SYSTEM_POWER_INTERFACE, -+ "Suspend", -+ &reply, -+ DBUS_TYPE_INT32, -+ &wake, -+ DBUS_TYPE_INVALID); -+ else if (standby && id == 3) -+ error = liblazy_dbus_system_send_method_call(DBUS_HAL_INTERFACE, -+ HAL_UDI_COMPUTER, -+ DBUS_HAL_SYSTEM_POWER_INTERFACE, -+ "Standby", -+ &reply, -+ DBUS_TYPE_INVALID); -+ else { -+ return; -+ } -+} -+ - void - KDMSlimShutdown::slotSched() - { -@@ -601,16 +720,27 @@ KDMConfShutdown::KDMConfShutdown( int _u - if (type == SHUT_CONSOLE) - willShut = false; - #endif -+ QString title; -+ if ( type == SHUT_HALT) -+ title = i18n("Turn Off Computer"); -+ else { -+#ifdef HAVE_VTS -+ if ( type == SHUT_CONSOLE) -+ title = i18n("Switch to Console"); -+ else -+#endif -+ if ( type == SHUT_SUSPEND ) { -+ willSuspend = true; -+ title = i18n( "Suspend Computer" ); -+ } -+ else -+ title = i18n("Restart Computer"); -+ } -+ - box->addWidget( new QLabel( QString( "<qt><center><b><nobr>" - "%1%2" - "</nobr></b></center><br></qt>" ) -- .arg( (type == SHUT_HALT) ? -- i18n("Turn Off Computer") : --#ifdef HAVE_VTS -- (type == SHUT_CONSOLE) ? -- i18n("Switch to Console") : --#endif -- i18n("Restart Computer") ) -+ .arg( title ) - .arg( os ? - i18n("<br>(Next boot: %1)") - .arg( QString::fromLocal8Bit( os ) ) : -Index: kdm/kfrontend/kdmshutdown.h -=================================================================== ---- kdm/kfrontend/kdmshutdown.h.orig -+++ kdm/kfrontend/kdmshutdown.h -@@ -67,7 +67,7 @@ class KDMShutdownBase : public FDialog, - #else - static const bool willShut = true; - #endif -- bool mayNuke, doesNuke, mayOk, maySched; -+ bool mayNuke, doesNuke, mayOk, maySched, willSuspend; - - private slots: - void slotSched(); -@@ -118,7 +118,6 @@ class KDMShutdown : public KDMShutdownBa - QComboBox *targets; - int oldTarget; - int sch_st, sch_to; -- - }; - - class KDMRadioButton : public QRadioButton { -@@ -168,10 +167,13 @@ class KDMSlimShutdown : public FDialog { - void slotReboot(); - void slotReboot( int ); - void slotSched(); -+ void slotSuspend(); -+ void slotSuspend(int); - - private: - bool checkShutdown( int type, const char *os ); - char **targetList; -+ bool suspend_disk, suspend_ram, standby; - - }; - -Index: kdm/kfrontend/Makefile.am -=================================================================== ---- kdm/kfrontend/Makefile.am.orig -+++ kdm/kfrontend/Makefile.am -@@ -4,7 +4,7 @@ GENKDMCONF_FLAGS = - SUBDIRS = themer themes pics sessions - - AM_CPPFLAGS = -I$(srcdir)/../backend -I.. -I$(top_srcdir)/kcontrol/background \ -- -I$(top_srcdir)/kdmlib $(all_includes) -+ -I$(top_srcdir)/kdmlib $(all_includes) $(DBUS_INCS) - - bin_PROGRAMS = kdm_config kdm_greet krootimage genkdmconf kdmctl - -@@ -25,7 +25,7 @@ kdm_greet_SOURCES = \ - kgreeter.cpp \ - kgapp.cpp - kdm_greet_LDFLAGS = $(all_libraries) $(KDE_RPATH) --kdm_greet_LDADD = themer/libkdmthemer.a $(LIB_KDEUI) $(XTESTLIB) $(LIBPOSIX4) -+kdm_greet_LDADD = themer/libkdmthemer.a $(LIB_KDEUI) $(XTESTLIB) $(LIBPOSIX4) -llazy $(DBUS_LIBS) - - krootimage_SOURCES = krootimage.cpp - krootimage_LDFLAGS = $(all_libraries) $(KDE_RPATH) diff --git a/opensuse/tdebase/kdm-sysconfig-values.diff b/opensuse/tdebase/kdm-sysconfig-values.diff deleted file mode 100644 index c3b9f8af9..000000000 --- a/opensuse/tdebase/kdm-sysconfig-values.diff +++ /dev/null @@ -1,737 +0,0 @@ -Index: kdm/config.def -=================================================================== ---- kdm/config.def.orig -+++ kdm/config.def -@@ -792,6 +792,21 @@ Description: - <emphasis>Do not</emphasis> change it, you may interfere with future - upgrades and this could result in &kdm; failing to run. - -+Key: SUSEConfigVersion -+Type: string -+Default: "" -+CDefault: - -+User: dummy -+# will be overwritten -+Instance: -+Comment: -+ This option exists solely for the purpose of a clean automatic upgrade. -+ Do not even think about changing it! -+Description: -+ This option exists solely for the purpose of clean automatic upgrades. -+ <emphasis>Do not</emphasis> change it, you may interfere with future -+ upgrades and this could result in &kdm; failing to run. -+ - Key: PAMService - If: defined(USE_PAM) - Type: string -@@ -874,10 +889,10 @@ Description: - - Key: PidFile - Type: string --Default: "" -+Default: "/var/run/kdm.pid" - User: core --Instance: "/var/run/kdm.pid" --Merge: xdm -+Instance: "" -+Update: reset_sec_0_1 - Comment: - Where &kdm; should store its PID (do not store if empty). - Description: -@@ -901,10 +916,10 @@ Description: - Key: AuthDir - Type: path - # differs from XDM --Default: "/var/run/xauth" -+Default: "/var/lib/xdm/authdir/authfiles" - User: core --Instance: #"/tmp" --Merge: xdm(P_authDir) -+Instance: #"" -+Update: reset_sec_0_1 - Comment: - Where to store authorization files. - Description: -@@ -930,7 +945,7 @@ Description: - - Key: ExportList - Type: list --Default: "" -+Default: "LANG,XCURSOR_THEME" - User: core - Instance: #"LD_LIBRARY_PATH,ANOTHER_IMPORTANT_VAR" - Merge: xdm(P_List) -@@ -1063,9 +1078,10 @@ Description: - - Key: Enable - Type: bool --Default: true -+Default: false - User: dep(xdmcpEnable) - Instance: false -+Update: reset_sec_0_1 - Comment: & - Description: - Whether &kdm; should listen to incoming &XDMCP; requests. -@@ -1102,11 +1118,10 @@ Description: - Key: Xaccess - Type: string - # differs from xdm --Default: *KDMCONF "/Xaccess" -+Default: *"/etc/X11/xdm/Xaccess" - User: config(Xaccess) --Instance: #"" --Update: mk_xaccess --Merge: xdm:accessFile -+Instance: # -+Update: reset_sec_0_1 - Comment: - &XDMCP; access control file in the usual XDM-Xaccess format. - Description: -@@ -1164,13 +1179,11 @@ Description: - - Key: Willing - Type: string --Default: "" -+Default: "/etc/X11/xdm/Xwilling" - User: core - # will be overwritten - Instance: # --Update: mk_willing --Merge: xdm --Merge: kdm:Xwilling -+Update: reset_sec_0_1 - Comment: - The program which is invoked to dynamically generate replies to &XDMCP; - DirectQuery or BroadcastQuery requests. -@@ -1244,7 +1257,7 @@ Type: enum - None/BO_NONE: no boot manager - Grub/BO_GRUB: Grub boot manager - Lilo/BO_LILO: Lilo boot manager (Linux on i386 & x86-64 only) --Default: None -+Default: Grub - User: core - User: greeter - Instance: #Grub -@@ -1347,6 +1360,7 @@ Default: DEF_SERVER_CMD - DDefault: - - User: core - Instance: :*/DEF_SERVER_CMD -+Update: reset_sec_0_1 - Comment: - The command line to start the &X-Server;, without display number and VT spec. - This string is subject to word splitting. -@@ -1355,7 +1369,7 @@ Description: - This string is subject to word splitting. - </para><para> - The default is something reasonable for the system on which &kdm; was built, -- like <command>/usr/X11R6/bin/X</command>. -+ like <command>/usr/bin/X</command>. - - Key: ServerArgsLocal - Type: string -@@ -1549,11 +1563,10 @@ Description: - Key: Resources - # XXX strictly speaking this is supposed to be a string list, i think. - Type: string --Default: "" -+Default: "/etx/X11/xdm/Xresources" - User: core - Instance: #*/"" --Update: cp_resources --Merge: xdm -+Update: reset_sec_0_1 - Comment: - Specify a file with X-resources for the greeter, chooser and background. - The KDE frontend does not use this file, so you do not need it unless you -@@ -1581,12 +1594,11 @@ Description: - - Key: Setup - Type: string --Default: "" -+Default: "/etc/X11/xdm/Xsetup" - User: core - # will be overwritten - Instance: #*/"" --Update: mk_setup --Merge: xdm -+Update: reset_sec_0_1 - Comment: - A program to run before the greeter is shown. Can be used to start an - xconsole or an alternative background generator. Subject to word splitting. -@@ -1602,12 +1614,11 @@ Description: - - Key: Startup - Type: string --Default: "" -+Default: "/etc/X11/xdm/Xstartup" - User: core - # will be overwritten - Instance: #*/"" --Update: mk_startup --Merge: xdm -+Update: reset_sec_0_1 - Comment: - A program to run before a user session starts. Subject to word splitting. - Description: -@@ -1620,12 +1631,11 @@ Description: - - Key: Reset - Type: string --Default: "" -+Default: "/etc/X11/xdm/Xreset" - User: core - # will be overwritten - Instance: #*/"" --Update: mk_reset --Merge: xdm -+Update: reset_sec_0_1 - Comment: - A program to run after a user session exits. Subject to word splitting. - Description: -@@ -1638,12 +1648,12 @@ Description: - - Key: Session - Type: string --Default: XBINDIR "/xterm -ls -T" -+Default: "/etc/X11/xdm/Xsession" - #Merge: xdm - incompatible! - User: core - # will be overwritten - Instance: #*/"" --Update: mk_session -+Update: reset_sec_0_1 - Comment: - The program which is run as the user which logs in. It is supposed to - interpret the session argument (see SessionsDirs) and start an appropriate -@@ -1746,10 +1756,11 @@ Description: - - Key: AllowRootLogin - Type: bool --Default: true -+Default: false - User: core - User: greeter(showRoot) --Instance: */false -+Instance: #*/false -+Update: reset_sec_1_2 - Merge: xdm - Comment: - Allow root logins? -@@ -1764,6 +1775,7 @@ User: core - # sensible? - Instance: */false - Instance: :*/true -+Update: reset_sec_0_1 - Merge: xdm - Comment: - Allow to log in, when user has set an empty password? -@@ -1775,12 +1787,13 @@ Type: enum - None/SHUT_NONE: no <guilabel>Shutdown...</guilabel> menu entry is shown at all - Root/SHUT_ROOT: the <systemitem class="username">root</systemitem> password must be entered to shut down - All/SHUT_ALL: everybody can shut down the machine --Default: All -+Default: Root - User: core - User: greeter - Instance: */Root --Instance: :*/All --Merge: kdm:-Greeter/ -+Instance: #:*/All -+Update: reset_sec_0_1 -+#Merge: kdm:-Greeter/ - Comment: & - Description: - Who is allowed to shut down the system. This applies both to the -@@ -1866,6 +1879,7 @@ Type: bool - Default: false - User: dep - Instance: #:0/true -+Update: reset_sec_0_1 - Comment: & - Description: - Enable automatic login. <emphasis>Use with extreme care!</emphasis> -@@ -1899,7 +1913,7 @@ Default: "" - PostProc: PautoLoginX - User: core(autoUser) - User: greeter --Instance: #:0/"fred" -+Instance: #:0/"" - Merge: xdm:autoUser(P_autoUser) - Comment: & - Description: -@@ -1930,10 +1944,10 @@ Description: - - Key: SessionsDirs - Type: list --Default: KDMDATA "/sessions" -+Default: "/etc/X11/sessions," KDMDATA "/sessions,/usr/share/xsessions" - User: core - User: greeter-c --Instance: #*/"/etc/X11/sessions,/usr/share/xsessions" -+Instance: #*/"" - Comment: - The directories containing session type definitions in .desktop format. - Description: -@@ -2008,7 +2022,8 @@ Type: enum - Clock/LOGO_CLOCK: a neat analog clock - Default: Clock - User: greeter --Instance: */Logo -+Instance: */Clock -+Update: reset_sec_0_1 - Comment: - What should be shown in the greeter's logo are: - Description: -@@ -2223,7 +2238,7 @@ Description: - - Key: HiddenUsers - Type: list --Default: "" -+Default: "root" - User: greeter-c(noUsers) - Instance: #*/"root" - # depends on {Min,Max}ShowUID -@@ -2363,13 +2378,14 @@ Type: enum - Default: OneStar - User: greeter - Instance: #*/NoEcho -+Update: reset_sec_0_1 - Comment: & - Description: - The password input fields cloak the typed in text. Specify, how to do it: - - Key: UseBackground - Type: bool --Default: true -+Default: false - User: greeter - Instance: #*/! - Comment: -@@ -2507,6 +2523,7 @@ Type: bool - Default: false - User: greeter - Instance: :0/true -+Update: reset_sec_0_1 - Comment: - Enable &kdm;'s built-in xconsole. Note that this can be enabled for only - one display at a time. -@@ -2595,9 +2612,10 @@ Description: - - Key: Preloader - Type: string --Default: "" -+Default: KDE_BINDIR "/preloadkde" - User: greeter-c --Instance: */KDE_BINDIR "/preloadkde" -+Instance: */"" -+Update: reset_sec_0_1 - Comment: & - Description: - A program to run while the greeter is visible. It is supposed to preload -@@ -2606,7 +2624,7 @@ Description: - - Key: UseTheme - Type: bool --Default: false -+Default: true - User: greeter - Instance: #*/true - Comment: & -@@ -2615,9 +2633,10 @@ Description: - - Key: Theme - Type: string --Default: "" -+Default: KDMDATA "/themes/SUSE" - User: greeter --Instance: */KDMDATA "/themes/circles" -+Instance: */"" -+Update: reset_sec_0_1 - Comment: & - Description: - The theme to use for the greeter. Can point to either a directory or an XML -Index: kdm/kfrontend/read_sysconfig.sh -=================================================================== ---- /dev/null -+++ kdm/kfrontend/read_sysconfig.sh -@@ -0,0 +1,147 @@ -+#!/bin/bash -+# -+# Copyright (c) 2006 SUSE Linux Products GmbH Nuernberg, Germany. -+# -+# Author: Stephan Kulow <coolo@suse.de> -+# -+ -+# -+# check if we are started as root -+# only one of UID and USER must be set correctly -+# -+if test "$UID" != 0 -a "$USER" != root; then -+ echo "You must be root to start $0." -+ exit 1 -+fi -+ -+# -+# check for sysconfig/displaymanager or rc.config -+# -+test -f /etc/sysconfig/displaymanager && source /etc/sysconfig/displaymanager -+test -f /etc/sysconfig/security && source /etc/sysconfig/security -+test -f /etc/sysconfig/language && source /etc/sysconfig/language -+ -+# -+# source /etc/profile to get $kdedir -+# -+kdedir="/opt/kde3" -+kdmdir="/var/adm/kdm" -+ -+# check for write permissions -+[ -w ${kdmdir} ] || mkdir -p ${kdmdir} -+[ -w ${kdmdir} ] || exit -+ -+# -+# Set Style of Shutdown -+# -+ECHO_MODE="OneStar" -+ALLOW_ROOT_LOGIN="true" -+case "$DISPLAYMANAGER_SHUTDOWN" in -+ all|ALL|All) -+ DISPLAYMANAGER_SHUTDOWN=All;; -+ none|NONE|None) -+ DISPLAYMANAGER_SHUTDOWN=None;; -+ auto|Auto|AUTO) -+ case "$PERMISSION_SECURITY" in -+ *easy*) -+ DISPLAYMANAGER_SHUTDOWN=All -+ ;; -+ *paranoid*) -+ ECHO_MODE="NoEcho" -+ ALLOW_ROOT_LOGIN="false" -+ DISPLAYMANAGER_SHUTDOWN=Root -+ ;; -+ *) -+ DISPLAYMANAGER_SHUTDOWN=Root -+ ;; -+ esac -+ ;; -+ * ) -+ DISPLAYMANAGER_SHUTDOWN=Root;; -+esac -+ -+( -+echo "[X-*-Greeter]" -+if [ -n "$KDM_USERS" ]; then -+ echo "ShowUsers=Selected" -+ echo -n "SelectedUsers=" -+ echo ${KDM_USERS}|sed -e 's@ [ ]*@ @g' -e 's@ @,@g' -+else -+ echo "ShowUsers=NotHidden" -+fi -+if [ "$DISPLAYMANAGER_AD_INTEGRATION" = "yes" ]; then -+ echo "PluginsLogin=winbind" -+fi -+if [ -n "$DISPLAYMANAGER_KDM_THEME" -a -d "/opt/kde3/share/apps/kdm/themes/$DISPLAYMANAGER_KDM_THEME" ]; then -+ echo "Theme=/opt/kde3/share/apps/kdm/themes/$DISPLAYMANAGER_KDM_THEME" -+ echo "UseTheme=true" -+ echo "UseBackground=false" -+else -+ echo "UseTheme=false" -+ echo "UseBackground=true" -+fi -+# kdm has en_US as default instead of simply reading LC_LANG :( -+echo "Language=" -+ -+echo "[Xdmcp]" -+if [ "$DISPLAYMANAGER_REMOTE_ACCESS" = "yes" ]; then -+ echo "Enable=true" -+else -+ echo "Enable=false" -+fi -+ -+echo "[X-:0-Core]" -+if [ "$DISPLAYMANAGER_AUTOLOGIN" ]; then -+ echo "AutoLoginEnable=true" -+ echo "AutoLoginUser=${DISPLAYMANAGER_AUTOLOGIN}" -+else -+ echo "AutoLoginEnable=false" -+fi -+if [ "$DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN" = "yes" ]; then -+ echo "ServerArgsLocal=" -+else -+ echo "ServerArgsLocal=-nolisten tcp" -+fi -+if [ "$DISPLAYMANAGER_PASSWORD_LESS_LOGIN" = "yes" ]; then -+ echo "NoPassEnable=true" -+ echo "NoPassAllUsers=true" -+else -+ echo "NoPassEnable=false" -+ echo "NoPassAllUsers=false" -+fi -+ -+echo "[X-:*-Core]" -+echo "AllowShutdown=${DISPLAYMANAGER_SHUTDOWN}" -+echo "AllowRootLogin=${ALLOW_ROOT_LOGIN}" -+echo "AllowNullPasswd=${ALLOW_ROOT_LOGIN}" -+ -+echo "[X-*-Core]" -+ -+if test "$DISPLAYMANAGER_ROOT_LOGIN_REMOTE" = "yes"; then -+ echo "AllowRootLogin=true" -+else -+ echo "AllowRootLogin=false" -+fi -+ -+case "$DISPLAYMANAGER_XSERVER" in -+ Xgl) -+ xgl=`type -p Xgl` -+ echo "ServerCmd=$xgl $DISPLAYMANAGER_XGL_OPTS -br" -+ echo "ServerTimeout=50" -+ ;; -+ Xorg) -+ xorg=`type -p Xorg` -+ echo "ServerCmd=$xorg -br" -+ ;; -+ *) -+ echo "#Unknown X server - leaving X" -+ ;; -+esac -+ -+echo "[General]" -+if [ "$DISPLAYMANAGER_STARTS_XSERVER" != "yes" ]; then -+ echo "StaticServers=" -+fi -+ -+) > ${kdmdir}/kdmrc.sysconfig -+ -Index: kdm/kfrontend/kdm_config.c -=================================================================== ---- kdm/kfrontend/kdm_config.c.orig -+++ kdm/kfrontend/kdm_config.c -@@ -386,7 +386,7 @@ static const char *kdmrc = KDMCONF "/kdm - static Section *rootsec; - - static void --ReadConf() -+ReadConfFile(const char *rcfile) - { - const char *nstr, *dstr, *cstr, *dhost, *dnum, *dclass; - char *s, *e, *st, *en, *ek, *sl, *pt; -@@ -396,14 +396,9 @@ ReadConf() - int nlen, dlen, clen, dhostl, dnuml, dclassl; - int i, line, sectmoan, restl; - File file; -- static int confread; - -- if (confread) -- return; -- confread = 1; -- -- Debug( "reading config %s ...\n", kdmrc ); -- if (!readFile( &file, kdmrc, "master configuration" )) -+ Debug( "reading config %s ...\n", rcfile ); -+ if (!readFile( &file, rcfile, "master configuration" )) - return; - - for (s = file.buf, line = 0, cursec = 0, sectmoan = 1; s < file.eof; s++) { -@@ -429,7 +424,7 @@ ReadConf() - e--; - if (*e != ']') { - cursec = 0; -- LogError( "Invalid section header at %s:%d\n", kdmrc, line ); -+ LogError( "Invalid section header at %s:%d\n", rcfile, line ); - continue; - } - nstr = sl + 1; -@@ -438,8 +433,8 @@ ReadConf() - if (nlen == cursec->nlen && - !memcmp( nstr, cursec->name, nlen )) - { -- LogInfo( "Multiple occurrences of section [%.*s] in %s. " -- "Consider merging them.\n", nlen, nstr, kdmrc ); -+ Debug( "Multiple occurrences of section [%.*s] in %s. " -+ "Consider merging them.\n", nlen, nstr, rcfile ); - goto secfnd; - } - if (nstr[0] == 'X' && nstr[1] == '-') { -@@ -495,7 +490,7 @@ ReadConf() - illsec: - cursec = 0; - LogError( "Unrecognized section name [%.*s] at %s:%d\n", -- nlen, nstr, kdmrc, line ); -+ nlen, nstr, rcfile, line ); - continue; - newsec: - if (!(cursec = Malloc( sizeof(*cursec) ))) -@@ -523,7 +518,7 @@ ReadConf() - if (!cursec) { - if (sectmoan) { - sectmoan = 0; -- LogError( "Entry outside any section at %s:%d", kdmrc, line ); -+ LogError( "Entry outside any section at %s:%d", rcfile, line ); - } - goto sktoeol; - } -@@ -531,13 +526,13 @@ ReadConf() - for (; (s < file.eof) && (*s != '\n'); s++) - if (*s == '=') - goto haveeq; -- LogError( "Invalid entry (missing '=') at %s:%d\n", kdmrc, line ); -+ LogError( "Invalid entry (missing '=') at %s:%d\n", rcfile, line ); - continue; - - haveeq: - for (ek = s - 1; ; ek--) { - if (ek < sl) { -- LogError( "Invalid entry (empty key) at %s:%d\n", kdmrc, line ); -+ LogError( "Invalid entry (empty key) at %s:%d\n", rcfile, line ); - goto sktoeol; - } - if (!isspace( *ek )) -@@ -551,7 +546,7 @@ ReadConf() - if (*s == '\\') { - s++; - if (s >= file.eof || *s == '\n') { -- LogError( "Trailing backslash at %s:%d\n", kdmrc, line ); -+ LogError( "Trailing backslash at %s:%d\n", rcfile, line ); - break; - } - switch (*s) { -@@ -580,29 +575,42 @@ ReadConf() - goto keyok; - } - LogError( "Unrecognized key '%.*s' in section [%.*s] at %s:%d\n", -- nlen, nstr, cursec->nlen, cursec->name, kdmrc, line ); -+ nlen, nstr, cursec->nlen, cursec->name, rcfile, line ); - continue; - keyok: - for (curent = cursec->entries; curent; curent = curent->next) - if (ce == curent->ent) { - LogError( "Multiple occurrences of key '%s' in section [%.*s]" - " of %s\n", -- ce->name, cursec->nlen, cursec->name, kdmrc ); -+ ce->name, cursec->nlen, cursec->name, rcfile ); - goto keyfnd; - } - if (!(curent = Malloc( sizeof(*curent) ))) - return; -+ curent->next = cursec->entries; -+ cursec->entries = curent; -+ keyfnd: - curent->ent = ce; - curent->line = line; - curent->val = st; - curent->vallen = en - st; -- curent->next = cursec->entries; -- cursec->entries = curent; -- keyfnd: - continue; - } - } - -+static void ReadConf() -+{ -+ static int confread = 0; -+ -+ if (confread) -+ return; -+ confread++; -+ -+ system("/opt/kde3/share/apps/kdm/read_sysconfig.sh"); -+ ReadConfFile("/var/adm/kdm/kdmrc.sysconfig"); -+ ReadConfFile(kdmrc); -+} -+ - static Entry * - FindGEnt( int id ) - { -Index: kdm/kfrontend/genkdmconf.c -=================================================================== ---- kdm/kfrontend/genkdmconf.c.orig -+++ kdm/kfrontend/genkdmconf.c -@@ -66,6 +66,7 @@ Foundation, Inc., 51 Franklin Street, Fi - #define stringify(x) __stringify(x) - - #define RCVERSTR stringify(RCVERMAJOR) "." stringify(RCVERMINOR) -+#define SUSERCVERSTR "2" - - static int old_scripts, no_old_scripts, old_confs, no_old, - no_backup, no_in_notice, use_destdir, mixed_scripts; -@@ -73,7 +74,7 @@ static const char *newdir = KDMCONF, *fa - *oldxdm, *oldkde; - - static int oldver; -- -+static int oldsusever; - - typedef struct StrList { - struct StrList *next; -@@ -462,6 +463,7 @@ wrconf( FILE *f ) - const char *cmt; - - putfqval( "General", "ConfigVersion", RCVERSTR ); -+ putfqval( "General", "SUSEConfigVersion", SUSERCVERSTR ); - for (cs = config; cs; cs = cs->next) { - fprintf( f, "%s[%s]\n", - cs->comment ? cs->comment : "\n", cs->name ); -@@ -1363,6 +1365,26 @@ upd_consolettys( Entry *ce, Section *cs - } - #endif - -+static void -+reset_sec_0_1( Entry *ce, Section *cs ATTR_UNUSED ) -+{ -+ if (oldsusever < 1 || !ce->written ) -+ { -+ ce->active = 0; -+ } -+ return; -+} -+ -+static void -+reset_sec_1_2( Entry *ce, Section *cs ATTR_UNUSED ) -+{ -+ if (oldsusever < 2 || !ce->written ) -+ { -+ ce->active = 0; -+ } -+ return; -+} -+ - #ifdef XDMCP - static void - cp_keyfile( Entry *ce, Section *cs ATTR_UNUSED ) -@@ -2228,7 +2250,7 @@ static int - mergeKdmRcNewer( const char *path ) - { - char *p; -- const char *cp, *sec, *key; -+ const char *cp, *sec, *key, *susever; - RSection *rootsect, *cs; - REntry *ce; - int i, j; -@@ -2291,8 +2313,12 @@ mergeKdmRcNewer( const char *path ) - } - - #ifdef XDMCP -- applydefs( kdmdefs_all, as(kdmdefs_all), path ); -+ /* applydefs( kdmdefs_all, as(kdmdefs_all), path ); */ - #endif -+ susever = getfqval( "General", "SUSEConfigVersion", "" ); -+ if (sscanf( susever, "%u", &oldsusever ) != 1) -+ oldsusever = 0; -+ - if (!*(cp = getfqval( "General", "ConfigVersion", "" ))) { /* < 3.1 */ - mod_usebg = 1; - if (is22conf( path )) { -Index: kdm/kfrontend/Makefile.am -=================================================================== ---- kdm/kfrontend/Makefile.am.orig -+++ kdm/kfrontend/Makefile.am -@@ -64,3 +64,7 @@ kdm_greet_COMPILE_FIRST = ../config.ci - kdm_config_COMPILE_FIRST = ../config.ci - genkdmconf_COMPILE_FIRST = ../config.ci - -+ -+appsdir = $(kde_datadir)/kdm -+apps_SCRIPTS = read_sysconfig.sh -+ diff --git a/opensuse/tdebase/kdm-use-rpmoptflags.diff b/opensuse/tdebase/kdm-use-rpmoptflags.diff deleted file mode 100644 index 85a03e02b..000000000 --- a/opensuse/tdebase/kdm-use-rpmoptflags.diff +++ /dev/null @@ -1,29 +0,0 @@ -Index: kdm/backend/Makefile.am -=================================================================== ---- kdm/backend/Makefile.am.orig -+++ kdm/backend/Makefile.am -@@ -1,11 +1,6 @@ - # forcibly remove thread-related defines & flags - AUTOMAKE_OPTIONS = foreign --CFLAGS = $(XDM_CFLAGS) -fno-strict-aliasing --CPPFLAGS = $(USER_INCLUDES) $(X_INCLUDES) $(KRB4_INCS) $(KRB5_INCS) -I.. -I../.. --LDFLAGS = $(USER_LDFLAGS) $(X_LDFLAGS) $(X_RPATH) $(KRB4_RPATH) $(KRB5_RPATH) --LDADD = $(LIB_X11) -lXau $(LIBXDMCP) $(PASSWDLIBS) $(LIBSHADOW) $(LIBGEN) \ -- $(LIB_LIBS) $(KRB4_LIBS) $(KRB5_LIBS) $(LIBSOCKET) $(LIBRESOLV) \ -- $(LIBUCB) $(LIBUTIL) $(LIBPOSIX4) -+AM_CPPFLAGS = $(USER_INCLUDES) $(X_INCLUDES) $(KRB4_INCS) $(KRB5_INCS) -I.. -I../.. - - bin_PROGRAMS = kdm - kdm_SOURCES = \ -@@ -39,6 +34,11 @@ kdm_SOURCES = \ - xdmauth.c \ - xdmcp.c - -+kdm_LDFLAGS = $(USER_LDFLAGS) $(X_LDFLAGS) $(X_RPATH) $(KRB4_RPATH) $(KRB5_RPATH) -+kdm_LDADD = $(LIB_X11) -lXau $(LIBXDMCP) $(PASSWDLIBS) \ -+ $(LIB_LIBS) $(KRB4_LIBS) $(KRB5_LIBS) $(LIBSOCKET) $(LIBRESOLV) \ -+ $(LIBUCB) $(LIBUTIL) $(LIBPOSIX4) -+ - EXTRA_DIST = printf.c - - noinst_HEADERS = dm.h dm_socket.h dm_error.h dm_auth.h greet.h diff --git a/opensuse/tdebase/kdm-wordbreak.diff b/opensuse/tdebase/kdm-wordbreak.diff deleted file mode 100644 index 9c50ecdc9..000000000 --- a/opensuse/tdebase/kdm-wordbreak.diff +++ /dev/null @@ -1,22 +0,0 @@ -Index: kdm/kfrontend/kfdialog.cpp -=================================================================== ---- kdm/kfrontend/kfdialog.cpp.orig -+++ kdm/kfrontend/kfdialog.cpp -@@ -28,6 +28,7 @@ Foundation, Inc., 51 Franklin Street, Fi - #include <klocale.h> - #include <kpushbutton.h> - #include <kstdguiitem.h> -+#include <kglobalsettings.h> - - #include <qlabel.h> - #include <qlayout.h> -@@ -137,6 +138,9 @@ KFMsgBox::KFMsgBox( QWidget *parent, QMe - QLabel *label1 = new QLabel( this ); - label1->setPixmap( QMessageBox::standardIcon( type ) ); - QLabel *label2 = new QLabel( text, this ); -+ QRect d = KGlobalSettings::desktopGeometry(this); -+ if ( label2->fontMetrics().size( 0, text).width() > d.width() * 3 / 5) -+ label2->setAlignment(Qt::WordBreak | Qt::AlignAuto ); - KPushButton *button = new KPushButton( KStdGuiItem::ok(), this ); - button->setDefault( true ); - button->setSizePolicy( QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ) ); diff --git a/opensuse/tdebase/kfontinst.diff b/opensuse/tdebase/kfontinst.diff deleted file mode 100644 index 51c5e59b6..000000000 --- a/opensuse/tdebase/kfontinst.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- kcontrol/kfontinst/kfontinst/Main.cpp -+++ kcontrol/kfontinst/kfontinst/Main.cpp 2004/01/27 08:43:25 -@@ -80,6 +80,7 @@ - QStringList::ConstIterator xftIt; - - for(xftIt=CGlobal::cfg().getUserFontsDirs().begin(); xftIt!=CGlobal::cfg().getUserFontsDirs().end(); ++xftIt) -+ CMisc::doCmd("/sbin/conf.d/SuSEconfig.fonts", "--module", "fonts"); - CMisc::doCmd(XFT_CACHE_CMD, CMisc::xDirSyntax(*xftIt)); - #else - CMisc::doCmd(XFT_CACHE_CMD, CMisc::xDirSyntax(ds)); diff --git a/opensuse/tdebase/khelpcenter-beagle.diff b/opensuse/tdebase/khelpcenter-beagle.diff deleted file mode 100644 index 6b4314e6a..000000000 --- a/opensuse/tdebase/khelpcenter-beagle.diff +++ /dev/null @@ -1,172 +0,0 @@ -Index: khelpcenter/searchhandlers/khc_beagle_search.pl -=================================================================== ---- /dev/null -+++ khelpcenter/searchhandlers/khc_beagle_search.pl -@@ -0,0 +1,88 @@ -+#!/usr/bin/perl -w -+# vim:sw=4:et -+ -+use warnings; -+use strict; -+use Getopt::Long; -+ -+sub isBeagleRunning() -+{ -+ open(IN, "-|") || exec "beagle-ping"; -+ while(<IN>) { -+ if (/^Daemon version:/) { -+ close(IN); -+ return 1; -+ } -+ } -+ close(IN); -+ return 0; -+} -+ -+sub formatHTML($$) -+{ -+ my ($query, $hits) = @_; -+ -+ print "<html>\n<body\n<ul>\n"; -+ -+ foreach my $hit(@$hits) { -+ print "<li>$hit</li>\n"; -+ } -+ print "</ul>\n</body>\n</html>\n"; -+} -+ -+sub beagleQuery($$$) -+{ -+ my ($words, $method, $maxnum) = @_; -+ -+ my @hits = (); -+ -+ open(IN, "-|") || exec "beagle-query", "--type", "DocbookEntry", "--type", "File", "--max-hits", $maxnum, @$words, "ext:docbook"; -+ while(<IN>) { -+ chop; -+ next if (/^Debug:/); -+ -+ my $uri = $_; -+ $uri = $1 if ($uri =~ /^file:\/\/(.*)$/); -+ -+ print "uri: $uri\n"; -+ my $helpLink = &makeHelpLink($uri); -+ -+ push(@hits, $helpLink) if (!grep { /^$helpLink$/ } @hits); -+ } -+ close(IN); -+ return @hits; -+} -+ -+sub makeHelpLink($) -+{ -+ # Try to figure out the name of the application from the path to its index.docbook file -+ -+ my ($path) = @_; -+ my @pathcomponents = split '/', $path; -+ -+ my $appName = $pathcomponents[-2]; -+ my $appName2 = $pathcomponents[-3]; -+ -+ if ($appName eq $appName2 or $appName2 eq "doc" -+ or (-d "/usr/share/locale/$appName2")) { -+ return "<a href=\"help:/$appName\">$appName</a>"; -+ } -+ return "<a href=\"help:/$appName2/$appName\">$appName ($appName2)</a>"; -+} -+ -+my $method = "and"; -+my $maxnum = 100; -+ -+GetOptions("method=s", \$method, "maxnum=i", \$maxnum); -+ -+my @hits = ("The Beagle daemon is not running, search is not available"); -+ -+my @words = @ARGV; -+ -+if (isBeagleRunning()) { -+ @hits = beagleQuery(\@words, $method, $maxnum); -+} -+ -+@hits = ("There are no search results") if ($#hits < 0); -+ -+formatHTML(\@words, \@hits); -Index: khelpcenter/searchhandlers/khc_beagle_index.pl -=================================================================== ---- /dev/null -+++ khelpcenter/searchhandlers/khc_beagle_index.pl -@@ -0,0 +1,49 @@ -+#!/usr/bin/perl -+# vim:sw=4:et -+ -+use warnings; -+ -+sub getKDEDocDir() -+{ -+ my $prefix = `kde-config --prefix`; -+ chomp $prefix; -+ -+ $prefix = "/opt/kde" if (not defined($prefix)); -+ return "$prefix/share/doc"; -+} -+ -+sub addRoot() -+{ -+ my $kdedocdir = &getKDEDocDir; -+ -+ open (IN, "-|") || exec "beagle-config", "indexing", "ListRoots"; -+ -+ my $kdedoc_found = 0; -+ while(<IN>) { -+ if (/^$kdedocdir/o) { -+ $kdedoc_found = 1; -+ last; -+ } -+ } -+ close(IN); -+ -+ if (not $kdedoc_found) { -+ `beagle-config indexing AddRoot $kdedocdir`; -+ `beagle-config indexing AddRoot $kdedocdir-bundle`; -+ } -+} -+ -+sub createExistsFile($$) -+{ -+ my ($idir, $ident) = @_; -+ -+ open(OUT, ">", "$idir/$idir"); -+ close(OUT); -+} -+ -+my $idir = $ARGV[0]; -+my $ident = $ARGV[1]; -+ -+if (addRoot) { -+ createExistsFile($idir, $ident); -+} -Index: khelpcenter/searchhandlers/docbook.desktop -=================================================================== ---- khelpcenter/searchhandlers/docbook.desktop.orig -+++ khelpcenter/searchhandlers/docbook.desktop -@@ -2,5 +2,5 @@ - - DocumentTypes=text/docbook - --SearchCommand=khc_htsearch.pl --docbook --indexdir=%d --config=%i --words=%w --method=%o --maxnum=%m --lang=en --IndexCommand=khc_docbookdig.pl --indexdir=%d --docpath=%p --identifier=%i -+SearchCommand=khc_beagle_search.pl --method=%o --maxnum=%m %w -+IndexCommand=khc_beagle_index.pl %d %i -Index: khelpcenter/searchhandlers/Makefile.am -=================================================================== ---- khelpcenter/searchhandlers/Makefile.am.orig -+++ khelpcenter/searchhandlers/Makefile.am -@@ -3,7 +3,7 @@ searchhandlers_DATA = htdig.desktop man. - searchhandlersdir = $(kde_datadir)/khelpcenter/searchhandlers - - kde_bin_SCRIPTS = khc_htdig.pl khc_htsearch.pl khc_mansearch.pl \ -- khc_docbookdig.pl -+ khc_docbookdig.pl khc_beagle_search.pl khc_beagle_index.pl - - htdigdata_DATA = htdig_long.html - diff --git a/opensuse/tdebase/khelpcenter-delayed-indexcheck.cpp b/opensuse/tdebase/khelpcenter-delayed-indexcheck.cpp deleted file mode 100644 index 37c3f195c..000000000 --- a/opensuse/tdebase/khelpcenter-delayed-indexcheck.cpp +++ /dev/null @@ -1,23 +0,0 @@ -Index: khelpcenter/navigator.cpp -=================================================================== ---- khelpcenter/navigator.cpp.orig -+++ khelpcenter/navigator.cpp -@@ -121,8 +121,6 @@ Navigator::Navigator( View *view, QWidge - - mTabWidget = new QTabWidget( this ); - topLayout->addWidget( mTabWidget ); -- connect( mTabWidget, SIGNAL( currentChanged( QWidget * ) ), -- SLOT( slotTabChanged( QWidget * ) ) ); - - setupContentsTab(); - setupGlossaryTab(); -@@ -136,6 +134,9 @@ Navigator::Navigator( View *view, QWidge - mSearchWidget->updateScopeList(); - mSearchWidget->readConfig( KGlobal::config() ); - } -+ -+ connect( mTabWidget, SIGNAL( currentChanged( QWidget * ) ), -+ SLOT( slotTabChanged( QWidget * ) ) ); - } - - Navigator::~Navigator() diff --git a/opensuse/tdebase/khelpcenter-gnome-support-legacy.patch b/opensuse/tdebase/khelpcenter-gnome-support-legacy.patch deleted file mode 100644 index fb9a11ee4..000000000 --- a/opensuse/tdebase/khelpcenter-gnome-support-legacy.patch +++ /dev/null @@ -1,327 +0,0 @@ -Index: khelpcenter/table-of-contents.xslt -================================================================================ ---- khelpcenter/docentry.cpp -+++ khelpcenter/docentry.cpp -@@ -1,5 +1,6 @@ - #include <qregexp.h> - #include <qfileinfo.h> -+#include <stdlib.h> - - #include <kdebug.h> - #include <kdesktopfile.h> -@@ -206,6 +207,37 @@ - { - KDesktopFile file( fileName ); - -+ static QString desktop; -+ if (desktop.isNull()) { -+ QString win_man = getenv("WINDOWMANAGER"); -+ if (win_man.contains ("gnome", FALSE)) -+ desktop = "GNOME"; -+ else if (win_man.contains ("kde", FALSE)) -+ desktop = "KDE"; -+ else -+ desktop = ""; -+ kdDebug() << "DocEntry::desktop = " << desktop << endl; -+ }; -+ -+ QString onlyShowIn = file.readEntry ("OnlyShowIn"); -+ -+ kdDebug() << "DocEntry::readFromFile(): " << fileName << " onlyShowIn = " << onlyShowIn << endl; -+ -+ if ( !onlyShowIn.isNull() ) { -+ if (desktop.isEmpty()) -+ return false; -+ QStringList list = QStringList::split (";", onlyShowIn); -+ if ( ! list.contains (desktop) ) -+ return false; -+ } -+ -+ QString notShowIn = file.readEntry ("NotShowIn"); -+ if ( !notShowIn.isNull() ) { -+ QStringList list = QStringList::split (";", notShowIn); -+ if ( list.contains (desktop) ) -+ return false; -+ } -+ - mName = file.readName(); - mSearch = file.readEntry( "X-DOC-Search" ); - mIcon = file.readIcon(); ---- khelpcenter/navigator.cpp -+++ khelpcenter/navigator.cpp -@@ -22,6 +22,7 @@ - #include <sys/types.h> - #include <sys/stat.h> - #include <unistd.h> -+#include <stdlib.h> - - #include <qdir.h> - #include <qfile.h> -@@ -275,6 +276,38 @@ - const QString &file ) - { - KDesktopFile desktopFile( file ); -+ -+ static QString desktop; -+ if (desktop.isNull()) { -+ QString win_man = getenv("WINDOWMANAGER"); -+ if (win_man.contains ("gnome", FALSE)) -+ desktop = "GNOME"; -+ else if (win_man.contains ("kde", FALSE)) -+ desktop = "KDE"; -+ else -+ desktop = ""; -+ kdDebug() << "Navigator::desktop = " << desktop << endl; -+ }; -+ -+ QString onlyShowIn = desktopFile.readEntry ("OnlyShowIn"); -+ -+ kdDebug() << "Navigator::createItemFromDesktopFile(): " << file << " onlyShowIn = " << onlyShowIn << endl; -+ -+ if ( !onlyShowIn.isNull() ) { -+ if (desktop.isEmpty()) -+ return; -+ QStringList list = QStringList::split (";", onlyShowIn); -+ if ( ! list.contains (desktop) ) -+ return; -+ } -+ -+ QString notShowIn = desktopFile.readEntry ("NotShowIn"); -+ if ( !notShowIn.isNull() ) { -+ QStringList list = QStringList::split (";", notShowIn); -+ if ( list.contains (desktop) ) -+ return; -+ } -+ - QString docPath = desktopFile.readDocPath(); - if ( !docPath.isNull() ) { - // First parameter is ignored if second is an absolute path -@@ -317,6 +350,9 @@ - { - alternativeURL.setQuery("anchor="+url.ref()); - alternativeURL.setRef(QString::null); -+ } else if (url.url().endsWith("/index.html")) -+ { -+ alternativeURL = KURL (url.url().left (url.url().length() - strlen ("/index.html"))); - } - - // If the navigator already has the given URL selected, do nothing. -@@ -401,15 +437,43 @@ - TOC *tocTree = item->createTOC(); - kdDebug( 1400 ) << "slotItemSelected(): Trying to build TOC for " - << item->entry()->name() << endl; -- tocTree->setApplication( url.directory() ); -+ if (url.directory() != "/") -+ tocTree->setApplication( url.directory() ); -+ else -+ tocTree->setApplication( url.path() ); - QString doc = View::langLookup( url.path() ); - // Enforce the original .docbook version, in case langLookup returns a - // cached version - if ( !doc.isNull() ) { -- int pos = doc.find( ".html" ); -- if ( pos >= 0 ) { -- doc.replace( pos, 5, ".docbook" ); -- } -+ if (doc.endsWith( ".html" )) { -+ doc = doc.left (doc.length() - 5) + ".docbook"; -+ } -+ -+ QFileInfo di (doc); -+ if (!di.isFile()) { -+ -+ int last_slash = doc.findRev ('/'); -+ if (last_slash >= 1) { -+ -+ QString filename = doc.right(doc.length() - last_slash - 1); -+ if (filename == "index.html" || filename == "") { -+ -+ int slash2 = doc.findRev('/', last_slash -1); -+ if (slash2 != -1 && slash2 != 0) { -+ -+ int slash3 = doc.findRev('/', slash2 - 1); -+ if (slash3 != -1) { -+ QString xml_file = doc.left(last_slash) + "/" + doc.mid(slash3 + 1, slash2 - (slash3 + 1)) + ".xml"; -+ kdDebug() << "xml_file " << xml_file << endl; -+ QFileInfo fi(xml_file); -+ if (fi.exists()) -+ doc = xml_file; -+ -+ } -+ } -+ } -+ } -+ } - kdDebug( 1400 ) << "slotItemSelected(): doc = " << doc << endl; - - tocTree->build( doc ); ---- khelpcenter/navigatorappitem.cpp -+++ khelpcenter/navigatorappitem.cpp -@@ -21,6 +21,8 @@ - - #include "docentry.h" - -+#include <stdlib.h> -+ - #include <kdebug.h> - #include <kservicegroup.h> - -@@ -134,11 +136,42 @@ - - QString NavigatorAppItem::documentationURL( KService *s ) - { -+ static QString desktop; -+ if (desktop.isNull()) { -+ QString win_man = getenv("WINDOWMANAGER"); -+ if (win_man.contains ("gnome", FALSE)) -+ desktop = "GNOME"; -+ else if (win_man.contains ("kde", FALSE)) -+ desktop = "KDE"; -+ else -+ desktop = ""; -+ kdDebug() << "NavigatorAppItem::desktop = " << desktop << endl; -+ }; -+ -+ QString onlyShowIn = s->property("OnlyShowIn", QVariant::String).toString(); -+ -+ kdDebug() << "NavigatorAppItem::onlyShowIn = " << onlyShowIn << endl; -+ -+ if ( !onlyShowIn.isNull() ) { -+ if (desktop.isEmpty()) -+ return QString::null; -+ QStringList list = QStringList::split (";", onlyShowIn); -+ if ( ! list.contains (desktop) ) -+ return QString::null; -+ } -+ -+ QString notShowIn = s->property("NotShowIn", QVariant::String).toString(); -+ if ( !notShowIn.isNull() ) { -+ QStringList list = QStringList::split (";", notShowIn); -+ if ( list.contains (desktop) ) -+ return QString::null; -+ } -+ - QString docPath = s->property( "DocPath" ).toString(); - if ( docPath.isEmpty() ) - return QString::null; - -- if ( docPath.startsWith( "file:") || docPath.startsWith( "http:" ) ) -+ if ( docPath.startsWith( "file:") || docPath.startsWith( "http:" ) || docPath.startsWith( "ghelp:" )) - return docPath; - - return QString( "help:/" ) + docPath; ---- khelpcenter/table-of-contents.xslt -+++ khelpcenter/table-of-contents.xslt -@@ -8,6 +8,12 @@ - </table-of-contents> - </xsl:template> - -+<xsl:template match="article"> -+<table-of-contents> -+<xsl:apply-templates select="sect1"/> -+</table-of-contents> -+</xsl:template> -+ - <xsl:template match="chapter"> - <chapter> - <title><xsl:value-of select="title"/></title> -@@ -20,7 +26,15 @@ - <section> - <title><xsl:value-of select="title"/></title> - <anchor><xsl:value-of select="@id"/></anchor> -+<xsl:apply-templates select="sect2"/> - </section> - </xsl:template> - -+<xsl:template match="sect2"> -+<subsection> -+<title><xsl:value-of select="title"/></title> -+<anchor><xsl:value-of select="@id"/></anchor> -+</subsection> -+</xsl:template> -+ - </xsl:stylesheet> ---- khelpcenter/view.cpp -+++ khelpcenter/view.cpp -@@ -146,21 +146,51 @@ - // assemble the local search paths - const QStringList localDoc = KGlobal::dirs()->resourceDirs("html"); - -+ kdDebug() << "Looking up help for: " << fname << endl; -+ -+ QString path; -+ QString file_name; -+ int slash = fname.findRev ('/'); -+ if (slash == -1 || slash == 0) { -+ path = fname; -+ file_name = "/"; -+ } else { -+ path = fname.left (slash); -+ file_name = fname.right (fname.length() - slash); -+ } -+ -+ QStringList langs = KGlobal::locale()->languageList(); -+ QStringList::ConstIterator lang; -+ for (lang = langs.begin(); lang != langs.end(); ++lang) -+ if (*lang == "en") -+ search.append(QString("/opt/gnome/share/gnome/help/%1/C%2").arg(path).arg(file_name)); -+ else -+ search.append(QString("/opt/gnome/share/gnome/help/%1/%2%3").arg(path).arg(*lang).arg(file_name)); -+ -+ langs.append( "en" ); -+ langs.remove( "C" ); -+ -+ // this is kind of compat hack as we install our docs in en/ but the -+ // default language is en_US -+ for (QStringList::Iterator it = langs.begin(); it != langs.end(); ++it) -+ if ( *it == "en_US" ) -+ *it = "en"; -+ - // look up the different languages -- for (int id=localDoc.count()-1; id >= 0; --id) -+ int ldCount = localDoc.count(); -+ for (int id=0; id < ldCount; id++) - { -- QStringList langs = KGlobal::locale()->languageList(); -- langs.append( "en" ); -- langs.remove( "C" ); - QStringList::ConstIterator lang; - for (lang = langs.begin(); lang != langs.end(); ++lang) -- search.append(QString("%1%2/%3").arg(localDoc[id]).arg(*lang).arg(fname)); -+ search.append(QString("%1%2/%3").arg(localDoc[id]).arg(*lang).arg(path + file_name)); - } - - // try to locate the file - QStringList::Iterator it; - for (it = search.begin(); it != search.end(); ++it) - { -+ kdDebug() << "Looking for help in: " << *it << endl; -+ - QFileInfo info(*it); - if (info.exists() && info.isFile() && info.isReadable()) - return *it; -@@ -168,7 +198,7 @@ - // Fall back to the index.docbook for this language if we couldn't find its - // specific docbook file. If we are not looking up docbook (images, - // css etc) then look in other languages first. -- if ( ( *it ).endsWith( "docbook" ) ) -+ if ( ( *it ).endsWith( "docbook" ) || ( *it).endsWith( ".xml") ) - { - QString file = (*it).left((*it).findRev('/')) + "/index.docbook"; - info.setFile(file); -@@ -176,9 +206,15 @@ - { - return *it; - } -+ -+ file = (*it).left((*it).findRev('/')) + "/" + path + ".xml"; -+ info.setFile(file); -+ if (info.exists() && info.isFile() && info.isReadable()) -+ return *it; - } - } - -+ - return QString::null; - } - diff --git a/opensuse/tdebase/khelpcenter-gnome-support.patch b/opensuse/tdebase/khelpcenter-gnome-support.patch deleted file mode 100644 index d98ae01dc..000000000 --- a/opensuse/tdebase/khelpcenter-gnome-support.patch +++ /dev/null @@ -1,335 +0,0 @@ -Index: khelpcenter/docentry.cpp -=================================================================== ---- khelpcenter/docentry.cpp.orig -+++ khelpcenter/docentry.cpp -@@ -1,5 +1,6 @@ - #include <qregexp.h> - #include <qfileinfo.h> -+#include <stdlib.h> - - #include <kdebug.h> - #include <kdesktopfile.h> -@@ -206,6 +207,37 @@ bool DocEntry::readFromFile( const QStri - { - KDesktopFile file( fileName ); - -+ static QString desktop; -+ if (desktop.isNull()) { -+ QString win_man = getenv("WINDOWMANAGER"); -+ if (win_man.contains ("gnome", FALSE)) -+ desktop = "GNOME"; -+ else if (win_man.contains ("kde", FALSE)) -+ desktop = "KDE"; -+ else -+ desktop = ""; -+ kdDebug() << "DocEntry::desktop = " << desktop << endl; -+ }; -+ -+ QString onlyShowIn = file.readEntry ("OnlyShowIn"); -+ -+ kdDebug() << "DocEntry::readFromFile(): " << fileName << " onlyShowIn = " << onlyShowIn << endl; -+ -+ if ( !onlyShowIn.isNull() ) { -+ if (desktop.isEmpty()) -+ return false; -+ QStringList list = QStringList::split (";", onlyShowIn); -+ if ( ! list.contains (desktop) ) -+ return false; -+ } -+ -+ QString notShowIn = file.readEntry ("NotShowIn"); -+ if ( !notShowIn.isNull() ) { -+ QStringList list = QStringList::split (";", notShowIn); -+ if ( list.contains (desktop) ) -+ return false; -+ } -+ - mName = file.readName(); - mSearch = file.readEntry( "X-DOC-Search" ); - mIcon = file.readIcon(); -Index: khelpcenter/navigator.cpp -=================================================================== ---- khelpcenter/navigator.cpp.orig -+++ khelpcenter/navigator.cpp -@@ -22,6 +22,7 @@ - #include <sys/types.h> - #include <sys/stat.h> - #include <unistd.h> -+#include <stdlib.h> - - #include <qdir.h> - #include <qfile.h> -@@ -275,6 +276,38 @@ void Navigator::createItemFromDesktopFil - const QString &file ) - { - KDesktopFile desktopFile( file ); -+ -+ static QString desktop; -+ if (desktop.isNull()) { -+ QString win_man = getenv("WINDOWMANAGER"); -+ if (win_man.contains ("gnome", FALSE)) -+ desktop = "GNOME"; -+ else if (win_man.contains ("kde", FALSE)) -+ desktop = "KDE"; -+ else -+ desktop = ""; -+ kdDebug() << "Navigator::desktop = " << desktop << endl; -+ }; -+ -+ QString onlyShowIn = desktopFile.readEntry ("OnlyShowIn"); -+ -+ kdDebug() << "Navigator::createItemFromDesktopFile(): " << file << " onlyShowIn = " << onlyShowIn << endl; -+ -+ if ( !onlyShowIn.isNull() ) { -+ if (desktop.isEmpty()) -+ return; -+ QStringList list = QStringList::split (";", onlyShowIn); -+ if ( ! list.contains (desktop) ) -+ return; -+ } -+ -+ QString notShowIn = desktopFile.readEntry ("NotShowIn"); -+ if ( !notShowIn.isNull() ) { -+ QStringList list = QStringList::split (";", notShowIn); -+ if ( list.contains (desktop) ) -+ return; -+ } -+ - QString docPath = desktopFile.readDocPath(); - if ( !docPath.isNull() ) { - // First parameter is ignored if second is an absolute path -@@ -317,6 +350,9 @@ void Navigator::selectItem( const KURL & - { - alternativeURL.setQuery("anchor="+url.ref()); - alternativeURL.setRef(QString::null); -+ } else if (url.url().endsWith("/index.html")) -+ { -+ alternativeURL = KURL (url.url().left (url.url().length() - strlen ("/index.html"))); - } - - // If the navigator already has the given URL selected, do nothing. -@@ -401,15 +437,43 @@ void Navigator::slotItemSelected( QListV - TOC *tocTree = item->createTOC(); - kdDebug( 1400 ) << "slotItemSelected(): Trying to build TOC for " - << item->entry()->name() << endl; -- tocTree->setApplication( url.directory() ); -+ if (url.directory() != "/") -+ tocTree->setApplication( url.directory() ); -+ else -+ tocTree->setApplication( url.path() ); - QString doc = View::langLookup( url.path() ); - // Enforce the original .docbook version, in case langLookup returns a - // cached version - if ( !doc.isNull() ) { -- int pos = doc.find( ".html" ); -- if ( pos >= 0 ) { -- doc.replace( pos, 5, ".docbook" ); -- } -+ if (doc.endsWith( ".html" )) { -+ doc = doc.left (doc.length() - 5) + ".docbook"; -+ } -+ -+ QFileInfo di (doc); -+ if (!di.isFile()) { -+ -+ int last_slash = doc.findRev ('/'); -+ if (last_slash >= 1) { -+ -+ QString filename = doc.right(doc.length() - last_slash - 1); -+ if (filename == "index.html" || filename == "") { -+ -+ int slash2 = doc.findRev('/', last_slash -1); -+ if (slash2 != -1 && slash2 != 0) { -+ -+ int slash3 = doc.findRev('/', slash2 - 1); -+ if (slash3 != -1) { -+ QString xml_file = doc.left(last_slash) + "/" + doc.mid(slash3 + 1, slash2 - (slash3 + 1)) + ".xml"; -+ kdDebug() << "xml_file " << xml_file << endl; -+ QFileInfo fi(xml_file); -+ if (fi.exists()) -+ doc = xml_file; -+ -+ } -+ } -+ } -+ } -+ } - kdDebug( 1400 ) << "slotItemSelected(): doc = " << doc << endl; - - tocTree->build( doc ); -Index: khelpcenter/navigatorappitem.cpp -=================================================================== ---- khelpcenter/navigatorappitem.cpp.orig -+++ khelpcenter/navigatorappitem.cpp -@@ -21,6 +21,8 @@ - - #include "docentry.h" - -+#include <stdlib.h> -+ - #include <kdebug.h> - #include <kservicegroup.h> - -@@ -134,11 +136,42 @@ void NavigatorAppItem::populate( bool re - - QString NavigatorAppItem::documentationURL( KService *s ) - { -+ static QString desktop; -+ if (desktop.isNull()) { -+ QString win_man = getenv("WINDOWMANAGER"); -+ if (win_man.contains ("gnome", FALSE)) -+ desktop = "GNOME"; -+ else if (win_man.contains ("kde", FALSE)) -+ desktop = "KDE"; -+ else -+ desktop = ""; -+ kdDebug() << "NavigatorAppItem::desktop = " << desktop << endl; -+ }; -+ -+ QString onlyShowIn = s->property("OnlyShowIn", QVariant::String).toString(); -+ -+ kdDebug() << "NavigatorAppItem::onlyShowIn = " << onlyShowIn << endl; -+ -+ if ( !onlyShowIn.isNull() ) { -+ if (desktop.isEmpty()) -+ return QString::null; -+ QStringList list = QStringList::split (";", onlyShowIn); -+ if ( ! list.contains (desktop) ) -+ return QString::null; -+ } -+ -+ QString notShowIn = s->property("NotShowIn", QVariant::String).toString(); -+ if ( !notShowIn.isNull() ) { -+ QStringList list = QStringList::split (";", notShowIn); -+ if ( list.contains (desktop) ) -+ return QString::null; -+ } -+ - QString docPath = s->property( "DocPath" ).toString(); - if ( docPath.isEmpty() ) - return QString::null; - -- if ( docPath.startsWith( "file:") || docPath.startsWith( "http:" ) ) -+ if ( docPath.startsWith( "file:") || docPath.startsWith( "http:" ) || docPath.startsWith( "ghelp:" )) - return docPath; - - return QString( "help:/" ) + docPath; -Index: khelpcenter/table-of-contents.xslt -=================================================================== ---- khelpcenter/table-of-contents.xslt.orig -+++ khelpcenter/table-of-contents.xslt -@@ -8,6 +8,12 @@ - </table-of-contents> - </xsl:template> - -+<xsl:template match="article"> -+<table-of-contents> -+<xsl:apply-templates select="sect1"/> -+</table-of-contents> -+</xsl:template> -+ - <xsl:template match="chapter"> - <chapter> - <title><xsl:value-of select="title"/></title> -@@ -20,7 +26,15 @@ - <section> - <title><xsl:value-of select="title"/></title> - <anchor><xsl:value-of select="@id"/></anchor> -+<xsl:apply-templates select="sect2"/> - </section> - </xsl:template> - -+<xsl:template match="sect2"> -+<subsection> -+<title><xsl:value-of select="title"/></title> -+<anchor><xsl:value-of select="@id"/></anchor> -+</subsection> -+</xsl:template> -+ - </xsl:stylesheet> -Index: khelpcenter/view.cpp -=================================================================== ---- khelpcenter/view.cpp.orig -+++ khelpcenter/view.cpp -@@ -150,21 +150,51 @@ QString View::langLookup( const QString - // assemble the local search paths - const QStringList localDoc = KGlobal::dirs()->resourceDirs("html"); - -+ kdDebug() << "Looking up help for: " << fname << endl; -+ -+ QString path; -+ QString file_name; -+ int slash = fname.findRev ('/'); -+ if (slash == -1 || slash == 0) { -+ path = fname; -+ file_name = "/"; -+ } else { -+ path = fname.left (slash); -+ file_name = fname.right (fname.length() - slash); -+ } -+ -+ QStringList langs = KGlobal::locale()->languageList(); -+ QStringList::ConstIterator lang; -+ for (lang = langs.begin(); lang != langs.end(); ++lang) -+ if (*lang == "en") -+ search.append(QString("/usr/share/gnome/help/%1/C%2").arg(path).arg(file_name)); -+ else -+ search.append(QString("/usr/share/gnome/help/%1/%2%3").arg(path).arg(*lang).arg(file_name)); -+ -+ langs.append( "en" ); -+ langs.remove( "C" ); -+ -+ // this is kind of compat hack as we install our docs in en/ but the -+ // default language is en_US -+ for (QStringList::Iterator it = langs.begin(); it != langs.end(); ++it) -+ if ( *it == "en_US" ) -+ *it = "en"; -+ - // look up the different languages -- for (int id=localDoc.count()-1; id >= 0; --id) -+ int ldCount = localDoc.count(); -+ for (int id=0; id < ldCount; id++) - { -- QStringList langs = KGlobal::locale()->languageList(); -- langs.append( "en" ); -- langs.remove( "C" ); - QStringList::ConstIterator lang; - for (lang = langs.begin(); lang != langs.end(); ++lang) -- search.append(QString("%1%2/%3").arg(localDoc[id]).arg(*lang).arg(fname)); -+ search.append(QString("%1%2/%3").arg(localDoc[id]).arg(*lang).arg(path + file_name)); - } - - // try to locate the file - QStringList::Iterator it; - for (it = search.begin(); it != search.end(); ++it) - { -+ kdDebug() << "Looking for help in: " << *it << endl; -+ - QFileInfo info(*it); - if (info.exists() && info.isFile() && info.isReadable()) - return *it; -@@ -172,7 +202,7 @@ QString View::langLookup( const QString - // Fall back to the index.docbook for this language if we couldn't find its - // specific docbook file. If we are not looking up docbook (images, - // css etc) then look in other languages first. -- if ( ( *it ).endsWith( "docbook" ) ) -+ if ( ( *it ).endsWith( "docbook" ) || ( *it).endsWith( ".xml") ) - { - QString file = (*it).left((*it).findRev('/')) + "/index.docbook"; - info.setFile(file); -@@ -180,9 +210,15 @@ QString View::langLookup( const QString - { - return *it; - } -+ -+ file = (*it).left((*it).findRev('/')) + "/" + path + ".xml"; -+ info.setFile(file); -+ if (info.exists() && info.isFile() && info.isReadable()) -+ return *it; - } - } - -+ - return QString::null; - } - diff --git a/opensuse/tdebase/khelpcenter-localindices.patch b/opensuse/tdebase/khelpcenter-localindices.patch deleted file mode 100644 index a2b41a78a..000000000 --- a/opensuse/tdebase/khelpcenter-localindices.patch +++ /dev/null @@ -1,41 +0,0 @@ -Index: khelpcenter/kcmhelpcenter.cpp -=================================================================== ---- khelpcenter/kcmhelpcenter.cpp.orig -+++ khelpcenter/kcmhelpcenter.cpp -@@ -321,6 +321,7 @@ bool KCMHelpCenter::save() - - void KCMHelpCenter::load() - { -+ findWriteableIndexDir(); - mIndexDirLabel->setText( Prefs::indexDirectory() ); - - mListView->clear(); -@@ -675,6 +676,12 @@ void KCMHelpCenter::checkSelection() - enableButtonOK( count != 0 ); - } - -+void KCMHelpCenter::findWriteableIndexDir() -+{ -+ QFileInfo currentDir( Prefs::indexDirectory() ); -+ if ( !currentDir.isWritable() ) -+ Prefs::setIndexDirectory( KGlobal::dirs()->saveLocation("data", "khelpcenter/index/") ); -+} - #include "kcmhelpcenter.moc" - - // vim:ts=2:sw=2:et -Index: khelpcenter/kcmhelpcenter.h -=================================================================== ---- khelpcenter/kcmhelpcenter.h.orig -+++ khelpcenter/kcmhelpcenter.h -@@ -146,6 +146,11 @@ class KCMHelpCenter : public KDialogBase - - void advanceProgress(); - -+ /** -+ * Find a user-writeable location for the indices, if the current location -+ * is not. -+ */ -+ void findWriteableIndexDir(); - private: - KHC::SearchEngine *mEngine; - diff --git a/opensuse/tdebase/khelpcenter-use-suseconfig-indexer.diff b/opensuse/tdebase/khelpcenter-use-suseconfig-indexer.diff deleted file mode 100644 index e63e26ff7..000000000 --- a/opensuse/tdebase/khelpcenter-use-suseconfig-indexer.diff +++ /dev/null @@ -1,25 +0,0 @@ -Index: khelpcenter/navigator.cpp -=================================================================== ---- khelpcenter/navigator.cpp.orig -+++ khelpcenter/navigator.cpp -@@ -654,10 +654,16 @@ void Navigator::hideSearch() - - bool Navigator::checkSearchIndex() - { -- KConfig *cfg = KGlobal::config(); -- cfg->setGroup( "Search" ); -- if ( cfg->readBoolEntry( "IndexExists", false ) ) return true; -- -+ // just check that the index dir contains something -+ QDir indexDir( Prefs::indexDirectory() ); -+ QStringList dirEntries = indexDir.entryList(); -+ QStringList::Iterator it = dirEntries.begin(); -+ const QStringList::Iterator end = dirEntries.end(); -+ for ( ; it != end; ++it ) -+ { -+ if ( *it != "." && *it != ".." ) -+ return true; -+ } - if ( mIndexDialog && mIndexDialog->isShown() ) return true; - - QString text = i18n( "A search index does not yet exist. Do you want " diff --git a/opensuse/tdebase/khelpcenter-use-susehelp.diff b/opensuse/tdebase/khelpcenter-use-susehelp.diff deleted file mode 100644 index 6c130a6d1..000000000 --- a/opensuse/tdebase/khelpcenter-use-susehelp.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: kdebase-3.5.10/khelpcenter/khelpcenter.desktop -=================================================================== ---- kdebase-3.5.10.orig/khelpcenter/khelpcenter.desktop -+++ kdebase-3.5.10/khelpcenter/khelpcenter.desktop -@@ -127,7 +127,7 @@ Icon=khelpcenter - DocPath=khelpcenter/index.html - Type=Service - Terminal=false --Exec=khelpcenter %u -+Exec=susehelp %u - SwallowExec= - SwallowTitle= - X-KDE-StartupNotify=true diff --git a/opensuse/tdebase/khotkeys-multimedia-action.diff b/opensuse/tdebase/khotkeys-multimedia-action.diff deleted file mode 100644 index 050e31d60..000000000 --- a/opensuse/tdebase/khotkeys-multimedia-action.diff +++ /dev/null @@ -1,345 +0,0 @@ -Index: khotkeys/data/multimedia_keys.khotkeys -=================================================================== ---- /dev/null -+++ khotkeys/data/multimedia_keys.khotkeys -@@ -0,0 +1,311 @@ -+[Data] -+DataCount=1 -+ -+[Data_1] -+Comment=This group contains actions that are set up by default.\n -+DataCount=8 -+Enabled=true -+Name=Preset Actions -+SystemGroup=0 -+Type=ACTION_DATA_GROUP -+AllowMerge=true -+ -+[Data_1Conditions] -+Comment= -+ConditionsCount=0 -+ -+[Data_1_1] -+Comment=Opens the My Computer window when the multimedia My Computer key is pressed.\n -+Enabled=true -+Name=My Computer -+Type=COMMAND_URL_SHORTCUT_ACTION_DATA -+ -+[Data_1_1Actions] -+ActionsCount=1 -+ -+[Data_1_1Actions0] -+CommandURL=sysinfo:/ -+Type=COMMAND_URL -+ -+[Data_1_1Conditions] -+Comment= -+ConditionsCount=0 -+ -+[Data_1_1Triggers] -+Comment=Simple_action -+TriggersCount=1 -+ -+[Data_1_1Triggers0] -+Key=XF86MyComputer -+Type=SHORTCUT -+ -+[Data_1_2] -+Comment=Launch or activate Amarok when the multimedia Media key is pressed.\n -+Enabled=true -+Name=Media -+Type=COMMAND_URL_SHORTCUT_ACTION_DATA -+ -+[Data_1_2Actions] -+ActionsCount=1 -+ -+[Data_1_2Actions0] -+CommandURL=amarok -+Type=COMMAND_URL -+ -+[Data_1_2Conditions] -+Comment= -+ConditionsCount=0 -+ -+[Data_1_2Triggers] -+Comment=Simple_action -+TriggersCount=1 -+ -+[Data_1_2Triggers0] -+Key=XF86AudioMedia -+Type=SHORTCUT -+ -+[Data_1_3] -+Comment=When the multimedia Calculator key is pressed, KCalc is either launched or activated if it is already running.\n -+DataCount=2 -+Enabled=true -+Name=Calculator -+SystemGroup=0 -+Type=ACTION_DATA_GROUP -+ -+[Data_1_3Conditions] -+Comment= -+ConditionsCount=0 -+ -+[Data_1_3_1] -+Comment=Runs KCalc if it is not already running.\n -+Enabled=true -+Name=Run KCalc -+Type=GENERIC_ACTION_DATA -+ -+[Data_1_3_1Actions] -+ActionsCount=1 -+ -+[Data_1_3_1Actions0] -+CommandURL=kcalc -+Type=COMMAND_URL -+ -+[Data_1_3_1Conditions] -+Comment= -+ConditionsCount=1 -+ -+[Data_1_3_1Conditions0] -+ConditionsCount=1 -+Type=NOT -+ -+[Data_1_3_1Conditions00] -+Type=EXISTING_WINDOW -+ -+[Data_1_3_1Conditions00Window] -+Comment=kcalc -+WindowsCount=1 -+ -+[Data_1_3_1Conditions00Window0] -+Class=kcalc Kcalc -+ClassType=2 -+Comment=kcalc -+Role=kcalc-mainwindow#1 -+RoleType=0 -+Title=KCalc -+TitleType=0 -+Type=SIMPLE -+WindowTypes=1 -+ -+[Data_1_3_1Triggers] -+Comment= -+TriggersCount=1 -+ -+[Data_1_3_1Triggers0] -+Key=XF86Calculator -+Type=SHORTCUT -+ -+[Data_1_3_2] -+Comment=Activates KCalc window if it is already running.\n -+Enabled=true -+Name=Activate KCalc -+Type=GENERIC_ACTION_DATA -+ -+[Data_1_3_2Actions] -+ActionsCount=1 -+ -+[Data_1_3_2Actions0] -+Type=ACTIVATE_WINDOW -+ -+[Data_1_3_2Actions0Window] -+Comment=kcalc -+WindowsCount=1 -+ -+[Data_1_3_2Actions0Window0] -+Class=kcalc Kcalc -+ClassType=2 -+Comment=kcalc -+Role=kcalc-mainwindow#1 -+RoleType=0 -+Title=KCalc -+TitleType=0 -+Type=SIMPLE -+WindowTypes=1 -+ -+[Data_1_3_2Conditions] -+Comment= -+ConditionsCount=1 -+ -+[Data_1_3_2Conditions0] -+Type=EXISTING_WINDOW -+ -+[Data_1_3_2Conditions0Window] -+Comment=kcalc -+WindowsCount=1 -+ -+[Data_1_3_2Conditions0Window0] -+Class=kcalc Kcalc -+ClassType=2 -+Comment=kcalc -+Role=kcalc-mainwindow#1 -+RoleType=0 -+Title=KCalc -+TitleType=0 -+Type=SIMPLE -+WindowTypes=1 -+ -+[Data_1_3_2Triggers] -+Comment= -+TriggersCount=1 -+ -+[Data_1_3_2Triggers0] -+Key=XF86Calculator -+Type=SHORTCUT -+ -+[Data_1_4] -+Comment=Launches the default terminal application when the multimedia Terminal key is pressed.\n -+Enabled=true -+Name=Terminal -+Type=COMMAND_URL_SHORTCUT_ACTION_DATA -+ -+[Data_1_4Actions] -+ActionsCount=1 -+ -+[Data_1_4Actions0] -+CommandURL=KHOTKEYS_TERMINAL -+Type=COMMAND_URL -+ -+[Data_1_4Conditions] -+Comment= -+ConditionsCount=0 -+ -+[Data_1_4Triggers] -+Comment=Simple_action -+TriggersCount=1 -+ -+[Data_1_4Triggers0] -+Key=XF86Terminal -+Type=SHORTCUT -+ -+[Data_1_5] -+Comment=Opens the default browser when the multimedia WWW key is pressed.\n -+Enabled=true -+Name=Browser (HomePage) -+Type=COMMAND_URL_SHORTCUT_ACTION_DATA -+ -+[Data_1_5Actions] -+ActionsCount=1 -+ -+[Data_1_5Actions0] -+CommandURL=KHOTKEYS_BROWSER -+Type=COMMAND_URL -+ -+[Data_1_5Conditions] -+Comment= -+ConditionsCount=0 -+ -+[Data_1_5Triggers] -+Comment=Simple_action -+TriggersCount=1 -+ -+[Data_1_5Triggers0] -+Key=XF86WWW -+Type=SHORTCUT -+ -+[Data_1_6] -+Comment=Ejecting when the multimedia Eject key is pressed.\n -+Enabled=true -+Name=Eject -+Type=COMMAND_URL_SHORTCUT_ACTION_DATA -+ -+[Data_1_6Actions] -+ActionsCount=1 -+ -+[Data_1_6Actions0] -+CommandURL=kdeeject "" -+Type=COMMAND_URL -+ -+[Data_1_6Conditions] -+Comment= -+ConditionsCount=0 -+ -+[Data_1_6Triggers] -+Comment=Simple_action -+TriggersCount=1 -+ -+[Data_1_6Triggers0] -+Key=XF86Eject -+Type=SHORTCUT -+ -+[Data_1_7] -+Comment=Launches KFind when the multimedia Search key is pressed.\n -+Enabled=true -+Name=Search -+Type=COMMAND_URL_SHORTCUT_ACTION_DATA -+ -+[Data_1_7Actions] -+ActionsCount=1 -+ -+[Data_1_7Actions0] -+CommandURL=kfind -+Type=COMMAND_URL -+ -+[Data_1_7Conditions] -+Comment= -+ConditionsCount=0 -+ -+[Data_1_7Triggers] -+Comment=Simple_action -+TriggersCount=1 -+ -+[Data_1_7Triggers0] -+Key=XF86Search -+Type=SHORTCUT -+ -+[Data_1_8] -+Comment=Opens a new mail composer window when the multimedia Mail key is pressed.\n -+Enabled=true -+Name=Launch Mail -+Type=COMMAND_URL_SHORTCUT_ACTION_DATA -+ -+[Data_1_8Actions] -+ActionsCount=1 -+ -+[Data_1_8Actions0] -+CommandURL=mailto:? -+Type=COMMAND_URL -+ -+[Data_1_8Conditions] -+Comment= -+ConditionsCount=0 -+ -+[Data_1_8Triggers] -+Comment=Simple_action -+TriggersCount=1 -+ -+[Data_1_8Triggers0] -+Key=XF86Mail -+Type=SHORTCUT -+ -+[Main] -+Version=2 -+ImportId=multimedia_keys -+ -Index: khotkeys/data/Makefile.am -=================================================================== ---- khotkeys/data/Makefile.am.orig -+++ khotkeys/data/Makefile.am -@@ -1,7 +1,9 @@ --khotkeys_data_DATA = kde32b1.khotkeys konqueror_gestures_kde321.khotkeys printscreen.khotkeys -+khotkeys_data_DATA = kde32b1.khotkeys konqueror_gestures_kde321.khotkeys printscreen.khotkeys \ -+ multimedia_keys.khotkeys - khotkeys_datadir = $(kde_datadir)/khotkeys - --khotkeys_update_DATA = khotkeys_32b1_update.upd konqueror_gestures_kde321_update.upd khotkeys_printscreen.upd -+khotkeys_update_DATA = khotkeys_32b1_update.upd konqueror_gestures_kde321_update.upd khotkeys_printscreen.upd \ -+ khotkeys_multimedia_keys.upd - khotkeys_updatedir = $(kde_datadir)/kconf_update - - EXTRA_DIST = $(khotkeys_data_DATA) $(khotkeys_update_DATA) -Index: khotkeys/data/khotkeys_multimedia_keys.upd -=================================================================== ---- /dev/null -+++ khotkeys/data/khotkeys_multimedia_keys.upd -@@ -0,0 +1,8 @@ -+Id=multimedia_keys -+# the file is intentionally a dummy, as the binary will update khotkeysrc, -+# the khotkeys_update will just remember it has been done -+File=khotkeys_update -+Group=Dummy -+Options=overwrite -+ScriptArguments=--id multimedia_keys -+Script=khotkeys_update diff --git a/opensuse/tdebase/khotkeys-multimedia-action2.diff b/opensuse/tdebase/khotkeys-multimedia-action2.diff deleted file mode 100644 index 9f995b1ab..000000000 --- a/opensuse/tdebase/khotkeys-multimedia-action2.diff +++ /dev/null @@ -1,81 +0,0 @@ -Index: khotkeys/shared/actions.cpp -=================================================================== ---- khotkeys/shared/actions.cpp.orig -+++ khotkeys/shared/actions.cpp -@@ -29,6 +29,7 @@ - #include <kaccel.h> - #include <kservice.h> - #include <kprocess.h> -+#include <qregexp.h> - - #include "windows.h" - #include "action_data.h" -@@ -116,7 +117,6 @@ void Command_url_action::execute() - { - if( command_url().isEmpty()) - return; -- KURIFilterData uri; - QString cmd = command_url(); - static bool sm_ready = false; - if( !sm_ready ) -@@ -124,6 +124,9 @@ void Command_url_action::execute() - kapp->propagateSessionManager(); - sm_ready = true; - } -+ if( substituteAndHandleSpecial( cmd )) -+ return; -+ KURIFilterData uri; - // int space_pos = command_url().find( ' ' ); - // if( command_url()[ 0 ] != '\'' && command_url()[ 0 ] != '"' && space_pos > -1 - // && command_url()[ space_pos - 1 ] != '\\' ) -@@ -176,6 +179,38 @@ void Command_url_action::execute() - timeout.start( 1000, true ); // 1sec timeout - } - -+// do special command substitutions, return true if also already handled -+bool Command_url_action::substituteAndHandleSpecial( QString& cmd ) -+ { -+ if( cmd.contains( "KHOTKEYS_BROWSER" )) -+ { // the default browser -+ KConfig config( QString::fromLatin1("kfmclientrc")); // see KRun -+ config.setGroup("General"); -+ QString browser = config.readEntry("BrowserApplication"); -+ if( browser.startsWith( QString::fromLatin1( "!" ))) -+ browser = browser.mid( 1 ); -+ else -+ { -+ KService::Ptr service = KService::serviceByStorageId( browser ); -+ if( service ) -+ { -+ browser = service->exec(); -+ browser.replace( QRegExp( " %.?" ), "" ); // remove " %u" and others -+ } -+ } -+ if( browser.isEmpty()) -+ browser = QString::fromLatin1( "konqueror" ); // opens in webbrowsing profile by default -+ cmd = cmd.replace( "KHOTKEYS_BROWSER", browser ); -+ } -+ if( cmd.contains( "KHOTKEYS_TERMINAL" )) -+ { // the default terminal application -+ KConfigGroup config( KGlobal::config(), "General" ); -+ QString terminal = config.readPathEntry( "TerminalApplication", "konsole" ); -+ cmd = cmd.replace( "KHOTKEYS_TERMINAL", terminal ); -+ } -+ return false; -+ } -+ - QString Command_url_action::description() const - { - return i18n( "Command/URL : " ) + command_url(); -Index: khotkeys/shared/actions.h -=================================================================== ---- khotkeys/shared/actions.h.orig -+++ khotkeys/shared/actions.h -@@ -75,6 +75,7 @@ class KDE_EXPORT Command_url_action - protected: - QTimer timeout; - private: -+ bool substituteAndHandleSpecial( QString& cmd ); - QString _command_url; - }; - diff --git a/opensuse/tdebase/kicker-defaults.diff b/opensuse/tdebase/kicker-defaults.diff deleted file mode 100644 index a92cae562..000000000 --- a/opensuse/tdebase/kicker-defaults.diff +++ /dev/null @@ -1,57 +0,0 @@ -Index: kcontrol/kcontrol/KControl.desktop -=================================================================== ---- kcontrol/kcontrol/KControl.desktop.orig -+++ kcontrol/kcontrol/KControl.desktop -@@ -7,7 +7,9 @@ Type=Application - DocPath=kcontrol/index.html - X-KDE-StartupNotify=true - --Name=Control Center -+GenericName=Configure Desktop -+GenericName[de]=Desktop-Einstellungen -+Name=Personal Settings - Name[af]=Beheer Sentrum - Name[ar]=مركز التØكم - Name[az]=Ä°darÉ™ MÉ™rkÉ™zi -@@ -93,3 +95,4 @@ Name[zu]=Indawo Yokulawula - - X-DCOP-ServiceType=Unique - Categories=Qt;KDE;Core; -+Keywords=control,center -Index: kicker/libkicker/kickerSettings.kcfg -=================================================================== ---- kicker/libkicker/kickerSettings.kcfg.orig -+++ kicker/libkicker/kickerSettings.kcfg -@@ -159,7 +159,7 @@ - - <entry name="MenuExtensions" key="Extensions" type="StringList" > - <label>Optional Menus</label> -- <default>prefmenu.desktop,systemmenu.desktop</default> -+ <default>recentdocs.desktop,systemmenu.desktop</default> - </entry> - - <entry name="RecentAppsStat" type="StringList" > -Index: kicker/menuext/system/systemmenu.desktop -=================================================================== ---- kicker/menuext/system/systemmenu.desktop.orig -+++ kicker/menuext/system/systemmenu.desktop -@@ -1,5 +1,5 @@ - [Desktop Entry] --Name=System Menu -+Name=My System - Name[af]=Stelsel Kieslys - Name[ar]=قائمة النظام - Name[be]=СіÑÑ‚Ñмнае меню -Index: kcontrol/kicker/hidingtab_impl.cpp -=================================================================== ---- kcontrol/kicker/hidingtab_impl.cpp.orig -+++ kcontrol/kicker/hidingtab_impl.cpp -@@ -200,7 +200,7 @@ void HidingTab::defaults() - m_delaySpinBox->setValue( 3 ); - m_autoHideSwitch->setChecked( false ); - m_lHB->setChecked( false ); -- m_rHB->setChecked( true ); -+ m_rHB->setChecked( false ); - m_animateHiding->setChecked( true ); - m_hideSlider->setValue( 10 ); - m_delaySpinBox->setValue( 3 ); diff --git a/opensuse/tdebase/kickerrc b/opensuse/tdebase/kickerrc deleted file mode 100644 index e5d6351a7..000000000 --- a/opensuse/tdebase/kickerrc +++ /dev/null @@ -1,63 +0,0 @@ -[ServiceMenuButton_1] -Label=work/ -RelPath=work/ - -[buttons] -EnableIconZoom=false -EnableTileBackground=false - -[menus] -DetailedMenuEntries=false -ReduceMenuDepth=true -ShowUnimportantEntries=false - -[Applet_1] -DesktopFile=minipagerapplet.desktop -FreeSpace=0.25 - -[Applet_2] -ConfigFile=taskbar_panelappletrc -DesktopFile=taskbarapplet.desktop -FreeSpace=0.25 - -[Applet_3] -ConfigFile=systemtray_panelappletrc -DesktopFile=systemtrayapplet.desktop -FreeSpace=1 - -[Applet_4] -DesktopFile=clockapplet.desktop -FreeSpace=1 - -[General] -Applets=KMenuButton_1,ServiceMenuButton_1,ServiceButton_2,ServiceButton_1,ServiceButton_6,ServiceButton_3,ServiceButton_4,Applet_1,Applet_2,Applet_3,Applet_4 -CustomSize=58 -# this size gets converted to "3" via kconf_update -Size=58 - -[KFileDialog Speedbar] -Speedbar IconSize=32 - -[KMenuButton_1] -FreeSpace=0 - -[ServiceButton_1] -DesktopFile=System/konsole.desktop -FreeSpace=0 - -[ServiceButton_2] -DesktopFile=Home.desktop -FreeSpace=0 - -[ServiceButton_3] -DesktopFile=Internet/konqbrowser.desktop -FreeSpace=0 - -[ServiceButton_4] -DesktopFile=Internet/KMail.desktop -FreeSpace=0 - -[ServiceButton_6] -DesktopFile=Help.desktop -FreeSpace=0 - diff --git a/opensuse/tdebase/kickoff-beagle.diff b/opensuse/tdebase/kickoff-beagle.diff deleted file mode 100644 index a850e78ce..000000000 --- a/opensuse/tdebase/kickoff-beagle.diff +++ /dev/null @@ -1,1329 +0,0 @@ ---- configure.in.in (Revision 0) -+++ configure.in.in (Revision 849791) -@@ -0,0 +1,78 @@ -+dnl Check for pkg-config -+AC_PATH_PROG(PKG_CONFIG, pkg-config, no) -+ -+if test "$PKG_CONFIG" = "no"; then -+ AC_MSG_ERROR([ -+This package requires pkg-config. -+]) -+fi -+ -+dnl Check for Glib-2.0 -+# GLIB_CFLAGS: cflags for compiling glib dependant sources -+# GLIB_LIBADD: glib libraries (-l options) -+# GLIB_LDFLAGS: flags containing path to glib libraries (-L options) -+ -+GLIB_PACKAGES="gmodule-2.0 gthread-2.0" -+GLIB_VERSION="1.3.3" -+AC_MSG_CHECKING(for GLib-2.0 (at least $GLIB_VERSION)) -+ -+if $PKG_CONFIG --atleast-pkgconfig-version 0.15 ; then -+ if $PKG_CONFIG --atleast-version $GLIB_VERSION $GLIB_PACKAGES >/dev/null 2>&1 ; then -+ GLIB_CFLAGS="`$PKG_CONFIG --cflags $GLIB_PACKAGES`" -+ GLIB_LIBADD="`$PKG_CONFIG --libs-only-l --libs-only-other $GLIB_PACKAGES`" -+ GLIB_LDFLAGS="`$PKG_CONFIG --libs-only-L $GLIB_PACKAGES`" -+ AC_MSG_RESULT(yes) -+ fi -+else -+ if $PKG_CONFIG --atleast-version $GLIB_VERSION $GLIB_PACKAGES >/dev/null 2>&1 ; then -+ GLIB_CFLAGS="`$PKG_CONFIG --cflags $GLIB_PACKAGES`" -+ GLIB_LIBADD="`$PKG_CONFIG --libs-only-l $GLIB_PACKAGES`" -+ GLIB_LDFLAGS="`$PKG_CONFIG --libs-only-L $GLIB_PACKAGES`" -+ AC_MSG_RESULT(yes) -+ AC_MSG_WARN([you may need to run make LDFLAGS=-pthread to compile arts]) -+ fi -+fi -+ -+if test -z "$GLIB_LIBADD"; then -+ AC_MSG_RESULT(not installed) -+ DO_NOT_COMPILE="$DO_NOT_COMPILE kerry gmcop" -+fi -+ -+AC_SUBST(GLIB_CFLAGS) -+AC_SUBST(GLIB_LIBADD) -+AC_SUBST(GLIB_LDFLAGS) -+ -+dnl Check for libbeagle 0.2.0 -+# LIBBEAGLE_CFLAGS: cflags for compiling libbeagle dependant sources -+# LIBBEAGLE_LIBADD: libbeagle libraries (-l options) -+# LIBBEAGLE_LDFLAGS: flags containing path to libbeagle libraries (-L options) -+ -+LIBBEAGLE_PACKAGES="libbeagle-0.0" -+LIBBEAGLE_VERSION="0.2.4" -+AC_MSG_CHECKING(for libbeagle-0.2.4 (at least $LIBBEAGLE_VERSION)) -+ -+if $PKG_CONFIG --atleast-pkgconfig-version 0.15 ; then -+ if $PKG_CONFIG --atleast-version $LIBBEAGLE_VERSION $LIBBEAGLE_PACKAGES >/dev/null 2>&1 ; then -+ LIBBEAGLE_CFLAGS="`$PKG_CONFIG --cflags $LIBBEAGLE_PACKAGES`" -+ LIBBEAGLE_LIBADD="`$PKG_CONFIG --libs-only-l --libs-only-other $LIBBEAGLE_PACKAGES`" -+ LIBBEAGLE_LDFLAGS="`$PKG_CONFIG --libs-only-L $LIBBEAGLE_PACKAGES`" -+ AC_MSG_RESULT(yes) -+ fi -+else -+ if $PKG_CONFIG --atleast-version $LIBBEAGLE_VERSION $LIBBEAGLE_PACKAGES >/dev/null 2>&1 ; then -+ LIBBEAGLE_CFLAGS="`$PKG_CONFIG --cflags $LIBBEAGLE_PACKAGES`" -+ LIBBEAGLE_LIBADD="`$PKG_CONFIG --libs-only-l $LIBBEAGLE_PACKAGES`" -+ LIBBEAGLE_LDFLAGS="`$PKG_CONFIG --libs-only-L $LIBBEAGLE_PACKAGES`" -+ AC_MSG_RESULT(yes) -+ AC_MSG_WARN([you may need to run make LDFLAGS=-pthread to compile arts]) -+ fi -+fi -+ -+if test -z "$LIBBEAGLE_LIBADD"; then -+ AC_MSG_RESULT(not installed) -+ DO_NOT_COMPILE="$DO_NOT_COMPILE kerry gmcop" -+fi -+ -+AC_SUBST(LIBBEAGLE_CFLAGS) -+AC_SUBST(LIBBEAGLE_LIBADD) -+AC_SUBST(LIBBEAGLE_LDFLAGS) ---- kicker/plugins/beaglesearch.cpp (Revision 0) -+++ kicker/plugins/beaglesearch.cpp (Revision 849791) -@@ -0,0 +1,362 @@ -+/***************************************************************** -+ -+ Copyright (c) 2006 Debajyoti Bera <dbera.web@gmail.com> -+ -+ This program is free software; you can redistribute it and/or -+ modify it under the terms of the GNU General Public -+ License as published by the Free Software Foundation; either -+ version 2 of the License, or (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; see the file COPYING. If not, write to -+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ Boston, MA 02110-1301, USA. -+ -+******************************************************************/ -+ -+#include "beaglesearch.h" -+ -+#include <qdatetime.h> -+#include <qmutex.h> -+#include <qstringlist.h> -+#include <qapplication.h> -+#include <time.h> -+ -+void beagle_init () -+{ -+ g_type_init (); -+} -+ -+// ---------------- Hit --------------------------- -+ -+Hit::Hit (BeagleHit *_hit) : processed (false) -+{ -+ hit = beagle_hit_ref (_hit); -+} -+ -+Hit::~Hit () -+{ -+ beagle_hit_unref (hit); -+ if (! processed) -+ return; -+ QDictIterator<QStringList> it (property_map); -+ for( ; it.current(); ++it ) -+ ((QStringList *)it.current())->clear (); -+ -+} -+ -+void Hit::processProperties () -+{ -+ processed = true; -+ GSList *prop_list = beagle_hit_get_all_properties (hit); -+ GSList *it; -+ property_map.setAutoDelete (true); -+ for (it = prop_list; it; it = it->next) { -+ BeagleProperty *property = (BeagleProperty *) it->data; -+ QString key = QString::fromUtf8 (beagle_property_get_key (property)); -+ if (! property_map [key]) -+ property_map.insert (key, new QStringList ()); -+ property_map [key]->append (QString::fromUtf8 (beagle_property_get_value (property))); -+ } -+ g_slist_free (prop_list); -+} -+ -+const QString Hit::operator[] (QString prop_name) -+{ -+ if (! processed) -+ processProperties (); -+ -+ QStringList *prop_list = property_map [prop_name]; -+ if (! prop_list) -+ return QString::null; -+ if (prop_list->count () != 1) -+ return QString::null; -+ return (QString)prop_list->first (); -+} -+ -+// ---------------- BeagleSearch ------------------ -+ -+BeagleSearchResult::BeagleSearchResult(int client_id) -+ : client_id (client_id), total (0) -+{ -+ hitlist = new QPtrList<Hit>; -+ hitlist->setAutoDelete (true); -+} -+ -+ -+BeagleSearchResult::~BeagleSearchResult() -+{ -+ // everything is set to autodelete -+} -+ -+void BeagleSearchResult::addHit(BeagleHit *_hit) -+{ -+ Hit *hit = new Hit (_hit); -+ hitlist->prepend (hit); -+} -+ -+const QPtrList<Hit> *BeagleSearchResult::getHits () const -+{ -+ return hitlist; -+} -+ -+ -+static int total_hits; -+ -+static void print_feed_item_hit (BeagleHit *hit) -+{ -+ const char *text; -+ -+ if (beagle_hit_get_one_property (hit, "dc:title", &text)) -+ g_print ("Blog: %s\n", text); -+} -+ -+static void print_file_hit (BeagleHit *hit) -+{ -+ g_print ("File: %s, (%s)\n", beagle_hit_get_uri (hit), beagle_hit_get_mime_type (hit)); -+} -+ -+static void print_other_hit (BeagleHit *hit) -+{ -+ const char *text; -+ -+ g_print ("%s (%s)", beagle_hit_get_uri (hit), -+ beagle_hit_get_source (hit)); -+ if (beagle_hit_get_one_property (hit, "dc:title", &text)) -+ g_print ("title = %s\n", text); -+} -+ -+static void print_hit (BeagleHit *hit) -+{ -+ if (strcmp (beagle_hit_get_type (hit), "FeedItem") == 0) { -+ print_feed_item_hit (hit); -+ } -+ else if (strcmp (beagle_hit_get_type (hit), "File") == 0) { -+ print_file_hit (hit); -+ } else { -+ print_other_hit (hit); -+ } -+} -+ -+// ---------------- BeagleSearchClient ------------------ -+ -+void BeagleSearchClient::run () -+{ -+ kdDebug () << "Starting query ..." << endl; -+ -+ QTime query_timer; -+ query_timer.start (); -+ -+ g_signal_connect (query, "hits-added", -+ G_CALLBACK (hitsAddedSlot), -+ this); -+ g_signal_connect (query, "finished", -+ G_CALLBACK (finishedSlot), -+ this); -+ beagle_client_send_request_async (client, -+ BEAGLE_REQUEST (query), -+ NULL); -+ g_main_loop_run (main_loop); -+ kdDebug () << "Finished query ..." << endl; -+ -+ QCustomEvent *ev; -+ if (collate_results) { -+ result->query_msec = query_timer.elapsed (); -+ -+ ev = new QCustomEvent (RESULTFOUND, result); -+ QApplication::postEvent (object, ev); -+ } -+ -+ ev = new QCustomEvent (KILLME, this); -+ QApplication::postEvent (object, ev); -+ -+} -+ -+void BeagleSearchClient::stopClient () -+{ -+ if (finished ()) -+ return; // duh! -+ kdDebug () << "Query thread " << id << " not yet finished ..." << endl; -+ // get ready for suicide -+ client_mutex->lock (); -+ kill_me = true; -+ g_signal_handlers_disconnect_by_func ( -+ query, -+ (void *)hitsAddedSlot, -+ this); -+ g_signal_handlers_disconnect_by_func ( -+ query, -+ (void *)finishedSlot, -+ this); -+ g_main_loop_quit (main_loop); -+ client_mutex->unlock (); -+} -+ -+void BeagleSearchClient::hitsAddedSlot (BeagleQuery *query, -+ BeagleHitsAddedResponse *response, -+ BeagleSearchClient *bsclient) -+{ -+ GSList *hits, *l; -+ gint i; -+ gint nr_hits; -+ -+ // check if we are supposed to be killed -+ bsclient->client_mutex->lock (); -+ if (bsclient->kill_me) { -+ kdDebug () << "Suicide time before processing" << endl; -+ bsclient->client_mutex->unlock (); -+ return; -+ } -+ bsclient->client_mutex->unlock (); -+ -+ hits = beagle_hits_added_response_get_hits (response); -+ -+ nr_hits = g_slist_length (hits); -+ total_hits += nr_hits; -+ g_print ("Found hits (%d) at %ld:\n", nr_hits, time (NULL)); -+ -+ BeagleSearchResult *search_result; -+ if (! bsclient->collate_results) -+ search_result = new BeagleSearchResult (bsclient->id); -+ else -+ search_result = bsclient->result; -+ search_result->total += nr_hits; -+ -+ for (l = hits, i = 1; l; l = l->next, ++i) { -+ //g_print ("[%d] ", i); -+ //print_hit (BEAGLE_HIT (l->data)); -+ //g_print ("\n"); -+ -+ search_result->addHit(BEAGLE_HIT (l->data));//hit); -+ } -+ g_print ("[%ld] hits adding finished \n", time (NULL)); -+ -+ // check if we are supposed to be killed -+ bsclient->client_mutex->lock (); -+ if (bsclient->kill_me) { -+ kdDebug () << "Suicide time before sending ..." << endl; -+ bsclient->client_mutex->unlock (); -+ if (! bsclient->collate_results) -+ delete search_result; -+ return; -+ } -+ bsclient->client_mutex->unlock (); -+ -+ // time to send back results, if user asked so -+ if (bsclient->collate_results) -+ return; -+ QCustomEvent *ev = new QCustomEvent (RESULTFOUND, search_result); -+ g_print ("[%ld] event notified \n", time (NULL)); -+ QApplication::postEvent (bsclient->object, ev); -+} -+ -+void BeagleSearchClient::finishedSlot (BeagleQuery *query, -+ BeagleFinishedResponse *response, -+ BeagleSearchClient *bsclient) -+{ -+ // check if we are supposed to be killed -+ bsclient->client_mutex->lock (); -+ bool should_kill = bsclient->kill_me; -+ QObject* receiver = bsclient->object; -+ bsclient->client_mutex->unlock (); -+ -+ if (should_kill) -+ return; -+ -+ g_main_loop_quit (bsclient->main_loop); -+ -+ if (bsclient->collate_results) -+ return; // if we are collating, everything will be send from a central place -+ if (receiver) { -+ QCustomEvent *ev = new QCustomEvent (SEARCHOVER, bsclient); -+ g_print ("[%ld] query finish notified \n", time (NULL)); -+ QApplication::postEvent (receiver, ev); -+ } -+} -+ -+// ----------------- BeagleUtil ------------------- -+ -+BeagleQuery * -+BeagleUtil::createQueryFromString (QString query_str, -+ QStringList &sources_menu, -+ QStringList &types_menu, -+ int max_hits_per_source) -+{ -+ BeagleQuery *beagle_query = beagle_query_new (); -+ beagle_query_set_max_hits (beagle_query, max_hits_per_source); // this is per source! -+ -+ kdDebug () << "Creating query from \"" << query_str << "\"" << endl; -+ for ( QStringList::Iterator it = sources_menu.begin(); it != sources_menu.end(); ++it ) -+ beagle_query_add_source (beagle_query, g_strdup ((*it).utf8 ())); -+ -+ for ( QStringList::Iterator it = types_menu.begin(); it != types_menu.end(); ++it ) -+ beagle_query_add_hit_type (beagle_query, g_strdup ((*it).utf8 ())); -+ -+ QStringList query_terms; -+ QString start_date, end_date; -+ QStringList words = QStringList::split (' ', query_str, false); -+ for ( QStringList::Iterator it = words.begin(); it != words.end(); ++it ) { -+ QStringList key_value_pair = QStringList::split ('=', *it, false); -+ if (key_value_pair.count () == 1) -+ query_terms += *it; -+ else if (key_value_pair.count () == 2) { -+ QString key = key_value_pair [0].lower (); -+ QString value = key_value_pair [1]; -+ if (key == "mime") -+ beagle_query_add_mime_type (beagle_query, g_strdup (value.utf8 ())); -+ else if (key == "type") -+ beagle_query_add_hit_type (beagle_query, g_strdup (value.utf8 ())); -+ else if (key == "source") -+ beagle_query_add_source (beagle_query, g_strdup (value.utf8 ())); -+ else if (key == "start") -+ start_date = value; -+ else if (key == "end") -+ end_date = value; -+ else -+ query_terms += *it; -+ } else -+ query_terms += *it; -+ } -+ -+ beagle_query_add_text (beagle_query, g_strdup (query_terms.join (" ").utf8 ())); -+ kdDebug () << "Adding query text:" << query_terms.join (" ").utf8 () << endl; -+ -+ if (start_date.isNull () && end_date.isNull ()) -+ return beagle_query; -+ -+ //kdDebug () << "Handling dates ..." << endl; -+ BeagleQueryPartDate * date_part = beagle_query_part_date_new (); -+ if (! start_date.isNull ()) -+ beagle_query_part_date_set_start_date (date_part, timestringToBeagleTimestamp (start_date)); -+ if (! end_date.isNull ()) -+ beagle_query_part_date_set_end_date (date_part, timestringToBeagleTimestamp (end_date)); -+ beagle_query_add_part (beagle_query, BEAGLE_QUERY_PART (date_part)); -+ -+ return beagle_query; -+} -+ -+// timestring format allowed YYYYmmDD -+BeagleTimestamp * -+BeagleUtil::timestringToBeagleTimestamp(QString timestring) -+{ -+ //kdDebug () << "datetime string:" << timestring << endl; -+ // FIXME: error check timestring format -+ if (timestring.isNull () || timestring.stripWhiteSpace () == "" || timestring.length() != 8 ) -+ return beagle_timestamp_new_from_unix_time (QDateTime::currentDateTime ().toTime_t ()); -+ //QDateTime dt = QDateTime::fromString (timestring, Qt::ISODate); -+ struct tm tm_time; -+ time_t timet_time; -+ time (&timet_time); -+ localtime_r (&timet_time, &tm_time); -+ strptime (timestring.ascii(), "%Y%m%d", &tm_time); -+ tm_time.tm_sec = tm_time.tm_min = tm_time.tm_hour = 0; -+ //kdDebug() << asctime (&tm_time) << endl; -+ timet_time = mktime (&tm_time); -+ return beagle_timestamp_new_from_unix_time (timet_time); -+} -+ ---- kicker/plugins/kickoff-beagle-plugin.cpp (Revision 0) -+++ kicker/plugins/kickoff-beagle-plugin.cpp (Revision 849791) -@@ -0,0 +1,499 @@ -+/*************************************************************************** -+ * Copyright (C) 2006 by Stephan Binner <binner@kde.org> * -+ * Copyright (c) 2006 Debajyoti Bera <dbera.web@gmail.com> * -+ * * -+ * This program is free software; you can redistribute it and/or modify * -+ * it under the terms of the GNU General Public License as published by * -+ * the Free Software Foundation; either version 2 of the License, or * -+ * (at your option) any later version. * -+ * * -+ * This program is distributed in the hope that it will be useful, * -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of * -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -+ * GNU General Public License for more details. * -+ * * -+ * You should have received a copy of the GNU General Public License * -+ * along with this program; if not, write to the * -+ * Free Software Foundation, Inc., * -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * -+ ***************************************************************************/ -+ -+#include "kickoff-beagle-plugin.h" -+ -+#include <qregexp.h> -+#include <qtimer.h> -+ -+#include <kapplication.h> -+#include <kdesktopfile.h> -+#include <kgenericfactory.h> -+#include <kservice.h> -+ -+QString dc_identifier = "dc:identifier"; -+QString dc_title = "dc:title"; -+QString parent_dc_title = "parent:dc:title"; -+QString exactfilename = "beagle:ExactFilename"; -+QString fixme_name = "fixme:Name"; -+QString beagle_filename = "beagle:Filename"; -+QString fixme_attachment_title = "fixme:attachment_title"; -+QString fixme_hasattachments = "fixme:hasAttachments"; -+QString parent_prefix = "parent:"; -+QString fixme_folder = "fixme:folder"; -+QString fixme_categories = "fixme:Categories"; -+QString fixme_comment = "fixme:Comment"; -+QString fixme_width = "fixme:width"; -+QString fixme_height = "fixme:height"; -+QString fixme_from_address = "fixme:from_address"; -+QString fixme_artist = "fixme:artist"; -+QString fixme_album = "fixme:album"; -+QString dc_source = "dc:source"; -+QString dc_publisher = "dc:publisher"; -+QString digikam_tag = "digikam:Tag"; -+QString fixme_speakingto = "fixme:speakingto"; -+QString fixme_starttime = "fixme:starttime"; -+QString comma_string = ","; -+QString vCard_FN = "vCard:FN"; -+QString vCard_PREFEMAIL = "vCard:PREFEMAIL"; -+QString fixme_uid = "fixme:uid"; -+ -+static CATEGORY getHitCategory (Hit *hit) -+{ -+ QString hittype = hit->getType(); -+ QString hitsource = hit->getSource(); -+ -+ // if hit source is None, dont handle it. Might be anthrax-envelope :) -+ if (hitsource.isNull()) -+ return OTHER; -+ -+ if (hitsource == "documentation") -+ return DOCS; -+ -+ if (hittype == "IMLog") -+ return CHATS; -+ -+ // sure shots -+ if (hittype == "FeedItem") -+ return FEEDS; -+ if (hittype == "WebHistory") -+ return WEBHIST; -+ if (hittype == "MailMessage") -+ return MAILS; -+ if (hittype == "Note") -+ return NOTES; -+ -+ // check for applications -+ if (hittype == "File" && (*hit) ["beagle:FilenameExtension"] == ".desktop") -+ return APPS; -+ -+ // check for music -+ QString hitmimetype = hit->getMimeType(); -+ if (hitsource == "Amarok" -+ || hitmimetype.startsWith ("audio") -+ || hitmimetype == "application/ogg") -+ return MUSIC; // not an exhaustive search -+ -+ // check for images from files -+ if (hitsource == "Files" && hitmimetype.startsWith ("image")) -+ return PICS; -+ -+ if (hitsource == "Files" && hitmimetype.startsWith ("video")) -+ return VIDEOS; -+ -+ if (hitsource == "Files") -+ return FILES; -+ -+ if (hitsource == "KAddressBook") -+ return ACTIONS; -+ -+ return OTHER; -+} -+ -+K_EXPORT_COMPONENT_FACTORY( kickoffsearch_beagle, -+ KGenericFactory<KickoffBeaglePlugin>( "kickoffsearch_beagle" ) ) -+ -+KickoffBeaglePlugin::KickoffBeaglePlugin(QObject *parent, const char* name, const QStringList&) -+ : KickoffSearch::Plugin(parent, name ), genericTitle( true ) -+{ -+ g_type_init (); -+ current_beagle_client = NULL; -+} -+ -+bool KickoffBeaglePlugin::daemonRunning() -+{ -+ return beagle_util_daemon_is_running(); -+} -+ -+void KickoffBeaglePlugin::query(QString term, bool _genericTitle) -+{ -+ genericTitle = _genericTitle; -+ current_query_str = term; -+ -+ // Beagle search -+ if (current_beagle_client != NULL) { -+ kdDebug () << "Previous client w/id " << current_beagle_client->id << " still running ... ignoring it." << endl; -+ current_beagle_client->stopClient (); -+ } -+ current_beagle_client_id = KApplication::random (); -+ kdDebug () << "Creating client with id:" << current_beagle_client_id << endl; -+ -+ BeagleClient *beagle_client = beagle_client_new (NULL); -+ if (beagle_client == NULL) { -+ kdDebug() << "beagle service not running ..." << endl; -+ return; -+ } -+ -+ QStringList sources, types; -+ BeagleQuery *beagle_query = BeagleUtil::createQueryFromString (term, sources, types, 99); // maximum 99 results, if this doesnt work, blame the stars -+ -+ current_beagle_client = new BeagleSearchClient ( -+ current_beagle_client_id, -+ this, -+ beagle_client, -+ beagle_query, -+ false); -+ current_beagle_client->start(); -+// kdDebug () << "Query dispatched at " << time (NULL) << endl; -+} -+ -+void KickoffBeaglePlugin::cleanClientList () -+{ -+ toclean_list_mutex.lock (); -+ BeagleSearchClient *old_client = toclean_client_list.take (0); -+ if (old_client != NULL) { // failsafe -+ kdDebug () << "Cleanup old client " << old_client->id << endl; -+ delete old_client; -+ } -+ toclean_list_mutex.unlock (); -+} -+ -+void KickoffBeaglePlugin::customEvent (QCustomEvent *e) -+{ -+ if (e->type () == RESULTFOUND) { -+// kdDebug () << "Quick query thread at " << time (NULL) << " with current_id=" << current_beagle_client_id << " finished ..." << endl; -+ BeagleSearchResult *result = (BeagleSearchResult *) e->data (); -+ if (current_beagle_client_id != result->client_id) { -+ kdDebug () << "Stale result from " << result->client_id << endl; -+ delete result; -+ // FIXME: Should I also free e ? -+ } else { -+ kdDebug () << "Good results ...total=" << result->total << endl; -+ showResults (result); -+ } -+ //KPassivePopup::message( "This is the message", this ); -+ } else if (e->type () == SEARCHOVER) { -+ BeagleSearchClient *client = (BeagleSearchClient *) e->data (); -+ if (client == NULL) { -+// kdDebug () << "Query finished event at " << time (NULL) << " but client is already deleted" << endl; -+ return; -+ } -+// kdDebug () << "Query finished event at " << time (NULL) << " for id=" << client->id << endl; -+ if (current_beagle_client_id == client->id) { -+ kickoffSearchInterface()->searchOver(); -+ current_beagle_client = NULL; // important ! -+ } -+ } else if (e->type () == KILLME) { -+ BeagleSearchClient *client = (BeagleSearchClient *) e->data (); -+ if (client->finished ()) -+ delete client; -+ else { -+ // add client to cleanup list -+ toclean_list_mutex.lock (); -+ toclean_client_list.append (client); -+ kdDebug () << "Scheduling client to be deleted in 500ms" << endl; -+ toclean_list_mutex.unlock (); -+ QTimer::singleShot (500, this, SLOT (cleanClientList ())); -+ } -+ } -+} -+ -+// this method decides what to display in the result list -+HitMenuItem *KickoffBeaglePlugin::hitToHitMenuItem (int category, Hit *hit) -+{ -+ QString title, info, mimetype, icon; -+ int score = 0; -+ KURL uri; -+ -+#if 0 -+ kdDebug() << "*** " << hit->getUri() << endl; -+ QDict<QStringList> all = hit->getAllProperties(); -+ QDictIterator<QStringList> it( all ); -+ for( ; it.current(); ++it ) -+ kdDebug() << it.currentKey() << ": " << *(it.current()) << endl; -+#endif -+ -+ switch (category) { -+ case FILES: -+ { -+ uri = hit->getUri (); -+ QString uristr = uri.path (); -+ title = (*hit) [exactfilename]; -+ int last_slash = uristr.findRev ('/', -1); -+ info = i18n("Folder: %1").arg(last_slash == 0 ? "/" -+ : uristr.section ('/', -2, -2)); -+ } -+ break; -+ case ACTIONS: -+ { -+ if (hit->getSource()=="KAddressBook"){ -+ title = i18n("Send Email to %1").arg((*hit)[vCard_FN]); -+ info = (*hit)[vCard_PREFEMAIL]; -+ uri = "mailto:"+(*hit)[vCard_PREFEMAIL]; -+ mimetype = hit->getMimeType (); -+ icon = "mail_new"; -+ -+ HitMenuItem * first_item=new HitMenuItem (title, info, uri, mimetype, 0, category, icon, score); -+ kickoffSearchInterface()->addHitMenuItem(first_item); -+ -+ title =i18n("Open Addressbook at %1").arg((*hit)[vCard_FN]); -+ uri = "kaddressbook:/"+(*hit)[fixme_uid]; -+ icon = "kaddressbook"; -+ } -+ break; -+ } -+ case MAILS: -+ { -+ QString prefix = QString::null; -+ bool is_attachment = ((*hit) [parent_prefix + fixme_hasattachments] == "true"); -+ bool has_parent = (! hit->getParentUri ().isEmpty ()); -+ bool parent_mbox_file = false; -+ if (has_parent) -+ parent_mbox_file = ((*hit) [parent_prefix + fixme_folder] == QString::null); -+ -+ // Logic: -+ // If has_parent == false, everything is normal -+ // If has_parent == true, parent_mbox_file == false, everything is normal, use uri -+ // FIXME: If has_parent == true, parent_mbox_file == true, ??? -+ // If has_parent == true, is_attachment == true, hit is attach and access with prefix "parent:", use parenturi -+ // Else, not attachment (multipart), access with prefix "parent:", use parenturi -+ -+ if (has_parent && !parent_mbox_file) { -+ uri = hit->getParentUri (); -+ prefix = parent_prefix; -+ if (is_attachment) -+ title = (*hit) [fixme_attachment_title]; -+ if (title.isEmpty ()) -+ title = (*hit) [prefix + dc_title]; -+ if (title.isEmpty ()) -+ title = i18n("No subject"); -+ if (is_attachment) -+ title = title.prepend (i18n("(Attachment) ")); -+ info = (i18n("From %1").arg((*hit) [prefix + fixme_from_address])); -+ } else { -+ uri = hit->getUri (); -+ title = (*hit) [dc_title]; -+ info = (i18n("From %1").arg((*hit) [fixme_from_address])); -+ } -+ } -+ mimetype = "message/rfc822"; // to handle attachment results -+ break; -+ case MUSIC: -+ uri = hit->getUri (); -+ title = (*hit) [exactfilename]; -+ { -+ QString artist = (*hit) [fixme_artist]; -+ QString album = (*hit) [fixme_album]; -+ if (! artist.isEmpty ()) -+ info = (i18n("By %1").arg(artist)); -+ else if (! album.isEmpty ()) -+ info = (i18n("From Album %1").arg(album)); -+ else { -+ QString uristr = uri.path (); -+ int last_slash = uristr.findRev ('/', -1); -+ info = i18n("Folder: %1") -+ .arg(last_slash == 0 ? "/" : uristr.section ('/', -2, -2)); -+ } -+ } -+ break; -+ case VIDEOS: -+ uri = hit->getUri (); -+ title = (*hit) [exactfilename]; -+ { -+ QString uristr = uri.path (); -+ int last_slash = uristr.findRev ('/', -1); -+ info = i18n("Folder: %1").arg(last_slash == 0 ? "/" : uristr.section ('/', -2, -2)); -+ } -+ break; -+ case WEBHIST: -+ uri = hit->getUri (); -+ title = (*hit) [dc_title]; -+ title = title.replace(QRegExp("\n")," "); -+ mimetype = "text/html"; -+ if (title.isEmpty () || title.stripWhiteSpace ().isEmpty ()) { -+ title = uri.prettyURL (); -+ } else { -+ info = uri.host () + uri.path (); -+ } -+ break; -+ case FEEDS: -+ { -+ uri = KURL ((*hit) [dc_identifier]); -+ title = (*hit) [dc_title]; -+ mimetype = "text/html"; -+ QString publisher = (*hit) [dc_publisher]; -+ QString source = (*hit) [dc_source]; -+ if (! publisher.isEmpty ()) -+ info = publisher; -+ else if (! source.isEmpty ()) -+ info = source; -+ } -+ break; -+ case PICS: -+ { -+ uri = hit->getUri (); -+ title = (*hit) [exactfilename]; -+ QString width = (*hit) [fixme_width]; -+ QString height = (*hit) [fixme_height]; -+ if (width.isEmpty () || height.isEmpty ()) { -+ QString uristr = uri.path (); -+ int last_slash = uristr.findRev ('/', -1); -+ info = i18n("Folder: %1") -+ .arg(last_slash == 0 ? "/" : uristr.section ('/', -2, -2)); -+ break; -+ } -+ info = (QString (" (%1x%2)").arg (width).arg (height)); -+ const QStringList *tags = hit->getProperties (digikam_tag); -+ if (tags == NULL) -+ break; -+ QString tags_string = tags->join (comma_string); -+ info += (" " + tags_string); -+ } -+ break; -+ case APPS: -+ { -+ uri = hit->getUri (); -+ title = (*hit) [dc_title]; -+ KDesktopFile desktopfile(uri.path(),true); -+ if (genericTitle && !desktopfile.readGenericName().isEmpty()) { -+ title = desktopfile.readGenericName(); -+ info = desktopfile.readName(); -+ } -+ else { -+ title = desktopfile.readName(); -+ info = desktopfile.readGenericName(); -+ } -+ icon = desktopfile.readIcon(); -+ QString input = current_query_str.lower(); -+ QString command = desktopfile.readEntry("Exec"); -+ if (command==input) -+ score = 100; -+ else if (command.find(input)==0) -+ score = 50; -+ else if (command.find(input)!=-1) -+ score = 10; -+ else if (title==input) -+ score = 100; -+ else if (title.find(input)==0) -+ score = 50; -+ else if (title.find(input)!=-1) -+ score = 10; -+ break; -+ } -+ break; -+ case NOTES: -+ { -+ uri = hit->getUri (); -+ title = (*hit) [dc_title]; -+ title = i18n("Title: %1").arg(title.isEmpty() ? i18n("Untitled") : title); -+ -+ if (hit->getSource()=="KNotes") -+ icon="knotes"; -+ else -+ icon="contents2"; -+ } -+ break; -+ case CHATS: -+ { -+ uri = hit->getUri (); -+ title = (*hit) [fixme_speakingto]; -+ title = i18n("Conversation With %1").arg(title.isEmpty() ? i18n("Unknown Person") : title); -+ QDateTime datetime; -+ datetime = datetimeFromString((*hit) [fixme_starttime]); -+ info=i18n("Date: %1").arg(KGlobal::locale()->formatDateTime(datetime,false)); -+ if (hit->getMimeType()=="beagle/x-kopete-log") -+ icon="kopete"; -+ else -+ icon="gaim"; -+ } -+ break; -+ case DOCS: -+ { -+ uri = hit->getUri (); -+ title = (*hit) [dc_title]; -+ if (title.isEmpty () || title.stripWhiteSpace ().isEmpty ()) -+ title = uri.prettyURL (); -+ else { -+ QString uristr = uri.path (); -+ int last_slash = uristr.findRev ('/', -1); -+ info = i18n("Folder: %1").arg(last_slash == 0 ? "/" : uristr.section ('/', -+ -2, -2)); -+ } -+ } -+ break; -+ default: -+ return NULL; -+ } -+ if (mimetype.isEmpty ()) -+ mimetype = hit->getMimeType (); -+ return new HitMenuItem (title, info, uri, mimetype, 0, category, icon, score); -+} -+ -+void KickoffBeaglePlugin::showResults(BeagleSearchResult *result) -+{ -+ if (result->total == 0 ) { -+ // Dont report error from here ... -+ kdDebug() << "No matches found" << endl; -+ delete result; -+ return; -+ } -+ -+ const QPtrList<Hit> *hits = result->getHits(); -+ if (hits == NULL) { -+ kdDebug () << "Hmm... null" << endl; -+ delete result; -+ return; -+ } -+ kickoffSearchInterface()->initCategoryTitlesUpdate(); -+ -+ QPtrListIterator<Hit> it (*hits); -+ Hit *hit; -+ for (; (hit = it.current ()) != NULL; ++it) { -+ CATEGORY category = getHitCategory (hit); -+ -+ // if category is not handled, continue -+ if (category == OTHER) -+ continue; -+ -+ if ( category == APPS ) { -+ // we need to check if this is useful -+ KService cs( hit->getUri().path() ); -+ if ( cs.noDisplay() ) -+ continue; -+ } -+ -+ if (!kickoffSearchInterface()->anotherHitMenuItemAllowed(category)) -+ continue; -+ -+ HitMenuItem *hit_item = hitToHitMenuItem (category, hit); -+ -+ if (!hit_item) -+ continue; -+ -+ kickoffSearchInterface()->addHitMenuItem(hit_item); -+ } -+ -+ kickoffSearchInterface()->updateCategoryTitles(); -+ -+ delete result; -+} -+ -+QDateTime KickoffBeaglePlugin::datetimeFromString( const QString& s) -+{ -+ int year( s.mid( 0, 4 ).toInt() ); -+ int month( s.mid( 4, 2 ).toInt() ); -+ int day( s.mid( 6, 2 ).toInt() ); -+ int hour( s.mid( 8, 2 ).toInt() ); -+ int min( s.mid( 10, 2 ).toInt() ); -+ int sec( s.mid( 12, 2 ).toInt() ); -+ return QDateTime(QDate(year,month,day),QTime(hour,min,sec)); -+} -+ -+#include "kickoff-beagle-plugin.moc" ---- kicker/plugins/Makefile.am (Revision 0) -+++ kicker/plugins/Makefile.am (Revision 849791) -@@ -0,0 +1,24 @@ -+INCLUDES = -I$(top_srcdir)/interfaces $(all_includes) $(LIBBEAGLE_CFLAGS) $(GLIB_CFLAGS) -+METASOURCES = AUTO -+ -+# Install this plugin in the KDE modules directory -+kde_module_LTLIBRARIES = kickoffsearch_beagle.la -+ -+# Srcs for the plugin -+kickoffsearch_beagle_la_SOURCES = kickoff-beagle-plugin.cpp beaglesearch.cpp -+ -+# Libs needed by the plugin -+kickoffsearch_beagle_la_LIBADD = $(LIB_KPARTS) ../interfaces/libkickoffsearch_interfaces.la \ -+ $(LIBBEAGLE_LIBADD) $(GLIB_LIBADD) -+ -+# LD flags for the plugin -+# -module says: this is a module, i.e. something you're going to dlopen -+# so e.g. it has no version number like a normal shared lib would have. -+kickoffsearch_beagle_la_LDFLAGS = -module $(KDE_PLUGIN) $(all_libraries) -+ -+# Install the desktop file needed to detect the plugin -+kde_services_DATA = kickoffsearch_beagle.desktop -+ -+# i18n translation messages -+messages: rc.cpp -+ $(XGETTEXT) *.cpp *.h -o $(podir)/kickoffsearch_beagle.pot ---- kicker/plugins/kickoffsearch_beagle.desktop (Revision 0) -+++ kicker/plugins/kickoffsearch_beagle.desktop (Revision 849791) -@@ -0,0 +1,6 @@ -+[Desktop Entry] -+Name=Beagle Search -+Comment=Beagle search plugin for Kickoff search -+ServiceTypes=KickoffSearch/Plugin -+Type=Service -+X-KDE-Library=kickoffsearch_beagle ---- kicker/plugins/beaglesearch.h (Revision 0) -+++ kicker/plugins/beaglesearch.h (Revision 849791) -@@ -0,0 +1,234 @@ -+/***************************************************************** -+ -+ Copyright (c) 2006 Debajyoti Bera <dbera.web@gmail.com> -+ -+ This program is free software; you can redistribute it and/or -+ modify it under the terms of the GNU General Public -+ License as published by the Free Software Foundation; either -+ version 2 of the License, or (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; see the file COPYING. If not, write to -+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ Boston, MA 02110-1301, USA. -+ -+******************************************************************/ -+ -+#ifndef BEAGLESEARCH_H -+#define BEAGLESEARCH_H -+ -+#include <qdict.h> -+#include <qptrlist.h> -+#include <qthread.h> -+#include <qevent.h> -+#include <qmutex.h> -+ -+#include <kdebug.h> -+#include <kurl.h> -+ -+extern "C" { -+#include <glib.h> -+#include <beagle/beagle.h> -+} -+ -+// BeagleSearchClient sends 3 types of events -+// when results are to be sent as they arrive, -+// - RESULTFOUND : when result is found -+// - SEARCHOVER : when search is over -+// - KILLME : just before thread finishes - used to cleanup the thread object -+// when results are to be sent after receiving all of them -+// - RESULTFOUND : when all results are obtained -+// - KILLME : just before thread finishes - used to cleanup the thread object -+#define RESULTFOUND (QEvent::Type)1001 /* QEvent::User + 1 */ -+#define SEARCHOVER (QEvent::Type)1002 /* QEvent::User + 2 */ -+#define KILLME (QEvent::Type)1003 /* QEvent::User + 3 */ -+ -+class QStringList; -+ -+// IMPORTANT: Call this before any beagle calls -+void beagle_init (); -+ -+class Hit { -+public: -+ Hit (BeagleHit *_hit); -+ ~Hit (); -+ -+ // convenience wrappers -+ // remember that the hit values are utf8 strings -+ const KURL getUri () const { return KURL (QString::fromUtf8 (beagle_hit_get_uri (hit)));} -+ const QString getType () const { return QString::fromUtf8 (beagle_hit_get_type (hit));} -+ const QString getMimeType () const { return QString::fromUtf8 (beagle_hit_get_mime_type (hit));} -+ const QString getSource () const { return QString::fromUtf8 (beagle_hit_get_source (hit));} -+ const KURL getParentUri () const { return KURL (QString::fromUtf8 (beagle_hit_get_parent_uri (hit)));} -+ const QDict<QStringList>& getAllProperties () -+ { -+ if (! processed) -+ processProperties (); -+ return property_map; -+ } -+ const QStringList* getProperties (QString prop_name) -+ { -+ if (! processed) -+ processProperties (); -+ return property_map [prop_name]; -+ } -+ const QString operator[] (QString prop_name); -+ -+private: -+ BeagleHit *hit; -+ QDict<QStringList> property_map; -+ // not every hit may be used. so, do a lazy processing of property_map -+ bool processed; -+ void processProperties (); -+}; -+ -+class BeagleSearchResult{ -+public: -+ BeagleSearchResult(int client_id); -+ ~BeagleSearchResult(); -+ void addHit (BeagleHit *hit); -+ QString getHitCategory (Hit *hit); -+ -+ // id of the bsclient -+ int client_id; -+ // time taken to finish query -+ int query_msec; -+ // total number of results in this query -+ int total; -+ -+ const QPtrList<Hit> *getHits () const; -+ -+private: -+ // lists of hits -+ QPtrList<Hit> *hitlist; -+}; -+ -+// caller should delete bsclient->result and bsclient -+class BeagleSearchClient : public QThread { -+public: -+ // passing NULL for client makes bsclient create client itself and -+ // delete it later -+ BeagleSearchClient (int id, -+ QObject *y, -+ BeagleClient *client, -+ BeagleQuery *query, -+ bool collate_results) -+ : id (id), kill_me (false), object (y), client (client), -+ query (query), destroy_client (false), collate_results (collate_results) -+ { -+ if (client == NULL) { -+ client = beagle_client_new (NULL); -+ destroy_client = true; -+ } -+ -+// if (client == NULL) -+// throw -1; -+ -+ main_loop = g_main_loop_new (NULL, FALSE); -+ if (collate_results) -+ result = new BeagleSearchResult (id); -+ -+ client_mutex = new QMutex (); -+ } -+ -+ // It is never safe to delete BeagleSearchClient directly, the thread might still be running -+ ~BeagleSearchClient () -+ { -+ if (! finished ()) { -+ kdDebug () << "Thread " << id << " still running. Waiting.........." << endl; -+ wait (); -+ } -+ -+ if (destroy_client) -+ g_object_unref (client); -+ g_main_loop_unref (main_loop); -+ g_object_unref (query); -+ kdDebug() << "Deleting client ..." << id << endl; -+ delete client_mutex; -+ } -+ -+private: -+ static void hitsAddedSlot (BeagleQuery *query, -+ BeagleHitsAddedResponse *response, -+ BeagleSearchClient *bsclient); -+ -+ static void finishedSlot (BeagleQuery *query, -+ BeagleFinishedResponse *response, -+ BeagleSearchClient *bsclient); -+ -+public: -+ // run() starts the query and sends the result as follows: -+ // - either wait till get back all results and send it as RESULTFOUND -+ // - or, send results as it gets them as RESULTFOUND and -+ // send SEARCHOVER when finished -+ // collate_results controls the behaviour -+ virtual void run ( ); -+ -+ // after stopClient() is called, application can safely go and remove previous menu entries -+ // - i.e. after stopClient is called, app doesnt except the eventhandler to receive any results -+ // - use client_id to determine which is the current client, set it right after stopclient -+ // - Eventhandler checks client id, if it is current, it adds stuff to the menu -+ // else, it discards everything -+ // Once eventhandler is being processed, doQuery() wont be called and vice versa -+ // so no need to serialize eventhandler and doquery -+ // -+ // stopClient needs to make sure that once it is called, the thread is finished asap. Use a mutex -+ // to serialize actions. callbacks need to use mutex too. -+ // stopclient has to remove signal handlers to prevent further signal calls, set kill_me flag -+ // and quite main loop -+ // stopClient can be called at the following times: -+ // - Waiting for the first result: -+ // nothing extra -+ // - in hitsAddedSlot, processing results -+ // in callback, before processing, if killme is set, just return. -+ // - in hitsAddedSlot, after sending results -+ // before sending, if killme is set, dont send results -+ // (doing it twice in hitsAdded because forming BeagleSearchResult can take time) -+ // - Waiting for more results -+ // nothing extra -+ // - in finishedSlot, before sending finishedMsg -+ // if killme is set, just return -+ // - in finishedSlot, after sending finishedMsg -+ // if killme is set, just return -+ // in Run(), when return from mainloop, if killme is set, dont do anything more but call delete this -+ void stopClient (); -+ -+ // id of the client -+ // this is required in case applications fires many clients in rapid succession -+ int id; -+ -+ GMainLoop * main_loop; -+ BeagleSearchResult *result; -+ -+ // this is set if the client is obsolete now i.e. -+ // the application doesnt need the results from the client anymore -+ bool kill_me; -+private: -+ // the application; need this to send events to the application -+ QObject *object; -+ // mutex to control setting the kill_me shared variable -+ QMutex *client_mutex; -+ BeagleClient *client; -+ BeagleQuery *query; -+ // should the client be destroyed by the client -+ // if the client created it, then most probably it should -+ bool destroy_client; -+ bool collate_results; -+}; -+ -+class BeagleUtil { -+public: -+ -+ static BeagleQuery *createQueryFromString (QString query_str, -+ QStringList &sources, -+ QStringList &types, -+ int max_hits_per_source = 100); -+ static BeagleTimestamp *timestringToBeagleTimestamp (QString timestring); -+}; -+ -+#endif ---- kicker/plugins/kickoff-beagle-plugin.h (Revision 0) -+++ kicker/plugins/kickoff-beagle-plugin.h (Revision 849791) -@@ -0,0 +1,64 @@ -+/*************************************************************************** -+ * Copyright (C) 2006 by Stephan Binner <binner@kde.org> * -+ * Copyright (c) 2006 Debajyoti Bera <dbera.web@gmail.com> * -+ * * -+ * This program is free software; you can redistribute it and/or modify * -+ * it under the terms of the GNU General Public License as published by * -+ * the Free Software Foundation; either version 2 of the License, or * -+ * (at your option) any later version. * -+ * * -+ * This program is distributed in the hope that it will be useful, * -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of * -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -+ * GNU General Public License for more details. * -+ * * -+ * You should have received a copy of the GNU General Public License * -+ * along with this program; if not, write to the * -+ * Free Software Foundation, Inc., * -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * -+ ***************************************************************************/ -+ -+#ifndef CAPITALIZEPLUGIN_H -+#define CAPITALIZEPLUGIN_H -+ -+#include "../interfaces/kickoff-search-plugin.h" -+#include "beaglesearch.h" -+ -+class KickoffBeaglePlugin :public KickoffSearch::Plugin -+{ -+ Q_OBJECT -+ -+public: -+ KickoffBeaglePlugin(QObject *parent, const char* name, const QStringList&); -+ -+ void query(QString, bool); -+ bool daemonRunning(); -+ -+protected slots: -+ // to clean beaglesearchclients -+ void cleanClientList (); -+ -+private: -+ QString current_query_str; -+ -+ // all beagle activity is done through the BSC object -+ BeagleSearchClient *current_beagle_client; -+ -+ // used to send notification from the beagle thread to the main event loop -+ virtual void customEvent (QCustomEvent *e); -+ -+ QPtrList<BeagleSearchClient> toclean_client_list; -+ QMutex toclean_list_mutex; -+ -+ // show the results -+ void showResults (BeagleSearchResult *); -+ HitMenuItem *hitToHitMenuItem (int category, Hit *hit); -+ -+ // use a different id for each bsc client, and use that to separate stale responses from current ones -+ int current_beagle_client_id; -+ -+ bool genericTitle; -+ QDateTime datetimeFromString( const QString& ); -+}; -+ -+#endif /* CAPITALIZEPLUGIN_H */ - -Eigenschaftsänderungen: kicker/plugins -___________________________________________________________________ -Hinzugefügt: svn:ignore - + .deps -kickoffsearch_beagle.la -.libs -Makefile -Makefile.in -*.moc - - ---- kicker/Makefile.am 2010/08/10 08:10:21 1.1 -+++ kicker/Makefile.am 2010/08/10 08:10:33 -@@ -1,6 +1,6 @@ - INCLUDES = $(all_includes) - --SUBDIRS = core ui buttons interfaces . -+SUBDIRS = core ui buttons interfaces plugins . - - bin_PROGRAMS = - lib_LTLIBRARIES = ---- kicker/core/Makefile.am 2010/08/10 08:15:06 1.2 -+++ kicker/core/Makefile.am 2010/08/10 08:17:08 -@@ -1,6 +1,6 @@ - INCLUDES = -I$(srcdir)/../../libkicker -I../../libkicker \ - -I../ui -I$(srcdir)/../ui -I$(srcdir)/../buttons -I$(top_srcdir)/libkonq \ -- $(all_includes) -+ $(all_includes) $(LIBBEAGLE_CFLAGS) $(GLIB_CFLAGS) - - noinst_LTLIBRARIES = libkicker_core.la - ---- kicker/buttons/Makefile.am 2010/08/10 08:16:06 1.1 -+++ kicker/buttons/Makefile.am 2010/08/10 08:16:28 -@@ -1,5 +1,5 @@ - INCLUDES = -I$(srcdir)/../core -I$(srcdir)/../../libkicker -I../../libkicker \ -- -I../ui -I$(srcdir)/../ui -I$(top_srcdir)/libkonq $(all_includes) -+ -I../ui -I$(srcdir)/../ui -I$(top_srcdir)/libkonq $(all_includes) $(LIBBEAGLE_CFLAGS) $(GLIB_CFLAGS) - - noinst_LTLIBRARIES = libkicker_buttons.la - diff --git a/opensuse/tdebase/kickoff-data.tar.bz2 b/opensuse/tdebase/kickoff-data.tar.bz2 Binary files differdeleted file mode 100644 index 9841a0aa0..000000000 --- a/opensuse/tdebase/kickoff-data.tar.bz2 +++ /dev/null diff --git a/opensuse/tdebase/kickoff-install-software.diff b/opensuse/tdebase/kickoff-install-software.diff deleted file mode 100644 index f053a45fb..000000000 --- a/opensuse/tdebase/kickoff-install-software.diff +++ /dev/null @@ -1,25 +0,0 @@ ---- kicker/kicker/ui/k_new_mnu.cpp 2007/08/08 15:14:50 1.141 -+++ kicker/kicker/ui/k_new_mnu.cpp 2007/08/08 15:39:58 -@@ -1345,6 +1345,9 @@ - KService::Ptr p = KService::serviceByStorageId("/usr/share/applications/YaST.desktop"); - m_systemView->insertMenuItem(p, nId++, index++); - -+ p = KService::serviceByStorageId("/usr/share/applications/package-manager.desktop"); -+ m_systemView->insertMenuItem(p, nId++, index++); -+ - m_systemView->insertItem( "info", i18n( "System Information" ), - "sysinfo:/", "sysinfo:/", nId++, index++ ); - ---- kicker/kicker/ui/itemview.cpp 2007/08/08 15:14:50 1.141 -+++ kicker/kicker/ui/itemview.cpp 2007/08/08 15:59:35 -@@ -139,7 +139,9 @@ - void KMenuItem::setIcon(const QString& icon, int size) - { - m_icon = icon; -- QListViewItem::setPixmap(0, KGlobal::iconLoader()->loadIcon(icon, KIcon::Panel, size )); -+ QPixmap pixmap = KGlobal::iconLoader()->loadIcon(icon, KIcon::Panel, size, KIcon::DefaultState, 0L, true); -+ if (!pixmap.isNull()) -+ QListViewItem::setPixmap(0, pixmap); - } - - void KMenuItem::setHasChildren( bool flag ) diff --git a/opensuse/tdebase/kickoff-kcm.diff b/opensuse/tdebase/kickoff-kcm.diff deleted file mode 100644 index 1dd87afde..000000000 --- a/opensuse/tdebase/kickoff-kcm.diff +++ /dev/null @@ -1,217 +0,0 @@ ---- menutab_impl.h (revision 755866) -+++ menutab_impl.h (revision 774645) -@@ -62,6 +62,7 @@ signals: - - public slots: - void launchMenuEditor(); -+ void menuStyleChanged(); - - protected: - kSubMenuItem *m_bookmarkMenu; ---- kicker_config_hiding.desktop (revision 755866) -+++ kicker_config_hiding.desktop (revision 774645) -@@ -146,7 +146,7 @@ Keywords[csb]=kicker,panel,kpanel,lëstà - Keywords[cy]=ciciwr,kicker,panel,kpanel,bar tasgau,bar cychwyn,bar lansio,lleoliad,maint,awto-guddio,hunan-guddio,cuddio,botymau,animeiddiad,cefndir,themâu,storfa dewislen, storfa,cache,celc,cudd,K-Menu,nodau tudalen,dogfenni diweddar,porydd cyflym,dewislen porydd,dewislen,eiconau,teiliau,rhaglenigion,ymcychwyn,amlygu,carnau,eiconau chwyddo - Keywords[da]=kicker,panel,kpanel,opgavelinje,startlinje,sted,størrelse,autogem,gem,knapper,animering,baggrund,temaer,menucache,cache,skjult,K-Menu,bogmærker,nylige dokumenter,hurtigsøger,søgemenu,menu,ikoner,fliser,panelprogrammer,opstart,markér,hÃ¥ndterer,ikoner - Keywords[de]=Kicker,Panel,Taskbar,Kontrollleiste,Startleiste,Klickstartleiste,Fensterleiste,Autom. ausblenden,Ausblenden, Knöpfe,Animation,Hintergründe,Stile,Design,Themes,Menü-Zwischenspeicher, K-Menü,Zwischenspeicher,Lesezeichen,Zuletzt geöffnete Dateien, Schnellanzeiger,Menüs,Symbole,Icons,Kacheln,Applets,Miniprogramme, Java-Miniprogramme,Hervorhebung,Anfasser,Sicherheitsstufen,Zoom für Symbole --Keywords[el]=kicker,πίνακας,kpanel,γÏαμμή εÏγασιών,γÏαμμή ÎναÏξης,γÏαμμή εκκίνησης,τοποθεσία,μÎγεθος,αυτόματη απόκÏυψη,απόκÏυψη,κουμπιά,εφΠκίνησης,φόντο,θÎματα,λανθάνουσα μνήμη μενοÏ,λανθάνουσα μνήμη,κÏυφό, K-ΜενοÏ,σελιδοδείκτες,Ï€Ïόσφατα ÎγγÏαφα,γÏήγοÏος εξεÏευνητής,Î¼ÎµÎ½Î¿Ï ÎµÎ¾ÎµÏευνητή,μενοÏ,εικονίδια,tiles,μικÏοεφαÏμογÎÏ‚,ÎναÏξη,τονισμός,χειÏιστήÏια, μεγÎθυνση εικονιδίων -+Keywords[el]=kicker,πίνακας,kpanel,γÏαμμή εÏγασιών,γÏαμμή ÎναÏξης,γÏαμμή εκκίνησης,τοποθεσία,μÎγεθος,αυτόματη απόκÏυψη,απόκÏυψη,κουμπιά,εφΠκίνησης,φόντο,θÎματα,λανθάνουσα μνήμη μενοÏ,λανθάνουσα μνήμη,κÏυφό, K-ΜενοÏ,σελιδοδείκτες,Ï€Ïόσφατα ÎγγÏαφα,γÏήγοÏος εξεÏευνητής,Î¼ÎµÎ½Î¿Ï ÎµÎ¾ÎµÏευνητή,μενοÏ,εικονίδια,tiles,εφαÏμογίδια,ÎναÏξη,τονισμός,χειÏιστήÏια, μεγÎθυνση εικονιδίων - Keywords[eo]=lanĉilo,panelo,tasklistelo,situo,grandeco,aÅtokaÅo,kaÅo,butono,fono,etoso,menubufro,K-Menuo,legosigno,lasta dokumento,rapidrigardilo,rigardmenuo,piktogramo,kahelo,aplikaĵo,lanĉo,emfazo,teniloj,pligrandigo,fidindaj aplikaĵetoj,sekurecnivelo - Keywords[es]=kicker,panel,kpanel,barra de tareas,barra de inicio,barra de lanzamiento,dirección,tamaño,auto ocultar,ocultar,botones,animación,fondo,temas,caché de menú,caché,oculto,Menú K,marcadores,documentos recientes,navegador rápido,menú navegador,menú,iconos,mosaicos,miniaplicaciones,arranque,resaltado,asas,iconos ampliados - Keywords[et]=kicker,paneel,kpanel,tegumiriba,käivitusriba,asukoht,suurus,terminal,automaatne peitmine,peitmine,nupud,animatsioon,taust,teemad,menüü vahemälu,vahemälu,peidetud,K-menüü,järjehoidjad,viimati kasutatud dokumendid, kiirbrauser,lehitsemise menüü,menüü,ikoonid,apletid,käivitamine,esiletõstmine,piirded,ikoonide suurendamine,usaldusväärsed apletid,turvatase ---- menutab_impl.cpp (revision 755866) -+++ menutab_impl.cpp (revision 774645) -@@ -16,12 +16,16 @@ - */ - - #include <qcheckbox.h> -+#include <qgroupbox.h> - #include <qdir.h> - #include <qlabel.h> - #include <qlayout.h> - #include <qpushbutton.h> - #include <qradiobutton.h> -+#include <qcombobox.h> -+#include <qbuttongroup.h> - -+#include <dcopref.h> - #include <kapplication.h> - #include <kdebug.h> - #include <kdesktopfile.h> -@@ -123,12 +127,41 @@ void MenuTab::load( bool useDefaults ) - } - } - -+ c->setGroup("General"); -+ m_comboMenuStyle->setCurrentItem( c->readBoolEntry("LegacyKMenu", false) ? 1 : 0 ); -+ m_openOnHover->setChecked( c->readBoolEntry("OpenOnHover", true) ); -+ menuStyleChanged(); -+ -+ connect(m_comboMenuStyle, SIGNAL(activated(int)), SIGNAL(changed())); -+ connect(m_comboMenuStyle, SIGNAL(activated(int)), SLOT(menuStyleChanged())); -+ connect(m_openOnHover, SIGNAL(clicked()), SIGNAL(changed())); -+ - m_showFrequent->setChecked(true); - - if ( useDefaults ) - emit changed(); - } - -+void MenuTab::menuStyleChanged() -+{ -+ if (m_comboMenuStyle->currentItem()==1) { -+ m_openOnHover->setEnabled(false); -+ m_subMenus->setEnabled(true); -+ kcfg_UseSidePixmap->setEnabled(true); -+ kcfg_MenuEntryFormat->setEnabled(true); -+ kcfg_RecentVsOften->setEnabled(true); -+ m_showFrequent->setEnabled(true); -+ } -+ else { -+ m_openOnHover->setEnabled(true); -+ m_subMenus->setEnabled(false); -+ kcfg_UseSidePixmap->setEnabled(false); -+ kcfg_MenuEntryFormat->setEnabled(false); -+ kcfg_RecentVsOften->setEnabled(false); -+ m_showFrequent->setEnabled(false); -+ } -+} -+ - void MenuTab::save() - { - KSharedConfig::Ptr c = KSharedConfig::openConfig(KickerConfig::the()->configName()); -@@ -154,8 +187,17 @@ void MenuTab::save() - } - } - c->writeEntry("Extensions", ext); -+ c->setGroup("General"); - -+ bool kmenusetting = m_comboMenuStyle->currentItem()==1; -+ bool oldkmenusetting = c->readBoolEntry("LegacyKMenu", false); -+ -+ c->writeEntry("LegacyKMenu", kmenusetting); -+ c->writeEntry("OpenOnHover", m_openOnHover->isChecked()); - c->sync(); -+ -+ if (kmenusetting != oldkmenusetting) -+ DCOPRef ("kicker", "default").call("restart()"); - } - - void MenuTab::defaults() ---- menutab.ui (revision 755866) -+++ menutab.ui (revision 774645) -@@ -8,8 +8,8 @@ - <rect> - <x>0</x> - <y>0</y> -- <width>410</width> -- <height>437</height> -+ <width>923</width> -+ <height>649</height> - </rect> - </property> - <vbox> -@@ -19,6 +19,59 @@ - <property name="margin"> - <number>0</number> - </property> -+ <widget class="QLayoutWidget"> -+ <property name="name"> -+ <cstring>layout5</cstring> -+ </property> -+ <hbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <widget class="QLabel"> -+ <property name="name"> -+ <cstring>textLabel1</cstring> -+ </property> -+ <property name="text"> -+ <string>Start menu style:</string> -+ </property> -+ <property name="buddy" stdset="0"> -+ <cstring>comboMenuStyle</cstring> -+ </property> -+ </widget> -+ <widget class="QComboBox"> -+ <item> -+ <property name="text"> -+ <string>SUSE</string> -+ </property> -+ </item> -+ <item> -+ <property name="text"> -+ <string>KDE</string> -+ </property> -+ </item> -+ <property name="name"> -+ <cstring>m_comboMenuStyle</cstring> -+ </property> -+ </widget> -+ <spacer> -+ <property name="name"> -+ <cstring>spacer4</cstring> -+ </property> -+ <property name="orientation"> -+ <enum>Horizontal</enum> -+ </property> -+ <property name="sizeType"> -+ <enum>Expanding</enum> -+ </property> -+ <property name="sizeHint"> -+ <size> -+ <width>40</width> -+ <height>20</height> -+ </size> -+ </property> -+ </spacer> -+ </hbox> -+ </widget> - <widget class="QGroupBox"> - <property name="name"> - <cstring>m_kmenuGroup</cstring> -@@ -38,6 +91,14 @@ - <property name="name"> - <cstring>unnamed</cstring> - </property> -+ <widget class="QCheckBox" row="0" column="0"> -+ <property name="name"> -+ <cstring>m_openOnHover</cstring> -+ </property> -+ <property name="text"> -+ <string>Open menu on mouse hover</string> -+ </property> -+ </widget> - <widget class="QButtonGroup"> - <property name="name"> - <cstring>kcfg_MenuEntryFormat</cstring> -@@ -377,6 +438,8 @@ - </widget> - </vbox> - </widget> -+<customwidgets> -+</customwidgets> - <tabstops> - <tabstop>m_formatSimple</tabstop> - <tabstop>m_formatNameDesc</tabstop> -@@ -400,8 +463,5 @@ - <includehints> - <includehint>klistview.h</includehint> - <includehint>knuminput.h</includehint> -- <includehint>knuminput.h</includehint> -- <includehint>knuminput.h</includehint> -- <includehint>knuminput.h</includehint> - </includehints> - </UI> ---- kicker_config_menus.desktop (revision 755866) -+++ kicker_config_menus.desktop (revision 774645) -@@ -143,7 +143,7 @@ Keywords[csb]=kicker,panel,kpanel,lëstà - Keywords[cy]=ciciwr,kicker,panel,kpanel,bar tasgau,bar cychwyn,bar lansio,lleoliad,maint,awto-guddio,hunan-guddio,cuddio,botymau,animeiddiad,cefndir,themâu,storfa dewislen, storfa,cache,celc,cudd,K-Menu,nodau tudalen,dogfenni diweddar,porydd cyflym,dewislen porydd,dewislen,eiconau,teiliau,rhaglenigion,ymcychwyn,amlygu,carnau,eiconau chwyddo - Keywords[da]=kicker,panel,kpanel,opgavelinje,startlinje,sted,størrelse,autogem,gem,knapper,animering,baggrund,temaer,menucache,cache,skjult,K-Menu,bogmærker,nylige dokumenter,hurtigsøger,søgemenu,menu,ikoner,fliser,panelprogrammer,opstart,markér,hÃ¥ndterer,ikoner - Keywords[de]=Kicker,Panel,Taskbar,Kontrollleiste,Startleiste,Klickstartleiste,Fensterleiste,Autom. ausblenden,Ausblenden, Knöpfe,Animation,Hintergründe,Stile,Design,Themes,Menü-Zwischenspeicher, K-Menü,Zwischenspeicher,Lesezeichen,Zuletzt geöffnete Dateien, Schnellanzeiger,Menüs,Symbole,Icons,Kacheln,Applets,Miniprogramme, Java-Miniprogramme,Hervorhebung,Anfasser,Sicherheitsstufen,Zoom für Symbole --Keywords[el]=kicker,πίνακας,kpanel,γÏαμμή εÏγασιών,γÏαμμή ÎναÏξης,γÏαμμή εκκίνησης,τοποθεσία,μÎγεθος,αυτόματη απόκÏυψη,απόκÏυψη,κουμπιά,εφΠκίνησης,φόντο,θÎματα,λανθάνουσα μνήμη μενοÏ,λανθάνουσα μνήμη,κÏυφό, K-ΜενοÏ,σελιδοδείκτες,Ï€Ïόσφατα ÎγγÏαφα,γÏήγοÏος εξεÏευνητής,Î¼ÎµÎ½Î¿Ï ÎµÎ¾ÎµÏευνητή,μενοÏ,εικονίδια,tiles,μικÏοεφαÏμογÎÏ‚,ÎναÏξη,τονισμός,χειÏιστήÏια, μεγÎθυνση εικονιδίων -+Keywords[el]=kicker,πίνακας,kpanel,γÏαμμή εÏγασιών,γÏαμμή ÎναÏξης,γÏαμμή εκκίνησης,τοποθεσία,μÎγεθος,αυτόματη απόκÏυψη,απόκÏυψη,κουμπιά,εφΠκίνησης,φόντο,θÎματα,λανθάνουσα μνήμη μενοÏ,λανθάνουσα μνήμη,κÏυφό, K-ΜενοÏ,σελιδοδείκτες,Ï€Ïόσφατα ÎγγÏαφα,γÏήγοÏος εξεÏευνητής,Î¼ÎµÎ½Î¿Ï ÎµÎ¾ÎµÏευνητή,μενοÏ,εικονίδια,tiles,εφαÏμογίδια,ÎναÏξη,τονισμός,χειÏιστήÏια, μεγÎθυνση εικονιδίων - Keywords[eo]=lanĉilo,panelo,tasklistelo,situo,grandeco,aÅtokaÅo,kaÅo,butono,fono,etoso,menubufro,K-Menuo,legosigno,lasta dokumento,rapidrigardilo,rigardmenuo,piktogramo,kahelo,aplikaĵo,lanĉo,emfazo,teniloj,pligrandigo,fidindaj aplikaĵetoj,sekurecnivelo - Keywords[es]=kicker,panel,kpanel,barra de tareas,barra de inicio,barra de lanzamiento,dirección,tamaño,auto ocultar,ocultar,botones,animación,fondo,temas,caché de menú,caché,oculto,Menú K,marcadores,documentos recientes,navegador rápido,menú navegador,menú,iconos,mosaicos,miniaplicaciones,arranque,resaltado,asas,iconos ampliados - Keywords[et]=kicker,paneel,kpanel,tegumiriba,käivitusriba,asukoht,suurus,terminal,automaatne peitmine,peitmine,nupud,animatsioon,taust,teemad,menüü vahemälu,vahemälu,peidetud,K-menüü,järjehoidjad,viimati kasutatud dokumendid, kiirbrauser,lehitsemise menüü,menüü,ikoonid,apletid,käivitamine,esiletõstmine,piirded,ikoonide suurendamine,usaldusväärsed apletid,turvatase diff --git a/opensuse/tdebase/kickoff.diff b/opensuse/tdebase/kickoff.diff deleted file mode 100644 index e2d73f567..000000000 --- a/opensuse/tdebase/kickoff.diff +++ /dev/null @@ -1,9812 +0,0 @@ ---- taskbar/taskcontainer.cpp (Revision 849788) -+++ taskbar/taskcontainer.cpp (Revision 849791) -@@ -67,7 +67,11 @@ - discardNextMouseEvent(false), - aboutToActivate(false), - m_mouseOver(false), -- m_paintEventCompression(false) -+ animationTimer(0, "TaskContainer::animationTimer"), -+ dragSwitchTimer(0, "TaskContainer::dragSwitchTimer"), -+ attentionTimer(0, "TaskContainer::attentionTimer"), -+ m_paintEventCompression(false), -+ m_paintEventCompressionTimer(0, "TaskContainer::paintEventCompressionTimer") - { - init(); - setAcceptDrops(true); // Always enabled to activate task during drag&drop. -@@ -95,7 +99,11 @@ - discardNextMouseEvent(false), - aboutToActivate(false), - m_mouseOver(false), -- m_paintEventCompression(false) -+ animationTimer(0, "TaskContainer::animationTimer"), -+ dragSwitchTimer(0, "TaskContainer::dragSwitchTimer"), -+ attentionTimer(0, "TaskContainer::attentionTimer"), -+ m_paintEventCompression(false), -+ m_paintEventCompressionTimer(0, "TaskContainer::paintEventCompressionTimer") - { - init(); - setEnabled(false); ---- taskbar/taskbar.cpp 2009/11/20 21:00:26 1.1 -+++ taskbar/taskbar.cpp 2009/11/20 21:00:38 -@@ -59,7 +59,8 @@ - m_showIcon(false), - m_showOnlyIconified(false), - m_textShadowEngine(0), -- m_ignoreUpdates(false) -+ m_ignoreUpdates(false), -+ m_relayoutTimer(0, "TaskBar::m_relayoutTimer") - { - arrowType = LeftArrow; - blocklayout = true; ---- libkicker/panelbutton.h (Revision 849788) -+++ libkicker/panelbutton.h (Revision 849791) -@@ -254,9 +254,11 @@ - /** - * Sets the direction to pop up the contents of the button. - */ -- void setPopupDirection(KPanelApplet::Direction d); -+ virtual void setPopupDirection(KPanelApplet::Direction d); - - protected: -+ -+ void setIconAlignment(AlignmentFlags align); - /** - * Subclasses must implement this to define the name of the button which is - * used to identify this button for saving and loading. It must be unique -@@ -391,6 +393,7 @@ - QPixmap m_iconz; // mouse over - KPanelExtension::Position m_arrowDirection; - KPanelApplet::Direction m_popupDirection; -+ AlignmentFlags m_iconAlignment; - Orientation m_orientation; - int m_size; - double m_fontPercent; -@@ -419,12 +422,12 @@ - * Sets the button's popup menu. - * @param popup the menu to pop up - */ -- void setPopup(QPopupMenu *popup); -+ void setPopup(QWidget *popup); - - /** - * @return the button's popup menu - */ -- QPopupMenu *popup() const; -+ QWidget *popup() const; - - bool eventFilter(QObject *, QEvent *); - virtual void showMenu(); -@@ -459,8 +462,8 @@ - private slots: - void menuAboutToHide(); - --private: -- QPopupMenu *m_popup; -+protected: -+ QWidget *m_popup; - bool m_pressedDuringPopup; - bool m_initialized; - ---- libkicker/kickerSettings.kcfg (Revision 849788) -+++ libkicker/kickerSettings.kcfg (Revision 849791) -@@ -98,6 +98,70 @@ - <label>A list of extensions that have been loaded at runtime. In the case of a crash these extensions will not be loaded at the next Kicker start, in case they caused the crash</label> - </entry> - -+<entry name="LegacyKMenu" type="Bool" > -+ <label>When this option is enabled, the classic K Menu is used.</label> -+ <default>false</default> -+ </entry> -+ -+<entry name="OpenOnHover" type="Bool" > -+ <label>When this option is enabled, the SUSE Menu does open on mouse hover.</label> -+ <default>true</default> -+ </entry> -+ -+<entry name="ScrollFlipView" type="Bool" > -+ <label>When this option is enabled, the SUSE Menu application view switching will scroll.</label> -+ <default>true</default> -+ </entry> -+ -+<entry name="KMenuWidth" type="Int"> -+ <label>Preferred width of the KMenu</label> -+ <default>0</default> -+ </entry> -+ -+<entry name="KMenuHeight" type="Int"> -+ <label>Preferred width of the KMenu</label> -+ <default>0</default> -+ </entry> -+ -+<entry name="KickoffFontPointSizeOffset" type="Int" > -+ <label>With this option the scale of the fonts Kickoff uses can be influenced</label> -+ <default>0</default> -+ <min>-100</min> -+ <max>100</max> -+ </entry> -+ -+<entry name="KickoffSearchAddressBook" type="Bool" > -+ <label>When this option is enabled, kabc is utilized to search for addresses. This may start KMail.</label> -+ <default>false</default> -+ </entry> -+ -+<entry name="KickoffDrawGeekoEye" type="Bool" > -+ <label>When this option is enabled, the Geeko eye moves when the mouse hovers the start menu button</label> -+ <default>false</default> -+ </entry> -+ -+<entry name="KickoffTabBarFormat" type="Enum" > -+ <choices> -+ <choice name="LabelAndIcon"> -+ <label>Show names and icons on tabs</label> -+ </choice> -+ <choice name="LabelOnly"> -+ <label>Show only the names</label> -+ </choice> -+ <choice name="IconOnly"> -+ <label>Show only the icons</label> -+ </choice> -+ </choices> -+ <default>LabelAndIcon</default> -+ <label>Appearace of the Kickoff tabbar</label> -+ </entry> -+ -+<entry name="KickoffSwitchTabsOnHover" type="Bool" > -+ <label>When this option is enabled, the tabs in the Kickoff menu will switch without the need to click</label> -+ <default>true</default> -+ </entry> -+ -+ - </group> - - <group name="menus"> -@@ -172,6 +236,19 @@ - <default>false</default> - </entry> - -+<entry name="Favorites" type="StringList"> -+ <label>The menu entries shown in the Favorites tab</label> -+ </entry> -+ -+<entry name="FirstRun" type="Bool" > -+ <label>Whether the panel has been started before or not</label> -+ <default>false</default> -+ </entry> -+ -+<entry name="FirstSeenApps" type="StringList"> -+ <label>When the applications were first seen by Kickoff</label> -+ </entry> -+ - </group> - - <group name="button_tiles"> -@@ -337,6 +414,29 @@ - - </group> - -+ <group name="SearchField"> -+ <entry key="History" type="PathList"> -+ <default></default> -+ <label></label> -+ <whatsthis></whatsthis> -+ </entry> -+ <entry key="HistoryLength" type="Int"> -+ <default>50</default> -+ <label></label> -+ <whatsthis></whatsthis> -+ </entry> -+ <entry key="CompletionItems" type="PathList"> -+ <default></default> -+ <label></label> -+ <whatsthis></whatsthis> -+ </entry> -+ <entry key="CompletionMode" type="Int"> -+ <default>2</default> -+ <label></label> -+ <whatsthis></whatsthis> -+ </entry> -+ </group> -+ - </kcfg> - - ---- libkicker/kickertip.cpp (Revision 849788) -+++ libkicker/kickertip.cpp (Revision 849791) -@@ -38,6 +38,7 @@ - - // putting this #include higher results in compile errors - #include <netwm.h> -+#include <assert.h> - - static const int DEFAULT_FRAMES_PER_SECOND = 30; - -@@ -71,14 +72,16 @@ - m_dissolveDelta(-1), - m_direction(KPanelApplet::Up), - m_dirty(false), -- m_toolTipsEnabled(KickerSettings::showToolTips()), -- m_tippingFor(0) -+ m_tippingFor(0), -+ m_timer(0, "KickerTip::m_timer"), -+ m_frameTimer(0, "KickerTip::m_frameTimer") - { - setFocusPolicy(NoFocus); - setBackgroundMode(NoBackground); - resize(0, 0); - hide(); - connect(&m_frameTimer, SIGNAL(timeout()), SLOT(internalUpdate())); -+ connect(kapp, SIGNAL(settingsChanged(SettingsCategory)), SLOT(slotSettingsChanged())); - } - - KickerTip::~KickerTip() -@@ -87,6 +90,11 @@ - delete m_mimeFactory; - } - -+void KickerTip::slotSettingsChanged() -+{ -+ QToolTip::setGloballyEnabled(KickerSettings::showToolTips()); -+} -+ - void KickerTip::display() - { - if (!tippingEnabled()) -@@ -192,9 +200,7 @@ - - void KickerTip::mousePressEvent(QMouseEvent * /*e*/) - { -- QToolTip::setGloballyEnabled(m_toolTipsEnabled); - m_timer.stop(); -- m_frameTimer.stop(); - hide(); - } - -@@ -395,8 +401,11 @@ - m_tippingEnabled--; - } - -+ assert(m_tippingEnabled >= -1); -+ - if (m_tippingEnabled < 1 && m_self) - { -+ m_self->m_timer.stop(); - m_self->hide(); - } - } -@@ -411,6 +420,8 @@ - m_tippingFor = 0; - m_frameTimer.stop(); - QWidget::hide(); -+ -+ QToolTip::setGloballyEnabled(KickerSettings::showToolTips()); - } - - bool KickerTip::eventFilter(QObject *object, QEvent *event) -@@ -439,7 +450,6 @@ - !qApp->activePopupWidget() && - !isTippingFor(widget)) - { -- m_toolTipsEnabled = QToolTip::isGloballyEnabled(); - QToolTip::setGloballyEnabled(false); - - tipFor(widget); -@@ -461,8 +471,6 @@ - } - break; - case QEvent::Leave: -- QToolTip::setGloballyEnabled(m_toolTipsEnabled); -- - m_timer.stop(); - - if (isTippingFor(widget) && isVisible()) -@@ -475,9 +483,7 @@ - tipFor(0); - break; - case QEvent::MouseButtonPress: -- QToolTip::setGloballyEnabled(m_toolTipsEnabled); - m_timer.stop(); -- m_frameTimer.stop(); - hide(); - default: - break; ---- libkicker/kickertip.h (Revision 849788) -+++ libkicker/kickertip.h (Revision 849791) -@@ -92,6 +92,7 @@ - void tipperDestroyed(QObject* o); - void internalUpdate(); - void display(); -+ void slotSettingsChanged(); - - private: - QBitmap m_mask; -@@ -108,7 +109,6 @@ - QTimer m_timer; - QTimer m_frameTimer; - bool m_dirty; -- bool m_toolTipsEnabled; - - const QWidget* m_tippingFor; - ---- libkicker/panelbutton.cpp (Revision 849788) -+++ libkicker/panelbutton.cpp (Revision 849791) -@@ -42,6 +42,7 @@ - #include <kipc.h> - #include <kstandarddirs.h> - #include <klocale.h> -+#include <kdebug.h> - - #include "global.h" - -@@ -65,6 +66,7 @@ - m_hasAcceptedDrag(false), - m_arrowDirection(KPanelExtension::Bottom), - m_popupDirection(KPanelApplet::Up), -+ m_iconAlignment(AlignCenter), - m_orientation(Horizontal), - m_size((KIcon::StdSizes)-1), - m_fontPercent(0.40) -@@ -186,6 +188,12 @@ - setArrowDirection(KickerLib::directionToPopupPosition(d)); - } - -+void PanelButton::setIconAlignment(AlignmentFlags align) -+{ -+ m_iconAlignment = align; -+ update(); -+} -+ - void PanelButton::setOrientation(Orientation o) - { - m_orientation = o; -@@ -300,7 +308,9 @@ - - int PanelButton::heightForWidth(int width) const - { -- return preferredDimension(width); -+ int rc=preferredDimension(width); -+ -+ return rc; - } - - const QPixmap& PanelButton::labelIcon() const -@@ -556,11 +566,16 @@ - icon.height() - 2); - } - -+ int y = 0; -+ if (m_iconAlignment & AlignVCenter) -+ y = (height() - icon.height()) / 2; -+ else if (m_iconAlignment & AlignBottom) -+ y = (height() - icon.height()); -+ - if (!m_buttonText.isEmpty() && orientation() == Horizontal) - { - int h = height(); - int w = width(); -- int y = (h - icon.height())/2; - p->save(); - QFont f = font(); - -@@ -629,8 +644,11 @@ - } - else if (!icon.isNull()) - { -- int y = (height() - icon.height()) / 2; -- int x = (width() - icon.width()) / 2; -+ int x = 0; -+ if (m_iconAlignment & AlignHCenter) -+ x = (width() - icon.width()) / 2; -+ else if (m_iconAlignment & AlignRight) -+ x = (width() - icon.width()); - p->drawPixmap(x, y, icon); - } - -@@ -792,7 +810,19 @@ - QString nm = m_iconName; - KIcon::States defaultState = isEnabled() ? KIcon::DefaultState : - KIcon::DisabledState; -- m_icon = ldr->loadIcon(nm, KIcon::Panel, m_size, defaultState, 0L, true); -+ if (nm=="kmenu-suse") -+ { -+ QString pth = locate( "data", "kicker/pics/kmenu_basic.mng" ); -+ if (!pth.isEmpty()) -+ { -+ m_icon = QImage(pth); -+ m_iconh = QPixmap(m_icon); -+ m_iconz = QPixmap(m_icon); -+ return; -+ } -+ } -+ else -+ m_icon = ldr->loadIcon(nm, KIcon::Panel, m_size, defaultState, 0L, true); - - if (m_icon.isNull()) - { -@@ -857,7 +887,7 @@ - connect(this, SIGNAL(pressed()), SLOT(slotExecMenu())); - } - --void PanelPopupButton::setPopup(QPopupMenu *popup) -+void PanelPopupButton::setPopup(QWidget *popup) - { - if (m_popup) - { -@@ -875,7 +905,7 @@ - } - } - --QPopupMenu *PanelPopupButton::popup() const -+QWidget *PanelPopupButton::popup() const - { - return m_popup; - } -@@ -954,7 +984,9 @@ - } - - m_popup->adjustSize(); -- m_popup->exec(KickerLib::popupPosition(popupDirection(), m_popup, this)); -+ if(dynamic_cast<QPopupMenu*>(m_popup)) -+ static_cast<QPopupMenu*>(m_popup)->exec(KickerLib::popupPosition(popupDirection(), m_popup, this)); -+ // else.. hmm. some derived class has to fix it. - } - - void PanelPopupButton::menuAboutToHide() -@@ -964,8 +996,10 @@ - return; - } - -- setDown(false); -- KickerTip::enableTipping(true); -+ if (isDown()) { -+ setDown(false); -+ KickerTip::enableTipping(true); -+ } - } - - void PanelPopupButton::triggerDrag() -@@ -983,3 +1017,5 @@ - m_initialized = initialized; - } - -+ -+ ---- extensions/kasbar/kasbar.cpp (Revision 849788) -+++ extensions/kasbar/kasbar.cpp (Revision 849791) -@@ -719,7 +719,7 @@ - i->setText( "Animated" ); - i->setIcon( KGlobal::iconLoader()->loadIcon( "icons", KIcon::NoGroup, KIcon::SizeMedium ) ); - i->setAnimation( resources()->startupAnimation() ); -- QTimer *aniTimer = new QTimer( i ); -+ QTimer *aniTimer = new QTimer( i, "aniTimer" ); - connect( aniTimer, SIGNAL( timeout() ), i, SLOT( advanceAnimation() ) ); - aniTimer->start( 100 ); - i->setShowAnimation( true ); ---- extensions/kasbar/kasclockitem.cpp (Revision 849788) -+++ extensions/kasbar/kasclockitem.cpp (Revision 849791) -@@ -38,7 +38,7 @@ - { - setCustomPopup( true ); - -- QTimer *t = new QTimer( this ); -+ QTimer *t = new QTimer( this, "t" ); - connect( t, SIGNAL( timeout() ), SLOT( updateTime() ) ); - t->start( 1000 ); - ---- extensions/kasbar/kasstartupitem.cpp (Revision 849788) -+++ extensions/kasbar/kasstartupitem.cpp (Revision 849791) -@@ -79,7 +79,7 @@ - setShowFrame( false ); - setAnimation( resources()->startupAnimation() ); - -- aniTimer = new QTimer( this ); -+ aniTimer = new QTimer( this, "aniTimer" ); - connect( aniTimer, SIGNAL( timeout() ), SLOT( aniTimerFired() ) ); - aniTimer->start( 100 ); - } ---- extensions/kasbar/kasloaditem.cpp (Revision 849788) -+++ extensions/kasbar/kasloaditem.cpp (Revision 849791) -@@ -33,7 +33,7 @@ - KasLoadItem::KasLoadItem( KasBar *parent ) - : KasItem( parent ) - { -- QTimer *t = new QTimer( this ); -+ QTimer *t = new QTimer( this, "KasLoadItem::t" ); - connect( t, SIGNAL( timeout() ), SLOT( updateDisplay() ) ); - t->start( 1000 ); - updateDisplay(); ---- kicker/interfaces/kickoff-search-plugin.h (Revision 0) -+++ kicker/interfaces/kickoff-search-plugin.h (Revision 849791) -@@ -0,0 +1,106 @@ -+/*************************************************************************** -+ * Copyright (C) 2006 by Stephan Binner <binner@kde.org> * -+ * Copyright (c) 2006 Debajyoti Bera <dbera.web@gmail.com> * -+ * * -+ * This program is free software; you can redistribute it and/or modify * -+ * it under the terms of the GNU General Public License as published by * -+ * the Free Software Foundation; either version 2 of the License, or * -+ * (at your option) any later version. * -+ * * -+ * This program is distributed in the hope that it will be useful, * -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of * -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -+ * GNU General Public License for more details. * -+ * * -+ * You should have received a copy of the GNU General Public License * -+ * along with this program; if not, write to the * -+ * Free Software Foundation, Inc., * -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * -+ ***************************************************************************/ -+ -+#ifndef KICKOFF_SEARCH_PLUGIN_H -+#define KICKOFF_SEARCH_PLUGIN_H -+ -+#include "kickoffsearchinterface.h" -+ -+#include <qobject.h> -+#include <kurl.h> -+#include <kservice.h> -+ -+typedef enum { -+ ACTIONS = 0, -+ APPS, -+ BOOKMARKS, -+ NOTES, -+ MAILS, -+ FILES, -+ MUSIC, -+ WEBHIST, -+ CHATS, -+ FEEDS, -+ PICS, -+ VIDEOS, -+ DOCS, -+ OTHER, -+ num_categories -+} CATEGORY; -+ -+class HitMenuItem -+{ -+public: -+ HitMenuItem (int id, int category) -+ : id (id), category (category),score(0) { } /* dummy */ -+ HitMenuItem (QString name, QString info, KURL uri, QString mimetype, int id, int category, QString icon=QString::null, int score = 0) -+ : display_name (name) -+ , display_info (info) -+ , uri (uri) -+ , mimetype (mimetype) -+ , id (id) -+ , category (category) -+ , icon (icon) -+ , score (score) -+ , service (NULL) { } -+ -+ ~HitMenuItem () { } -+ -+ bool operator< (HitMenuItem item) -+ { -+ return ((category == item.category && score > item.score) || (category == item.category && id < item.id) || -+ (category < item.category)); -+ } -+ -+ // FIXME: We dont really need to store display_name and display_info -+ QString display_name; // name to display -+ QString display_info; // other information to display -+ KURL uri; // uri to open when clicked -+ QString mimetype; -+ int id; // id of the item in the menu -+ int category; -+ QString icon; -+ int score; -+ KService::Ptr service; -+ -+ QString quotedPath () const -+ { -+ return uri.path ().replace ('"', "\\\""); -+ } -+}; -+ -+namespace KickoffSearch { -+ -+ class Plugin : public QObject -+ { -+ Q_OBJECT -+ -+ public: -+ Plugin(QObject *parent, const char* name=0); -+ virtual ~Plugin(); -+ -+ virtual bool daemonRunning()=0; -+ virtual void query(QString,bool)=0; -+ -+ KickoffSearchInterface * kickoffSearchInterface(); -+ }; -+}; -+ -+#endif /* KICKOFF_SEARCH_PLUGIN_H */ ---- kicker/interfaces/kickoffsearchinterface.cpp (Revision 0) -+++ kicker/interfaces/kickoffsearchinterface.cpp (Revision 849791) -@@ -0,0 +1,27 @@ -+/*************************************************************************** -+ * Copyright (C) 2006 by Stephan Binner <binner@kde.org> * -+ * * -+ * This program is free software; you can redistribute it and/or modify * -+ * it under the terms of the GNU General Public License as published by * -+ * the Free Software Foundation; either version 2 of the License, or * -+ * (at your option) any later version. * -+ * * -+ * This program is distributed in the hope that it will be useful, * -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of * -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -+ * GNU General Public License for more details. * -+ * * -+ * You should have received a copy of the GNU General Public License * -+ * along with this program; if not, write to the * -+ * Free Software Foundation, Inc., * -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * -+ ***************************************************************************/ -+ -+#include "kickoffsearchinterface.h" -+ -+KickoffSearch::KickoffSearchInterface::KickoffSearchInterface( QObject* parent, const char* name ) -+ :QObject( parent, name ) -+{ -+} -+ -+#include "kickoffsearchinterface.moc" ---- kicker/interfaces/Makefile.am (Revision 0) -+++ kicker/interfaces/Makefile.am (Revision 849791) -@@ -0,0 +1,12 @@ -+METASOURCES = AUTO -+INCLUDES= -I$(top_srcdir)/src $(all_includes) -+ -+# The library containing the plugin base class -+lib_LTLIBRARIES = libkickoffsearch_interfaces.la -+libkickoffsearch_interfaces_la_SOURCES = kickoff-search-plugin.cpp kickoffsearchinterface.cpp -+libkickoffsearch_interfaces_la_LDFLAGS = $(all_libraries) -version-info 0:0:0 -+ -+kickoffsearchincludedir = $(includedir) -+kickoffsearchinclude_HEADERS = kickoff-search-plugin.h kickoffsearchinterface.h -+ -+kde_servicetypes_DATA = kickoffsearchplugin.desktop ---- kicker/interfaces/kickoffsearchinterface.h (Revision 0) -+++ kicker/interfaces/kickoffsearchinterface.h (Revision 849791) -@@ -0,0 +1,46 @@ -+/*************************************************************************** -+ * Copyright (C) 2006 by Stephan Binner <binner@kde.org> * -+ * * -+ * This program is free software; you can redistribute it and/or modify * -+ * it under the terms of the GNU General Public License as published by * -+ * the Free Software Foundation; either version 2 of the License, or * -+ * (at your option) any later version. * -+ * * -+ * This program is distributed in the hope that it will be useful, * -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of * -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -+ * GNU General Public License for more details. * -+ * * -+ * You should have received a copy of the GNU General Public License * -+ * along with this program; if not, write to the * -+ * Free Software Foundation, Inc., * -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * -+ ***************************************************************************/ -+ -+#ifndef KICKOFFSEARCHINTERFACE_H -+#define KICKOFFSEARCHINTERFACE_H -+ -+#include <qobject.h> -+ -+class HitMenuItem; -+ -+namespace KickoffSearch -+{ -+ class KickoffSearchInterface :public QObject -+ { -+ Q_OBJECT -+ -+ public: -+ KickoffSearchInterface( QObject* parent, const char* name = 0); -+ -+ public: -+ virtual bool anotherHitMenuItemAllowed(int cat) = 0; -+ virtual void addHitMenuItem(HitMenuItem* item) = 0; -+ virtual void searchOver() = 0; -+ virtual void initCategoryTitlesUpdate() = 0; -+ virtual void updateCategoryTitles() = 0; -+ }; -+} -+ -+#endif /* SELECTIONINTERFACE_H */ -+ ---- kicker/interfaces/kickoffsearchplugin.desktop (Revision 0) -+++ kicker/interfaces/kickoffsearchplugin.desktop (Revision 849791) -@@ -0,0 +1,4 @@ -+[Desktop Entry] -+Type=ServiceType -+X-KDE-ServiceType=KickoffSearch/Plugin -+Comment=A search plugin for Kickoff ---- kicker/interfaces/kickoff-search-plugin.cpp (Revision 0) -+++ kicker/interfaces/kickoff-search-plugin.cpp (Revision 849791) -@@ -0,0 +1,37 @@ -+/*************************************************************************** -+ * Copyright (C) 2006 by Stephan Binner <binner@kde.org> * -+ * * -+ * This program is free software; you can redistribute it and/or modify * -+ * it under the terms of the GNU General Public License as published by * -+ * the Free Software Foundation; either version 2 of the License, or * -+ * (at your option) any later version. * -+ * * -+ * This program is distributed in the hope that it will be useful, * -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of * -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -+ * GNU General Public License for more details. * -+ * * -+ * You should have received a copy of the GNU General Public License * -+ * along with this program; if not, write to the * -+ * Free Software Foundation, Inc., * -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * -+ ***************************************************************************/ -+ -+#include "kickoff-search-plugin.h" -+#include <qobjectlist.h> -+ -+KickoffSearch::Plugin::Plugin(QObject *parent, const char* name ) -+ :QObject( parent, name ) -+{ -+} -+ -+KickoffSearch::Plugin::~Plugin() -+{ -+} -+ -+KickoffSearch::KickoffSearchInterface* KickoffSearch::Plugin::kickoffSearchInterface() -+{ -+ return static_cast<KickoffSearchInterface*>( parent()->child( 0, "KickoffSearch::KickoffSearchInterface" ) ); -+} -+ -+#include "kickoff-search-plugin.moc" - -Eigenschaftsänderungen: kicker/interfaces -___________________________________________________________________ -Hinzugefügt: svn:ignore - + .deps -libkickoffsearch_interfaces.la -.libs -Makefile -Makefile.in -*.moc - - ---- kicker/core/menumanager.h (Revision 849788) -+++ kicker/core/menumanager.h (Revision 849791) -@@ -28,7 +28,9 @@ - #include <qvaluelist.h> - - class PanelKMenu; -+class KMenu; - class KickerClientMenu; -+class KMenuStub; - class PanelPopupButton; - - typedef QValueList<PanelPopupButton*> KButtonList; -@@ -50,13 +52,12 @@ - bool process(const QCString &fun, const QByteArray &data, QCString& replyType, QByteArray &reply); - - // KMenu controls -- PanelKMenu* kmenu() { return m_kmenu; } -- void showKMenu(); -+ KMenuStub* kmenu() { return m_kmenu; } - void popupKMenu(const QPoint &p); - - void registerKButton(PanelPopupButton *button); - void unregisterKButton(PanelPopupButton *button); -- PanelPopupButton* findKButtonFor(QPopupMenu* menu); -+ PanelPopupButton* findKButtonFor(QWidget* menu); - ~MenuManager(); - - public slots: -@@ -67,7 +68,7 @@ - void applicationRemoved(const QCString&); - - protected: -- PanelKMenu* m_kmenu; -+ KMenuStub* m_kmenu; - typedef QValueList<KickerClientMenu*> ClientMenuList; - ClientMenuList clientmenus; - ---- kicker/core/kicker.cpp (Revision 849788) -+++ kicker/core/kicker.cpp (Revision 849791) -@@ -48,6 +48,8 @@ - #include "extensionmanager.h" - #include "pluginmanager.h" - #include "menumanager.h" -+#include "k_new_mnu.h" -+#include "k_mnu_stub.h" - #include "k_mnu.h" - #include "showdesktop.h" - #include "panelbutton.h" -@@ -106,6 +108,7 @@ - - KGlobal::iconLoader()->addExtraDesktopThemes(); - -+ KGlobal::locale()->insertCatalogue("kdmgreet"); - KGlobal::locale()->insertCatalogue("libkonq"); - KGlobal::locale()->insertCatalogue("libdmctl"); - KGlobal::locale()->insertCatalogue("libtaskbar"); -@@ -212,7 +215,7 @@ - - void Kicker::showKMenu() - { -- MenuManager::the()->showKMenu(); -+ MenuManager::the()->kmenuAccelActivated(); - } - - void Kicker::popupKMenu(const QPoint &p) ---- kicker/core/container_button.cpp (Revision 849788) -+++ kicker/core/container_button.cpp (Revision 849791) -@@ -43,6 +43,7 @@ - #include "desktopbutton.h" - #include "extensionbutton.h" - #include "kbutton.h" -+#include "knewbutton.h" - #include "kicker.h" - #include "kickerSettings.h" - #include "kickertip.h" -@@ -326,14 +327,20 @@ - : ButtonContainer(opMenu, parent) - { - checkImmutability(config); -- embedButton( new KButton(this) ); -+ if(KickerSettings::legacyKMenu()) -+ embedButton( new KButton(this) ); -+ else -+ embedButton( new KNewButton(this) ); - _actions = PanelAppletOpMenu::KMenuEditor; - } - - KMenuButtonContainer::KMenuButtonContainer(QPopupMenu *opMenu, QWidget* parent) - : ButtonContainer(opMenu, parent) - { -- embedButton( new KButton(this) ); -+ if(KickerSettings::legacyKMenu()) -+ embedButton( new KButton(this) ); -+ else -+ embedButton( new KNewButton(this) ); - _actions = PanelAppletOpMenu::KMenuEditor; - } - ---- kicker/core/main.cpp (Revision 849788) -+++ kicker/core/main.cpp (Revision 849791) -@@ -108,7 +108,7 @@ - appname.sprintf("kicker-screen-%d", kicker_screen_number); - - KAboutData aboutData( appname.data(), I18N_NOOP("KDE Panel"), -- version, description, KAboutData::License_BSD, -+ version, description, KAboutData::License_GPL_V2, - I18N_NOOP("(c) 1999-2004, The KDE Team") ); - - aboutData.addAuthor("Aaron J. Seigo", I18N_NOOP("Current maintainer"), "aseigo@kde.org"); ---- kicker/core/menumanager.cpp (Revision 849788) -+++ kicker/core/menumanager.cpp (Revision 849791) -@@ -31,9 +31,12 @@ - #include "client_mnu.h" - #include "container_extension.h" - #include "global.h" -+#include "k_new_mnu.h" - #include "k_mnu.h" -+#include "k_mnu_stub.h" - #include "kicker.h" - #include "panelbutton.h" -+#include "kickerSettings.h" - - #include "menumanager.h" - #include "menumanager.moc" -@@ -62,7 +65,11 @@ - MenuManager::MenuManager(QObject *parent) - : QObject(parent, "MenuManager"), DCOPObject("MenuManager") - { -- m_kmenu = new PanelKMenu; -+ if (KickerSettings::legacyKMenu()) -+ m_kmenu = new KMenuStub(new PanelKMenu); -+ else -+ m_kmenu = new KMenuStub(new KMenu); -+ - kapp->dcopClient()->setNotifications(true); - connect(kapp->dcopClient(), SIGNAL(applicationRemoved(const QCString&)), - this, SLOT(applicationRemoved(const QCString&))); -@@ -83,14 +90,8 @@ - m_kmenu->selectFirstItem(); - } - --void MenuManager::showKMenu() --{ -- m_kmenu->showMenu(); --} -- - void MenuManager::popupKMenu(const QPoint &p) - { --// kdDebug(1210) << "popupKMenu()" << endl; - if (m_kmenu->isVisible()) - { - m_kmenu->hide(); -@@ -120,7 +121,7 @@ - m_kbuttons.remove(button); - } - --PanelPopupButton* MenuManager::findKButtonFor(QPopupMenu* menu) -+PanelPopupButton* MenuManager::findKButtonFor(QWidget* menu) - { - KButtonList::const_iterator itEnd = m_kbuttons.constEnd(); - for (KButtonList::const_iterator it = m_kbuttons.constBegin(); it != itEnd; ++it) -@@ -169,7 +170,7 @@ - const QSize size = m_kmenu->sizeHint(); - m_kmenu->resize(size.width(),size.height()); - -- PanelPopupButton* button = findKButtonFor(m_kmenu); -+ PanelPopupButton* button = findKButtonFor(m_kmenu->widget()); - - // let's unhide the panel while we're at it. traverse the widget - // hierarchy until we find the panel, if any -@@ -189,7 +190,6 @@ - - menuParent = menuParent->parent(); - } -- - button->showMenu(); - } - } -@@ -213,7 +213,7 @@ - - void MenuManager::removeMenu(QCString menu) - { -- bool iterate = true; -+ bool iterate = true, need_adjustSize = false; - ClientMenuList::iterator it = clientmenus.begin(); - for (; it != clientmenus.end(); iterate ? ++it : it) - { -@@ -224,15 +224,17 @@ - m_kmenu->removeClientMenu(m->idInParentMenu); - it = clientmenus.erase(it); - iterate = false; -+ need_adjustSize = true; - } - } -- m_kmenu->adjustSize(); -+ if (need_adjustSize) -+ m_kmenu->adjustSize(); - } - - - void MenuManager::applicationRemoved(const QCString& appRemoved) - { -- bool iterate = true; -+ bool iterate = true, need_adjustSize = false; - ClientMenuList::iterator it = clientmenus.begin(); - for (; it != clientmenus.end(); iterate ? ++it : it) - { -@@ -243,9 +245,11 @@ - m_kmenu->removeClientMenu(m->idInParentMenu); - it = clientmenus.erase(it); - iterate = false; -+ need_adjustSize = true; - } - } -- m_kmenu->adjustSize(); -+ if (need_adjustSize) -+ m_kmenu->adjustSize(); - } - - bool MenuManager::process(const QCString &fun, const QByteArray &data, ---- kicker/core/unhidetrigger.cpp (Revision 849788) -+++ kicker/core/unhidetrigger.cpp (Revision 849791) -@@ -39,7 +39,7 @@ - , _lastXineramaScreen( -1 ) - , enabledCount( 0 ) - { -- _timer = new QTimer( this ); -+ _timer = new QTimer( this, "UnhideTrigger" ); - connect( _timer, SIGNAL(timeout()), SLOT(pollMouse()) ); - } - ---- kicker/core/applethandle.cpp (Revision 849788) -+++ kicker/core/applethandle.cpp (Revision 849791) -@@ -150,7 +150,7 @@ - { - if (!m_handleHoverTimer) - { -- m_handleHoverTimer = new QTimer(this); -+ m_handleHoverTimer = new QTimer(this, "m_handleHoverTimer"); - connect(m_handleHoverTimer, SIGNAL(timeout()), - this, SLOT(checkHandleHover())); - m_applet->installEventFilter(this); -@@ -177,11 +177,7 @@ - m_drawHandle = true; - resetLayout(); - -- if (m_handleHoverTimer) -- { -- m_handleHoverTimer->start(250); -- } -- break; -+ break; - } - - case QEvent::Leave: -@@ -191,6 +187,11 @@ - break; - } - -+ if (m_handleHoverTimer) -+ { -+ m_handleHoverTimer->start(250); -+ } -+ - QWidget* w = dynamic_cast<QWidget*>(o); - - bool nowDrawIt = false; -@@ -207,11 +208,6 @@ - - if (nowDrawIt != m_drawHandle) - { -- if (m_handleHoverTimer) -- { -- m_handleHoverTimer->stop(); -- } -- - m_drawHandle = nowDrawIt; - resetLayout(); - } -@@ -297,6 +293,11 @@ - } - - m_menuButton->setDown(false); -+ -+ if (m_handleHoverTimer) -+ { -+ m_handleHoverTimer->start(250); -+ } - } - - AppletHandleDrag::AppletHandleDrag(AppletHandle* parent) ---- kicker/core/containerarea.cpp 2009/11/20 21:00:18 1.1 -+++ kicker/core/containerarea.cpp 2009/11/20 21:00:38 -@@ -87,7 +87,8 @@ - m_immutable(_c->isImmutable()), - m_updateBackgroundsCalled(false), - m_layout(0), -- m_addAppletDialog(0) -+ m_addAppletDialog(0), -+ _autoScrollTimer(0, "ContainerArea::autoScrollTimer") - { - setBackgroundOrigin( WidgetOrigin ); - ---- kicker/core/Makefile.am (Revision 849788) -+++ kicker/core/Makefile.am (Revision 849791) -@@ -1,6 +1,6 @@ - INCLUDES = -I$(srcdir)/../../libkicker -I../../libkicker \ -- -I$(srcdir)/../ui -I$(srcdir)/../buttons -I$(top_srcdir)/libkonq \ -- $(all_includes) -+ -I../ui -I$(srcdir)/../ui -I$(srcdir)/../buttons -I$(top_srcdir)/libkonq \ -+ $(all_includes) - - noinst_LTLIBRARIES = libkicker_core.la - ---- kicker/Makefile.am (Revision 849788) -+++ kicker/Makefile.am (Revision 849791) -@@ -1,6 +1,6 @@ - INCLUDES = $(all_includes) - --SUBDIRS = core ui buttons . -+SUBDIRS = core ui buttons interfaces . - - bin_PROGRAMS = - lib_LTLIBRARIES = -@@ -9,7 +9,7 @@ - CLEANFILES = dummy.cpp - - kicker_la_LIBADD = core/libkicker_core.la buttons/libkicker_buttons.la \ -- ui/libkicker_ui.la ../libkicker/libkickermain.la $(LIB_KIO) $(LIB_KUTILS) -+ ui/libkicker_ui.la ../libkicker/libkickermain.la $(LIB_KIO) $(LIB_KUTILS) $(LIB_KABC) - - kicker_la_SOURCES = dummy.cpp - kicker_la_LDFLAGS = -module $(KDE_PLUGIN) $(all_libraries) ---- kicker/ui/browser_mnu.cpp (Revision 849788) -+++ kicker/ui/browser_mnu.cpp (Revision 849791) -@@ -329,7 +329,7 @@ - if(_mimemap.count() > 0) { - - if(!_mimecheckTimer) -- _mimecheckTimer = new QTimer(this); -+ _mimecheckTimer = new QTimer(this, "_mimecheckTimer"); - - connect(_mimecheckTimer, SIGNAL(timeout()), SLOT(slotMimeCheck())); - _mimecheckTimer->start(0); ---- kicker/ui/flipscrollview.cpp (Revision 0) -+++ kicker/ui/flipscrollview.cpp (Revision 849791) -@@ -0,0 +1,324 @@ -+/***************************************************************** -+ -+Copyright (c) 2006 Will Stephenson <wstephenson@novell.com> -+ -+Permission is hereby granted, free of charge, to any person obtaining a copy -+of this software and associated documentation files (the "Software"), to deal -+in the Software without restriction, including without limitation the rights -+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+copies of the Software, and to permit persons to whom the Software is -+furnished to do so, subject to the following conditions: -+ -+The above copyright notice and this permission notice shall be included in -+all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+******************************************************************/ -+ -+#include <qapplication.h> -+#include <qhbox.h> -+#include <qheader.h> -+#include <assert.h> -+ -+#include "itemview.h" -+#include "flipscrollview.h" -+#include "kickerSettings.h" -+ -+/* Flip scroll steps, as percentage of itemview width to scroll per -+ * step. Assumes the itemview is scrolled in ten steps */ -+ -+/* slow start, then fast */ -+//static const double scrollSteps[] = { 0.05, 0.05, 0.1125, 0.1125, 0.1125, 0.1125, 0.1125, 0.1125, 0.1125, 0.1125 }; -+ -+/* slow fast slow */ -+//static const double scrollSteps[] = { 0.05, 0.05, 0.13, 0.13, 0.15, 0.13, 0.13, 0.13, 0.05, 0.05 }; -+ -+/* slow veryfast slow */ -+static const double scrollSteps[] = { 0.03, 0.03, 0.147, 0.147, 0.147, 0.147, 0.147, 0.147, 0.03, 0.028 }; -+; -+ -+BackFrame::BackFrame( QWidget *parent ) -+ : QFrame( parent ), mouse_inside( false ) -+{ -+ setFrameStyle( QFrame::NoFrame ); -+ if ( QApplication::reverseLayout() ) -+ left_triangle.load( locate( "data", "kicker/pics/right_triangle.png" ) ); -+ else -+ left_triangle.load( locate( "data", "kicker/pics/left_triangle.png" ) ); -+} -+ -+void BackFrame::drawContents( QPainter *p ) -+{ -+ QColor gray( 230, 230, 230 ); -+ if ( mouse_inside ) -+ p->fillRect( 3, 3, width() - 6, height() - 6, colorGroup().color( QColorGroup::Highlight ) ); -+ else -+ p->fillRect( 3, 3, width() - 6, height() - 6, gray ); -+ p->setPen( gray.dark(110) ); -+ p->drawRect( 3, 3, width() - 6, height() - 6 ); -+ -+ int pixsize = ( width() - 6 ) * 3 / 5; -+ QImage i = left_triangle.convertToImage().smoothScale( pixsize, pixsize ); -+ QPixmap tri; -+ tri.convertFromImage( i ); -+ -+ p->drawPixmap( ( width() - tri.width() ) / 2, ( height() - tri.height() ) / 2, tri ); -+} -+ -+void BackFrame::enterEvent( QEvent *e ) -+{ -+ mouse_inside = true; -+ update(); -+} -+ -+void BackFrame::leaveEvent( QEvent *e ) -+{ -+ mouse_inside = false; -+ update(); -+} -+ -+void BackFrame::mousePressEvent ( QMouseEvent * e ) -+{ -+ emit clicked(); -+} -+ -+FlipScrollView::FlipScrollView( QWidget * parent, const char * name ) -+ : QScrollView( parent, name ), mState( StoppedLeft ), mScrollDirection( 1 ), mShowBack( false ) -+{ -+ setVScrollBarMode( QScrollView::AlwaysOff ); -+ setHScrollBarMode( QScrollView::AlwaysOff ); -+ setFrameStyle( QFrame::NoFrame ); -+ mLeftView = new ItemView( this, "left_view" ); -+ addChild( mLeftView ); -+ -+ mRightView = new ItemView( this, "right_view" ); -+ addChild( mRightView ); -+ -+ mTimer = new QTimer( this, "mTimer" ); -+ connect( mTimer, SIGNAL( timeout() ), SLOT( slotScrollTimer() ) ); -+ -+ connect( mLeftView, SIGNAL( startService(KService::Ptr) ), -+ SIGNAL( startService(KService::Ptr) ) ); -+ connect( mLeftView, SIGNAL( startURL(const QString& ) ), -+ SIGNAL( startURL(const QString& ) ) ); -+ connect( mLeftView, SIGNAL( rightButtonPressed(QListViewItem*,const QPoint&,int) ), -+ SIGNAL( rightButtonPressed(QListViewItem*,const QPoint&,int) ) ); -+ connect( mRightView, SIGNAL( startService(KService::Ptr) ), -+ SIGNAL( startService(KService::Ptr) ) ); -+ connect( mRightView, SIGNAL( startURL(const QString& ) ), -+ SIGNAL( startURL(const QString& ) ) ); -+ connect( mRightView, SIGNAL( rightButtonPressed(QListViewItem*,const QPoint&,int) ), -+ SIGNAL( rightButtonPressed(QListViewItem*,const QPoint&,int) ) ); -+ -+ // wild hack to make sure it has correct width -+ mLeftView->setVScrollBarMode( QScrollView::AlwaysOn ); -+ mRightView->setVScrollBarMode( QScrollView::AlwaysOn ); -+ mLeftView->setVScrollBarMode( QScrollView::Auto ); -+ mRightView->setVScrollBarMode( QScrollView::Auto ); -+ -+ mBackrow = new BackFrame( this ); -+ mBackrow->resize( 24, 100 ); -+ connect( mBackrow, SIGNAL( clicked() ), SIGNAL( backButtonClicked() ) ); -+} -+ -+ItemView* FlipScrollView::prepareRightMove() -+{ -+ if ( mState != StoppedLeft ) -+ { -+ mTimer->stop(); -+ ItemView *swap = mLeftView; -+ mLeftView = mRightView; -+ mRightView = swap; -+ moveChild( mLeftView, 0, 0 ); -+ moveChild( mRightView, width(), 0 ); -+ mBackrow->hide(); -+ mRightView->resize( width(), height() ); -+ mLeftView->resize( width(), height() ); -+ setContentsPos( 0, 0 ); -+ } -+ -+ mState = StoppedLeft; -+ mRightView->clear(); -+ return mRightView; -+} -+ -+void FlipScrollView::showBackButton( bool enable ) -+{ -+ kdDebug() << "FlipScrollView::showBackButton " << enable << endl; -+ mShowBack = enable; -+} -+ -+ItemView* FlipScrollView::prepareLeftMove(bool clear) -+{ -+ if ( mState != StoppedRight ) -+ { -+ mTimer->stop(); -+ ItemView *swap = mLeftView; -+ mLeftView = mRightView; -+ mRightView = swap; -+ moveChild( mLeftView, 0, 0 ); -+ moveChild( mRightView, width(), 0 ); -+ mRightView->resize( width(), height() ); -+ mLeftView->resize( width(), height() ); -+ mBackrow->hide(); -+ setContentsPos( width(), 0 ); -+ } -+ -+ mState = StoppedRight; -+ if (clear) -+ mLeftView->clear(); -+ return mLeftView; -+} -+ -+void FlipScrollView::viewportResizeEvent ( QResizeEvent * ) -+{ -+ mLeftView->resize( size() ); -+ mRightView->resize( width() - mBackrow->width(), height() ); -+ mBackrow->resize( mBackrow->width(), height() ); -+ resizeContents( width() * 2, height() ); -+ moveChild( mBackrow, width(), 0 ); -+ moveChild( mRightView, width() + mBackrow->width(), 0 ); -+ setContentsPos( 0, 0 ); -+} -+ -+ItemView *FlipScrollView::currentView() const -+{ -+ if ( mState == StoppedRight ) -+ return mRightView; -+ else -+ return mLeftView; -+} -+ -+ItemView *FlipScrollView::leftView() const -+{ -+ return mLeftView; -+} -+ -+ItemView *FlipScrollView::rightView() const -+{ -+ return mRightView; -+} -+ -+FlipScrollView::~FlipScrollView() {} -+ -+static const int max_steps = 10; -+ -+void FlipScrollView::slotScrollTimer() -+{ -+ mStepsRemaining--; -+ assert( mStepsRemaining >= 0 && mStepsRemaining < int(sizeof( scrollSteps ) / sizeof( double )) ); -+ if (KickerSettings::scrollFlipView()) -+ scrollBy( ( int )( mScrollDirection * mLeftView->width() * scrollSteps[ mStepsRemaining ] ), 0 ); -+ else -+ scrollBy( ( int )( mScrollDirection * mLeftView->width()), 0 ); -+ -+ if ( mStepsRemaining == 0 ) -+ { -+ if ( mState == ScrollingRight ) -+ { -+ mState = StoppedRight; -+ setContentsPos( width(), 0 ); -+ } else { -+ mState = StoppedLeft; -+ setContentsPos( 0, 0 ); -+ } -+ -+ kdDebug() << "slotScrollTimer " << mShowBack << endl; -+ -+ if ( mShowBack ) -+ { -+ mBackrow->show(); -+ if ( mState == StoppedRight ) -+ { -+ -+ if ( QApplication::reverseLayout() ) -+ moveChild( mRightView, width(), 0 ); -+ else -+ moveChild( mRightView, width() + mBackrow->width(), 0 ); -+ mRightView->resize( width() - mBackrow->width(), height() ); -+ mLeftView->resize( width(), height() ); -+ if ( QApplication::reverseLayout() ) -+ moveChild( mBackrow, width() + mRightView->width(), 0 ); -+ else -+ moveChild( mBackrow, width(), 0 ); -+ moveChild( mLeftView, 0, 0 ); -+ } else -+ { -+ moveChild( mRightView, width(), 0 ); -+ mRightView->resize( width(), height() ); -+ mLeftView->resize( width() - mBackrow->width(), height() ); -+ if ( QApplication::reverseLayout() ) -+ { -+ moveChild( mBackrow, mLeftView->width(), 0 ); -+ moveChild( mLeftView, 0, 0 ); -+ } -+ else -+ { -+ moveChild( mBackrow, 0, 0 ); -+ moveChild( mLeftView, mBackrow->width(), 0 ); -+ } -+ } -+ } else -+ mBackrow->hide(); -+ -+ if (!mSelectMenuPath.isEmpty()) { -+ if (mSelectMenuPath=="kicker:/goup/") { -+ currentView()->setSelected(currentView()->firstChild(),true); -+ currentView()->firstChild()->repaint(); -+ } -+ else { -+ QListViewItem * child = currentView()->firstChild(); -+ while( child ) { -+ KMenuItem* kitem = dynamic_cast<KMenuItem*>(child); -+ if (kitem && kitem->menuPath()==mSelectMenuPath) { -+ currentView()->setSelected(child,true); -+ kdDebug() << "child repaint\n"; -+ child->repaint(); -+ break; -+ } -+ child = child->nextSibling(); -+ } -+ } -+ } -+ mLeftView->setVScrollBarMode( QScrollView::Auto ); -+ mRightView->setVScrollBarMode( QScrollView::Auto ); -+ mTimer->stop(); -+ mLeftView->setMouseMoveSelects( true ); -+ mRightView->setMouseMoveSelects( true ); -+ } -+} -+ -+void FlipScrollView::flipScroll(const QString& selectMenuPath) -+{ -+ if ( mState == StoppedLeft ) -+ { -+ mState = ScrollingRight; -+ mScrollDirection = 1; -+ } -+ else -+ { -+ mState = ScrollingLeft; -+ mScrollDirection = -1; -+ } -+ -+ mLeftView->setVScrollBarMode( QScrollView::AlwaysOff ); -+ mRightView->setVScrollBarMode( QScrollView::AlwaysOff ); -+ if (KickerSettings::scrollFlipView()) -+ mStepsRemaining = max_steps; -+ else -+ mStepsRemaining = 1; -+ mTimer->start( 30 ); -+ mSelectMenuPath = selectMenuPath; -+ if (!mSelectMenuPath.isEmpty()) { -+ mLeftView->setMouseMoveSelects( false ); -+ mRightView->setMouseMoveSelects( false ); -+ } -+} -+ -+#include "flipscrollview.moc" ---- kicker/ui/query.cpp (Revision 0) -+++ kicker/ui/query.cpp (Revision 849791) -@@ -0,0 +1,136 @@ -+/***************************************************************** -+ -+ Copyright (c) 2006 Stephan Binner <binner@kde.org> -+ -+ This program is free software; you can redistribute it and/or -+ modify it under the terms of the GNU General Public -+ License as published by the Free Software Foundation; either -+ version 2 of the License, or (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; see the file COPYING. If not, write to -+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ Boston, MA 02110-1301, USA. -+ -+******************************************************************/ -+ -+#include "query.h" -+#include <kdebug.h> -+ -+Query::Query() -+{ -+ alternatives.setAutoDelete(true); -+} -+ -+void Query::clear() -+{ -+ query_term = QString::null; -+ alternatives.clear(); -+} -+ -+void Query::set(const QString &term) -+{ -+ query_term = term; -+ alternatives.clear(); -+ -+ current_alternative = new Alternative; -+ current_part = QString::null; -+ within_quotes = false; -+ exclude_part = false; -+ -+ for (uint index=0;index<term.length();index++) { -+ if (current_part.isEmpty() && query_term[index]=='-') -+ exclude_part = true; -+ else if (term[index]=='\'' || term[index]=='"') { -+ if (within_quotes) -+ add_term(); -+ else -+ within_quotes = true; -+ } -+ else if (!within_quotes && query_term[index]==' ') -+ add_term(); -+ else if (!exclude_part && !within_quotes && query_term[index]=='O' && index+1<term.length() && query_term[index+1]=='R') { -+ index++; -+ alternatives.append(current_alternative); -+ current_alternative = new Alternative; -+ within_quotes = false; -+ exclude_part = false; -+ current_part = QString::null; -+ } -+ else -+ current_part+=term[index]; -+ } -+ add_term(); -+ alternatives.append(current_alternative); -+ -+#if 0 -+ for (Alternative* alt=alternatives.first(); alt; alt=alternatives.next()) { -+ kdDebug() << "---" << endl; -+ kdDebug() << "*** includes = " << alt->includes << endl; -+ kdDebug() << "*** excludes = " << alt->excludes << endl; -+ } -+#endif -+} -+ -+void Query::add_term() { -+ if (!current_part.isEmpty()) { -+ if (current_part.startsWith("*")) -+ current_part=current_part.mid(1); -+ -+ if (current_part.endsWith("*")) -+ current_part=current_part.mid(0,current_part.length()-1); -+ -+ if (exclude_part) -+ current_alternative->excludes+=current_part.lower(); -+ else -+ current_alternative->includes+=current_part.lower(); -+ } -+ within_quotes = false; -+ exclude_part = false; -+ current_part = QString::null; -+} -+ -+QString Query::get() const -+{ -+ return query_term; -+} -+ -+bool Query::matches(const QString &term) -+{ -+ QString lower_term = term.lower(); -+ -+ for (Alternative* alt=alternatives.first(); alt; alt=alternatives.next()) { -+ if (!alt->includes.count()) -+ continue; -+ -+ bool next_alternative = false; -+ -+ for ( QStringList::ConstIterator it = alt->excludes.begin(); it != alt->excludes.end(); ++it ) { -+ if ( lower_term.find(*it)!=-1 ) { -+ next_alternative = true; -+ continue; -+ } -+ } -+ if (next_alternative) -+ continue; -+ -+ for ( QStringList::ConstIterator it = alt->includes.begin(); it != alt->includes.end(); ++it ) { -+ if ( lower_term.find(*it)==-1 ) { -+ next_alternative = true; -+ continue; -+ } -+ } -+ if (next_alternative) -+ continue; -+ -+//kdDebug() << "Found hit in '" << term << "'" << endl; -+ return true; -+ } -+ -+ return false; -+} ---- kicker/ui/k_new_mnu.cpp (Revision 0) -+++ kicker/ui/k_new_mnu.cpp (Revision 849791) -@@ -0,0 +1,3779 @@ -+/***************************************************************** -+ -+ Copyright (c) 1996-2000 the kicker authors. See file AUTHORS. -+ Copyright (c) 2006 Debajyoti Bera <dbera.web@gmail.com> -+ Copyright (c) 2006 Dirk Mueller <mueller@kde.org> -+ -+ This program is free software; you can redistribute it and/or -+ modify it under the terms of the GNU General Public -+ License as published by the Free Software Foundation; either -+ version 2 of the License, or (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; see the file COPYING. If not, write to -+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ Boston, MA 02110-1301, USA. -+ -+******************************************************************/ -+ -+#include <stdlib.h> -+#include <sys/types.h> -+#include <unistd.h> -+#include <dmctl.h> -+#include <inttypes.h> -+ -+#include <qimage.h> -+#include <qpainter.h> -+#include <qstyle.h> -+#include <qwidgetstack.h> -+#include <qlayout.h> -+#include <qlabel.h> -+#include <qregexp.h> -+#include <qfile.h> -+#include <qstylesheet.h> -+#include <qaccel.h> -+#include <qcursor.h> -+#include <qdir.h> -+#include <qsimplerichtext.h> -+#include <qtooltip.h> -+#include <qtabbar.h> -+ -+#include <dcopclient.h> -+#include <kapplication.h> -+#include <kaboutkde.h> -+#include <kaction.h> -+#include <kbookmarkmenu.h> -+#include <kconfig.h> -+#include <kdebug.h> -+#include <kglobal.h> -+#include <kglobalsettings.h> -+#include <kiconloader.h> -+#include <klineedit.h> -+#include <klocale.h> -+#include <kmessagebox.h> -+#include <kstandarddirs.h> -+#include <kcombobox.h> -+#include <kwin.h> -+#include <kdebug.h> -+#include <kuser.h> -+#include <kurllabel.h> -+#include <krun.h> -+#include <kmimetype.h> -+#include <krecentdocument.h> -+#include <kcompletionbox.h> -+#include <kurifilter.h> -+#include <kbookmarkmanager.h> -+#include <kbookmark.h> -+#include <kprocess.h> -+#include <kio/jobclasses.h> -+#include <kio/job.h> -+#include <dcopref.h> -+#include <konq_popupmenu.h> -+#include <konqbookmarkmanager.h> -+#include <kparts/componentfactory.h> -+ -+#include "client_mnu.h" -+#include "container_base.h" -+#include "global.h" -+#include "knewbutton.h" -+#include "kicker.h" -+#include "kickerSettings.h" -+#include "konqbookmarkmanager.h" -+#include "menuinfo.h" -+#include "menumanager.h" -+#include "popupmenutitle.h" -+#include "quickbrowser_mnu.h" -+#include "recentapps.h" -+#include "flipscrollview.h" -+#include "itemview.h" -+#include <dmctl.h> -+#include <sys/vfs.h> -+#include <mykickoffsearchinterface.h> -+ -+#include "media_watcher.h" -+#include "k_mnu.h" -+#include "k_new_mnu.h" -+#include "k_new_mnu.moc" -+#include "kickoff_bar.h" -+ -+#define WAIT_BEFORE_QUERYING 700 -+ -+#define IDS_PER_CATEGORY 20 -+#define ACTIONS_ID_BASE 10 -+#define APP_ID_BASE 10 + IDS_PER_CATEGORY -+#define BOOKMARKS_ID_BASE 10 + (IDS_PER_CATEGORY * 2) -+#define NOTES_ID_BASE 10 + (IDS_PER_CATEGORY * 3) -+#define MAIL_ID_BASE 10 + (IDS_PER_CATEGORY * 4) -+#define FILE_ID_BASE 10 + (IDS_PER_CATEGORY * 5) -+#define MUSIC_ID_BASE 10 + (IDS_PER_CATEGORY * 6) -+#define WEBHIST_ID_BASE 10 + (IDS_PER_CATEGORY * 7) -+#define CHAT_ID_BASE 10 + (IDS_PER_CATEGORY * 8) -+#define FEED_ID_BASE 10 + (IDS_PER_CATEGORY * 9) -+#define PIC_ID_BASE 10 + (IDS_PER_CATEGORY * 10) -+#define VIDEO_ID_BASE 10 + (IDS_PER_CATEGORY * 11) -+#define DOC_ID_BASE 10 + (IDS_PER_CATEGORY * 12) -+#define OTHER_ID_BASE 10 + (IDS_PER_CATEGORY * 13) -+ -+static QString calculate(const QString &exp) -+{ -+ QString result, cmd; -+ const QString bc = KStandardDirs::findExe("bc"); -+ if ( !bc.isEmpty() ) -+ cmd = QString("echo %1 | %2").arg(KProcess::quote(exp), KProcess::quote(bc)); -+ else -+ cmd = QString("echo $((%1))").arg(exp); -+ FILE *fs = popen(QFile::encodeName(cmd).data(), "r"); -+ if (fs) -+ { -+ QTextStream ts(fs, IO_ReadOnly); -+ result = ts.read().stripWhiteSpace(); -+ pclose(fs); -+ } -+ return result; -+} -+ -+static QString workaroundStringFreeze(const QString& str) -+{ -+ QString s = str; -+ -+ s.replace("<u>","&"); -+ QRegExp re("<[^>]+>"); -+ re.setMinimal(true); -+ re.setCaseSensitive(false); -+ -+ s.replace(re, ""); -+ s = s.simplifyWhiteSpace(); -+ -+ return s; -+} -+ -+int base_category_id[] = {ACTIONS_ID_BASE, APP_ID_BASE, BOOKMARKS_ID_BASE, NOTES_ID_BASE, MAIL_ID_BASE, -+ FILE_ID_BASE, MUSIC_ID_BASE, WEBHIST_ID_BASE, CHAT_ID_BASE, FEED_ID_BASE, -+ PIC_ID_BASE, VIDEO_ID_BASE, DOC_ID_BASE, OTHER_ID_BASE}; -+ -+#include <assert.h> -+ -+static int used_size( QLabel *label, int oldsize ) -+{ -+ QSimpleRichText st( label->text(), KGlobalSettings::toolBarFont() ); -+ st.setWidth( oldsize ); -+ return QMAX( st.widthUsed(), oldsize ); -+} -+ -+KMenu::KMenu() -+ : KMenuBase(0, "SUSE::Kickoff::KMenu") -+ , m_sloppyTimer(0, "KNewMenu::sloppyTimer"), m_mediaFreeTimer(0, "KNewMenu::mediaFreeTimer"), -+ m_iconName(QString::null), m_orientation(UnDetermined), m_search_plugin( 0 ) -+{ -+ setMouseTracking(true); -+ connect(&m_sloppyTimer, SIGNAL(timeout()), SLOT(slotSloppyTimeout())); -+ -+ // set the first client id to some arbitrarily large value. -+ client_id = 10000; -+ // Don't automatically clear the main menu. -+ actionCollection = new KActionCollection(this); -+ -+ connect(Kicker::the(), SIGNAL(configurationChanged()), -+ this, SLOT(configChanged())); -+ -+ KUser * user = new KUser(); -+ -+ char hostname[256]; -+ hostname[0] = '\0'; -+ if (!gethostname( hostname, sizeof(hostname) )) -+ hostname[sizeof(hostname)-1] = '\0'; -+ -+ m_userInfo->setText( i18n( "User <b>%1</b> on <b>%2</b>" ) -+ .arg( user->loginName() ).arg( hostname ) ); -+ setupUi(); -+ -+ m_userInfo->setBackgroundMode( PaletteBase ); -+ QColor userInfoColor = QApplication::palette().color( QPalette::Normal, QColorGroup::Mid ); -+ if ( qGray( userInfoColor.rgb() ) > 120 ) -+ userInfoColor = userInfoColor.dark( 200 ); -+ else -+ userInfoColor = userInfoColor.light( 200 ); -+ m_userInfo->setPaletteForegroundColor( userInfoColor ); -+ -+ m_tabBar = new KickoffTabBar(this, "m_tabBar"); -+ connect(m_tabBar, SIGNAL(tabClicked(QTab*)), SLOT(tabClicked(QTab*))); -+ -+ const int tab_icon_size = 32; -+ -+ m_tabs[FavoriteTab] = new QTab; -+ m_tabBar->addTab(m_tabs[FavoriteTab]); -+ m_tabBar->setToolTip(FavoriteTab, "<qt>" + i18n( "Most commonly used applications and documents" ) + "</qt>" ); -+ m_tabs[ApplicationsTab] = new QTab; -+ m_tabBar->addTab(m_tabs[ApplicationsTab]); -+ m_tabBar->setToolTip(ApplicationsTab, "<qt>" + i18n( "List of installed applications" ) + -+ "</qt>" ); -+ -+ m_tabs[ComputerTab] = new QTab; -+ m_tabBar->addTab(m_tabs[ComputerTab]); -+ m_tabBar->setToolTip(ComputerTab, "<qt>" + i18n( "Information and configuration of your " -+ "system, access to personal files, network resources and connected disk drives") -+ + "</qt>"); -+#if 0 -+ m_tabs[SearchTab] = new QTab; -+ m_tabBar->addTab(m_tabs[SearchTab]); -+#endif -+ m_tabs[HistoryTab] = new QTab; -+ m_tabBar->addTab(m_tabs[HistoryTab]); -+ m_tabBar->setToolTip(HistoryTab, "<qt>" + i18n( "Recently used applications and documents" ) + -+ "</qt>" ); -+ m_tabs[LeaveTab] = new QTab; -+ m_tabBar->addTab(m_tabs[LeaveTab]); -+ m_tabBar->setToolTip(LeaveTab, i18n("<qt>Logout, switch user, switch off or reset," -+ " suspend of the system" ) + "</qt>" ); -+ -+ if (KickerSettings::kickoffTabBarFormat() != KickerSettings::IconOnly) { -+ m_tabs[FavoriteTab]->setText(workaroundStringFreeze(i18n("<p align=\"center\"> <u>F</u>avorites</p>"))); -+ m_tabs[HistoryTab]->setText(workaroundStringFreeze(i18n("<p align=\"center\"><u>H</u>istory</p>"))); -+ m_tabs[ComputerTab]->setText( -+ workaroundStringFreeze(i18n("<p align=\"center\"> <u>C</u>omputer</p>"))); -+ m_tabs[ApplicationsTab]->setText(workaroundStringFreeze(i18n("<p align=\"center\"><u>A</u>pplications</p>"))); -+ m_tabs[LeaveTab]->setText( -+ workaroundStringFreeze(i18n("<p align=\"center\"><u>L</u>eave</p>"))); -+ } -+ -+ if (KickerSettings::kickoffTabBarFormat() != KickerSettings::LabelOnly) { -+ m_tabs[FavoriteTab]->setIconSet(BarIcon("bookmark", tab_icon_size)); -+ m_tabs[HistoryTab]->setIconSet(BarIcon("recently_used", tab_icon_size)); -+ m_tabs[ComputerTab]->setIconSet(BarIcon("system", tab_icon_size)); -+ m_tabs[ApplicationsTab]->setIconSet(BarIcon("player_playlist", tab_icon_size)); -+ m_tabs[LeaveTab]->setIconSet(BarIcon("leave", tab_icon_size)); -+ } -+ -+ connect(m_tabBar, SIGNAL(selected(int)), m_stacker, SLOT(raiseWidget(int))); -+ connect(m_stacker, SIGNAL(aboutToShow(int)), m_tabBar, SLOT(setCurrentTab(int))); -+ -+ m_favoriteView = new FavoritesItemView (m_stacker, "m_favoriteView"); -+ m_favoriteView->setAcceptDrops(true); -+ m_favoriteView->setItemsMovable(true); -+ m_stacker->addWidget(m_favoriteView, FavoriteTab); -+ -+ m_recentlyView = new ItemView (m_stacker, "m_recentlyView"); -+ m_stacker->addWidget(m_recentlyView, HistoryTab); -+ -+ m_systemView = new ItemView(m_stacker, "m_systemView"); -+ m_stacker->addWidget(m_systemView, ComputerTab ); -+ -+ m_browserView = new FlipScrollView(m_stacker, "m_browserView"); -+ m_stacker->addWidget(m_browserView, ApplicationsTab); -+ connect( m_browserView, SIGNAL( backButtonClicked() ), SLOT( slotGoBack() ) ); -+ -+ m_exitView = new FlipScrollView(m_stacker, "m_exitView"); -+ m_stacker->addWidget(m_exitView, LeaveTab); -+ connect( m_exitView, SIGNAL( backButtonClicked() ), SLOT( slotGoExitMainMenu() ) ); -+ -+ m_searchWidget = new QVBox (m_stacker, "m_searchWidget"); -+ m_searchWidget->setSpacing(0); -+ m_stacker->addWidget(m_searchWidget, 5); -+ -+ // search provider icon -+ QPixmap icon; -+ KURIFilterData data; -+ QStringList list; -+ data.setData( QString("some keyword") ); -+ list << "kurisearchfilter" << "kuriikwsfilter"; -+ -+ if ( KURIFilter::self()->filterURI(data, list) ) { -+ QString iconPath = locate("cache", KMimeType::favIconForURL(data.uri()) + ".png"); -+ if ( iconPath.isEmpty() ) -+ icon = SmallIcon("enhanced_browsing"); -+ else -+ icon = QPixmap( iconPath ); -+ } -+ else -+ icon = SmallIcon("enhanced_browsing"); -+ -+ m_searchResultsWidget = new ItemView (m_searchWidget, "m_searchResultsWidget"); -+ m_searchResultsWidget->setItemMargin(4); -+ m_searchResultsWidget->setIconSize(16); -+ m_searchActions = new ItemView (m_searchWidget, "m_searchActions"); -+ m_searchActions->setFocusPolicy(QWidget::NoFocus); -+ m_searchActions->setItemMargin(4); -+ m_searchInternet = new QListViewItem(m_searchActions, i18n("Search Internet")); -+ m_searchInternet->setPixmap(0,icon); -+ setTabOrder(m_kcommand, m_searchResultsWidget); -+ -+ m_kerryInstalled = !KStandardDirs::findExe(QString::fromLatin1("kerry")).isEmpty(); -+ m_isShowing = false; -+ -+ if (!m_kerryInstalled) { -+ m_searchIndex = 0; -+ m_searchActions->setMaximumHeight(5+m_searchInternet->height()); -+ } -+ else { -+ m_searchIndex = new QListViewItem(m_searchActions, i18n("Search Index")); -+ m_searchIndex->setPixmap(0,SmallIcon("kerry")); -+ m_searchActions->setMaximumHeight(5+m_searchIndex->height()*2); -+ } -+ connect(m_searchActions, SIGNAL(clicked(QListViewItem*)), SLOT(searchActionClicked(QListViewItem*))); -+ connect(m_searchActions, SIGNAL(returnPressed(QListViewItem*)), SLOT(searchActionClicked(QListViewItem*))); -+ connect(m_searchActions, SIGNAL(spacePressed(QListViewItem*)), SLOT(searchActionClicked(QListViewItem*))); -+ -+ connect(m_searchResultsWidget, SIGNAL(startService(KService::Ptr)), SLOT(slotStartService(KService::Ptr))); -+ connect(m_searchResultsWidget, SIGNAL(startURL(const QString&)), SLOT(slotStartURL(const QString&))); -+ connect(m_searchResultsWidget, SIGNAL(rightButtonPressed( QListViewItem*, const QPoint &, int )), SLOT(slotContextMenuRequested( QListViewItem*, const QPoint &, int ))); -+ -+ connect(m_recentlyView, SIGNAL(startService(KService::Ptr)), SLOT(slotStartService(KService::Ptr))); -+ connect(m_recentlyView, SIGNAL(startURL(const QString&)), SLOT(slotStartURL(const QString&))); -+ connect(m_recentlyView, SIGNAL(rightButtonPressed( QListViewItem*, const QPoint &, int )), SLOT(slotContextMenuRequested( QListViewItem*, const QPoint &, int ))); -+ -+ connect(m_favoriteView, SIGNAL(startService(KService::Ptr)), SLOT(slotStartService(KService::Ptr))); -+ connect(m_favoriteView, SIGNAL(startURL(const QString&)), SLOT(slotStartURL(const QString&))); -+ connect(m_favoriteView, SIGNAL(rightButtonPressed( QListViewItem*, const QPoint &, int )), SLOT(slotContextMenuRequested( QListViewItem*, const QPoint &, int ))); -+ connect(m_favoriteView, SIGNAL(moved(QListViewItem*, QListViewItem*, QListViewItem*)), SLOT(slotFavoritesMoved( QListViewItem*, QListViewItem*, QListViewItem* ))); -+ -+ connect(m_systemView, SIGNAL(startURL(const QString&)), SLOT(slotStartURL(const QString&))); -+ connect(m_systemView, SIGNAL(startService(KService::Ptr)), SLOT(slotStartService(KService::Ptr))); -+ connect(m_systemView, SIGNAL(rightButtonPressed( QListViewItem*, const QPoint &, int )), SLOT(slotContextMenuRequested( QListViewItem*, const QPoint &, int ))); -+ -+ connect(m_browserView, SIGNAL(startURL(const QString&)), SLOT(slotGoSubMenu(const QString&))); -+ connect(m_browserView, SIGNAL(startService(KService::Ptr)), SLOT(slotStartService(KService::Ptr))); -+ connect(m_browserView, SIGNAL(rightButtonPressed( QListViewItem*, const QPoint &, int )), SLOT(slotContextMenuRequested( QListViewItem*, const QPoint &, int ))); -+ -+ connect(m_exitView, SIGNAL(startURL(const QString&)), SLOT(slotStartURL(const QString&))); -+ connect(m_exitView, SIGNAL(rightButtonPressed( QListViewItem*, const QPoint &, int )), SLOT(slotContextMenuRequested( QListViewItem*, const QPoint &, int ))); -+ -+ m_kcommand->setDuplicatesEnabled( false ); -+ m_kcommand->setLineEdit(new KLineEdit(m_kcommand, "m_kcommand-lineedit")); -+ m_kcommand->setCompletionMode( KGlobalSettings::CompletionAuto ); -+ connect(m_kcommand, SIGNAL(cleared()), SLOT(clearedHistory())); -+ connect(m_kcommand->lineEdit(), SIGNAL(returnPressed()), SLOT(searchAccept())); -+ connect(m_kcommand->lineEdit(), SIGNAL(textChanged(const QString &)), SLOT(searchChanged(const QString &))); -+ -+ // URI Filter meta object... -+ m_filterData = new KURIFilterData(); -+ -+ max_category_id = new int [num_categories]; -+ categorised_hit_total = new int [num_categories]; -+ -+ input_timer = new QTimer (this, "input_timer"); -+ connect( input_timer, SIGNAL(timeout()), this, SLOT(doQuery()) ); -+ -+ init_search_timer = new QTimer (this, "init_search_timer"); -+ connect( init_search_timer, SIGNAL(timeout()), this, SLOT(initSearch()) ); -+ init_search_timer->start(2000, true); -+ -+ connect( m_favoriteView, SIGNAL( dropped (QDropEvent *, QListViewItem * ) ), -+ SLOT( slotFavDropped( QDropEvent *, QListViewItem * ) ) ); -+ -+ this->installEventFilter(this); -+ m_tabBar->installEventFilter(this); -+ m_favoriteView->installEventFilter(this); -+ m_recentlyView->installEventFilter(this); -+ m_browserView->leftView()->installEventFilter(this); -+ m_browserView->rightView()->installEventFilter(this); -+ m_systemView->installEventFilter(this); -+ m_exitView->leftView()->installEventFilter(this); -+ m_exitView->rightView()->installEventFilter(this); -+ m_kcommand->lineEdit()->installEventFilter(this); -+ m_searchLabel->installEventFilter(this); -+ m_searchPixmap->installEventFilter(this); -+ m_stacker->installEventFilter(this); -+ -+ emailRegExp = QRegExp("^([\\w\\-]+\\.)*[\\w\\-]+@([\\w\\-]+\\.)*[\\w\\-]+$"); -+ authRegExp = QRegExp("^[a-zA-Z]+://\\w+(:\\w+)?@([\\w\\-]+\\.)*[\\w\\-]+(:\\d+)?(/.*)?$"); -+ uriRegExp = QRegExp("^[a-zA-Z]+://([\\w\\-]+\\.)*[\\w\\-]+(:\\d+)?(/.*)?$"); -+ uri2RegExp = QRegExp("^([\\w\\-]+\\.)+[\\w\\-]+(:\\d+)?(/.*)?$"); -+ -+ m_resizeHandle = new QLabel(this); -+ m_resizeHandle->setBackgroundOrigin( QLabel::ParentOrigin ); -+ m_resizeHandle->setScaledContents(true); -+ m_resizeHandle->setFixedSize( 16, 16 ); -+ m_searchFrame->stackUnder( m_resizeHandle ); -+ m_isresizing = false; -+ -+ m_searchPixmap->setPixmap( BarIcon( "find", 32 ) ); -+ -+ QFont f = font(); -+ f.setPointSize( kMax( 7, (f.pointSize() * 4 / 5 ) + KickerSettings::kickoffFontPointSizeOffset() ) ); -+ m_tabBar->setFont ( f ); -+ f.setPointSize( kMax( 7, (f.pointSize() * 3 / 2 ) + KickerSettings::kickoffFontPointSizeOffset() ) ); -+ m_searchLabel->setFont( f ); -+ -+ static_cast<KLineEdit*>(m_kcommand->lineEdit())->setClickMessage(i18n( "Applications, Contacts and Documents" ) ); -+ -+ bookmarkManager = 0; -+ m_addressBook = 0; -+ m_popupMenu = 0; -+ -+ main_border_tl.load( locate("data", "kicker/pics/main_corner_tl.png" ) ); -+ main_border_tr.load( locate("data", "kicker/pics/main_corner_tr.png" ) ); -+ -+ search_tab_left.load( locate("data", "kicker/pics/search-tab-left.png" ) ); -+ search_tab_right.load( locate("data", "kicker/pics/search-tab-right.png" ) ); -+ search_tab_center.load( locate("data", "kicker/pics/search-tab-center.png" ) ); -+ -+ search_tab_top_left.load( locate("data", "kicker/pics/search-tab-top-left.png" ) ); -+ search_tab_top_right.load( locate("data", "kicker/pics/search-tab-top-right.png" ) ); -+ search_tab_top_center.load( locate("data", "kicker/pics/search-tab-top-center.png" ) ); -+} -+ -+void KMenu::setupUi() -+{ -+ m_stacker = new QWidgetStack( this, "m_stacker" ); -+ m_stacker->setGeometry( QRect( 90, 260, 320, 220 ) ); -+ m_stacker->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)3, (QSizePolicy::SizeType)3, 1, 1, m_stacker->sizePolicy().hasHeightForWidth() ) ); -+ m_stacker->setPaletteBackgroundColor( QColor( 255, 255, 255 ) ); -+ // m_stacker->setFocusPolicy( QWidget::StrongFocus ); -+ m_stacker->setLineWidth( 0 ); -+ m_stacker->setFocusPolicy(QWidget::NoFocus); -+ connect(m_stacker, SIGNAL(aboutToShow(QWidget*)), SLOT(stackWidgetRaised(QWidget*))); -+ -+ m_kcommand->setName("m_kcommand"); -+} -+ -+KMenu::~KMenu() -+{ -+ saveConfig(); -+ -+ clearSubmenus(); -+ delete m_filterData; -+} -+ -+bool KMenu::eventFilter ( QObject * receiver, QEvent* e) -+{ -+//kdDebug() << "eventFilter receiver=" << receiver->name() << " type=" << e->type() << endl; -+ QWidget* raiseWidget = 0; -+ QRect raiseRect; -+ -+ if (e->type() == QEvent::KeyPress || -+ e->type() == QEvent::MouseButtonPress || -+ e->type() == QEvent::MouseMove -+ || e->type() == QEvent::FocusIn -+ || e->type() == QEvent::Wheel) { -+ QPoint p; -+ -+ if (e->type() == QEvent::MouseMove || e->type() == QEvent::MouseButtonPress) { -+ QMouseEvent* me = static_cast<QMouseEvent*>(e); -+ p = me->globalPos(); -+ } -+ else if (e->type() == QEvent::Wheel) { -+ QWheelEvent* we = static_cast<QWheelEvent*>(e); -+ p = we->globalPos(); -+ } -+ -+ while (receiver) { -+ if (receiver == m_tabBar && (e->type()!=QEvent::MouseMove || KickerSettings::kickoffSwitchTabsOnHover() ) ) { -+ QTab* s = m_tabBar->selectTab(m_tabBar->mapFromGlobal(p)); -+ if (s && s->identifier() == ApplicationsTab) -+ raiseWidget = m_browserView; -+ if (s && s->identifier() == FavoriteTab) -+ raiseWidget = m_favoriteView; -+ if (s && s->identifier() == HistoryTab) -+ raiseWidget = m_recentlyView; -+ if (s && s->identifier() == ComputerTab) -+ raiseWidget = m_systemView; -+ if (s && s->identifier() == LeaveTab) -+ raiseWidget = m_exitView; -+ -+ if (raiseWidget) -+ raiseRect = QRect( m_tabBar->mapToGlobal(s->rect().topLeft()), -+ s->rect().size()); -+ } -+ -+ /* we do not want hover activation for the search line edit as this can be -+ * pretty disturbing */ -+ if ( (receiver == m_searchPixmap || -+ ( ( receiver == m_searchLabel || receiver==m_kcommand->lineEdit() ) && -+ ( e->type() == QEvent::KeyPress || e->type() == QEvent::Wheel -+ || e->type() == QEvent::MouseButtonPress ) ) ) && -+ !m_isShowing) { -+ raiseWidget = m_searchWidget; -+ raiseRect = QRect( m_searchFrame->mapToGlobal(m_searchFrame->rect().topLeft()), -+ m_searchFrame->size()); -+ } -+ -+ if(raiseWidget) -+ break; -+ if(receiver->isWidgetType()) -+ receiver = static_cast<QWidget*>(receiver)->parentWidget(true); -+ else -+ break; -+ } -+ -+ if (e->type() == QEvent::FocusIn && receiver && raiseWidget) { -+ m_searchResultsWidget->setFocusPolicy(QWidget::StrongFocus); -+ m_searchActions->setFocusPolicy(raiseWidget == m_searchWidget ? -+ QWidget::StrongFocus : QWidget::NoFocus); -+ setTabOrder(raiseWidget, m_searchResultsWidget); -+ if (raiseWidget != m_stacker->visibleWidget() -+ && static_cast<QWidget*>(receiver)->focusPolicy() == QWidget::NoFocus -+ && m_stacker->id(raiseWidget) >= 0) { -+ -+ m_stacker->raiseWidget(raiseWidget); -+ return true; -+ } -+ -+ if (raiseWidget->focusPolicy() != QWidget::NoFocus) -+ return false; -+ } -+ -+ if (m_sloppyRegion.contains(p)) { -+ if (e->type() == QEvent::MouseButtonPress /*&& m_sloppyTimer.isActive()*/) -+ m_sloppySourceClicked = true; -+ -+ if (!m_sloppyTimer.isActive() || m_sloppySource != raiseRect) { -+ int timeout= style().styleHint(QStyle::SH_PopupMenu_SubMenuPopupDelay); -+ if (m_sloppySourceClicked) -+ timeout = 3000; -+ m_sloppyTimer.start(timeout); -+ } -+ -+ m_sloppyWidget = raiseWidget; -+ m_sloppySource = raiseRect; -+ return false; -+ } -+ } -+ -+ if(e->type() == QEvent::Enter && receiver->isWidgetType()) { -+ static_cast<QWidget*>(receiver)->setMouseTracking(true); -+ QToolTip::hide(); -+ } -+ -+ if ( ( e->type() == QEvent::DragEnter || e->type() == QEvent::DragMove ) && -+ raiseWidget == m_favoriteView ) -+ { -+ m_stacker->raiseWidget(m_favoriteView); -+ -+ return false; -+ } -+ -+ // This is a nightmare of a hack, look away. Logic needs -+ // to be moved to the stacker and all widgets in the stacker -+ // must have focusNextPrevChild() overwritten to do nothing -+ if (e->type() == QEvent::KeyPress && !raiseRect.isNull()) { -+ ItemView* view; -+ if (m_browserView==m_stacker->visibleWidget()) -+ view = m_browserView->currentView(); -+ else if (m_exitView==m_stacker->visibleWidget()) -+ view = m_exitView->currentView(); -+ else -+ view = dynamic_cast<ItemView*>(m_stacker->visibleWidget()); -+ -+ if (view) -+ { -+ bool handled = true; -+ switch (static_cast<QKeyEvent*>(e)->key()) { -+ case Key_Up: -+ if (view->selectedItem()) { -+ view->setSelected(view->selectedItem()->itemAbove(),true); -+ } -+ else { -+ view->setSelected(view->lastItem(),true); -+ } -+ break; -+ case Key_Down: -+ if (view->selectedItem()) { -+ view->setSelected(view->selectedItem()->itemBelow(),true); -+ } -+ else { -+ if (view->firstChild() && view->firstChild()->isSelectable()) -+ view->setSelected(view->firstChild(),true); -+ else if (view->childCount()>2) -+ view->setSelected(view->firstChild()->itemBelow(),true); -+ } -+ break; -+ case Key_Right: -+ if (view->selectedItem() && !static_cast<KMenuItem*>(view->selectedItem())->hasChildren()) -+ break; -+ // nobreak -+ case Key_Enter: -+ case Key_Return: -+ if (view->selectedItem()) -+ view->slotItemClicked(view->selectedItem()); -+ -+ break; -+ case Key_Left: -+ if (m_browserView == m_stacker->visibleWidget() || m_exitView == m_stacker->visibleWidget()) { -+ FlipScrollView* flip = dynamic_cast<FlipScrollView*>(m_stacker->visibleWidget()); -+ if (flip->showsBackButton()) { -+ if (m_browserView == m_stacker->visibleWidget()) -+ goSubMenu( m_browserView->currentView()->backPath(), true ); -+ else -+ view->slotItemClicked(view->firstChild()); -+ } -+ break; -+ } -+ // nobreak -+ case Key_Backspace: -+ if (m_browserView == m_stacker->visibleWidget() || m_exitView == m_stacker->visibleWidget()) { -+ FlipScrollView* flip = dynamic_cast<FlipScrollView*>(m_stacker->visibleWidget()); -+ if (flip->showsBackButton()) { -+ if (m_browserView == m_stacker->visibleWidget()) -+ goSubMenu( m_browserView->currentView()->backPath(), true ); -+ else -+ view->slotItemClicked(view->firstChild()); -+ } -+ } -+ -+ break; -+ default: -+ handled = false; -+ } -+ -+ if (handled) -+ view->ensureItemVisible(view->selectedItem()); -+ -+ return handled; -+ } -+ } -+ -+ bool r = KMenuBase::eventFilter(receiver, e); -+ -+ if (!r && raiseWidget) -+ m_stacker->raiseWidget(raiseWidget); -+ -+ if (e->type() == QEvent::Wheel && raiseWidget ) -+ { -+ // due to an ugly Qt bug we have to kill wheel events -+ // that cause focus switches -+ r = true; -+ } -+ -+ if (e->type() == QEvent::Enter && receiver == m_stacker) -+ { -+ QRect r(m_stacker->mapToGlobal(QPoint(-8,-32)), m_stacker->size()); -+ r.setSize(r.size()+QSize(16,128)); -+ -+ m_sloppyRegion = QRegion(r); -+ } -+ -+ // redo the sloppy region -+ if (e->type() == QEvent::MouseMove && !r && raiseWidget) -+ { -+ QPointArray points(4); -+ -+ // hmm, eventually this should be mouse position + 10px, not -+ // just worst case. but worst case seems to work fine enough. -+ QPoint edge(raiseRect.topLeft()); -+ edge.setX(edge.x()+raiseRect.center().x()); -+ -+ if (m_orientation == BottomUp) -+ { -+ points.setPoint(0, m_stacker->mapToGlobal(m_stacker->rect().bottomLeft())); -+ points.setPoint(1, m_stacker->mapToGlobal(m_stacker->rect().bottomRight())); -+ -+ edge.setY(edge.y()+raiseRect.height()); -+ points.setPoint(2, edge+QPoint(+raiseRect.width()/4,0)); -+ points.setPoint(3, edge+QPoint(-raiseRect.width()/4,0)); -+ } -+ else -+ { -+ points.setPoint(0, m_stacker->mapToGlobal(m_stacker->rect().topLeft())); -+ points.setPoint(1, m_stacker->mapToGlobal(m_stacker->rect().topRight())); -+ points.setPoint(2, edge+QPoint(-raiseRect.width()/4,0)); -+ points.setPoint(3, edge+QPoint(+raiseRect.width()/4,0)); -+ } -+ -+ m_sloppyRegion = QRegion(points); -+ } -+ -+ return r; -+} -+ -+void KMenu::slotSloppyTimeout() -+{ -+ if (m_sloppyRegion.contains(QCursor::pos()) && !m_sloppySource.isNull()) -+ { -+ if ( m_sloppySource.contains(QCursor::pos())) -+ { -+ m_stacker->raiseWidget(m_sloppyWidget); -+ -+ m_sloppyWidget = 0; -+ m_sloppySource = QRect(); -+ m_sloppyRegion = QRegion(); -+ m_sloppySourceClicked = false; -+ } -+ } -+ m_sloppyTimer.stop(); -+} -+ -+void KMenu::paintSearchTab( bool active ) -+{ -+ QPixmap canvas( m_searchFrame->size() ); -+ QPainter p( &canvas ); -+ -+ QPixmap pix; -+ -+ if ( m_orientation == BottomUp ) -+ pix.load( locate("data", "kicker/pics/search-gradient.png" ) ); -+ else -+ pix.load( locate("data", "kicker/pics/search-gradient-topdown.png" ) ); -+ -+ pix.convertFromImage( pix.convertToImage().scale(pix.width(), m_searchFrame->height())); -+ p.drawTiledPixmap( 0, 0, m_searchFrame->width(), m_searchFrame->height(), pix ); -+ -+ if ( active ) { -+ -+ m_tabBar->deactivateTabs(true); -+ -+ p.setBrush( Qt::white ); -+ p.setPen( Qt::NoPen ); -+ -+ if ( m_orientation == BottomUp ) { -+ search_tab_center.convertFromImage( search_tab_center.convertToImage().scale(search_tab_center.width(), m_searchFrame->height())); -+ p.drawTiledPixmap( search_tab_left.width(), 0, m_searchFrame->width()-search_tab_left.width()-search_tab_right.width(), m_searchFrame->height(), search_tab_center ); -+ -+ search_tab_left.convertFromImage( search_tab_left.convertToImage().scale(search_tab_left.width(), m_searchFrame->height())); -+ p.drawPixmap( 0, 0, search_tab_left ); -+ -+ search_tab_right.convertFromImage( search_tab_right.convertToImage().scale(search_tab_right.width(), m_searchFrame->height())); -+ p.drawPixmap( m_searchFrame->width()-search_tab_right.width(), 0, search_tab_right ); -+ } -+ else { -+ search_tab_top_center.convertFromImage( search_tab_top_center.convertToImage().scale(search_tab_top_center.width(), m_searchFrame->height())); -+ p.drawTiledPixmap( search_tab_top_left.width(), 0, m_searchFrame->width()-search_tab_top_left.width()-search_tab_top_right.width(), m_searchFrame->height(), search_tab_top_center ); -+ -+ search_tab_top_left.convertFromImage( search_tab_top_left.convertToImage().scale(search_tab_top_left.width(), m_searchFrame->height())); -+ p.drawPixmap( 0, 0, search_tab_top_left ); -+ -+ search_tab_top_right.convertFromImage( search_tab_top_right.convertToImage().scale(search_tab_top_right.width(), m_searchFrame->height())); -+ p.drawPixmap( m_searchFrame->width()-search_tab_top_right.width(), 0, search_tab_top_right ); -+ } -+ } -+ else -+ m_tabBar->deactivateTabs(false); -+ -+ p.end(); -+ m_searchFrame->setPaletteBackgroundPixmap( canvas ); -+} -+ -+void KMenu::stackWidgetRaised(QWidget* raiseWidget) -+{ -+ paintSearchTab(raiseWidget == m_searchWidget); -+ -+ if (raiseWidget == m_browserView) { -+ if ( m_tabBar->currentTab() == ApplicationsTab) -+ slotGoSubMenu(QString::null); -+ if (m_browserDirty ) { -+ createNewProgramList(); -+ m_browserView->prepareRightMove(); -+ m_browserView->currentView()->clear(); -+ fillSubMenu(QString::null, m_browserView->currentView()); -+ m_browserDirty = false; -+ } -+ } -+ else if (raiseWidget == m_recentlyView) { -+ if (m_recentDirty) -+ updateRecent(); -+ } -+ else if (raiseWidget == m_exitView) { -+ if (m_tabBar->currentTab() == LeaveTab) -+ slotGoExitMainMenu(); -+ } -+ -+ -+#warning Qtab fixme -+#if 0 -+ else if (raiseWidget == m_systemView) -+ frame = m_system; -+ else if (raiseWidget == m_favoriteView) -+ frame = m_btnFavorites; -+ if (!frame) -+ return; -+ -+ if ( m_activeTab == frame ) -+ return; -+ -+ paintTab( m_activeTab, false ); -+ paintTab( frame, true ); -+ -+ // if (dynamic_cast<QScrollView*>(raiseWidget)) -+ // m_activeTab->setFocusProxy(static_cast<QScrollView*>(raiseWidget)->viewport()); -+ -+ if (0 && /*raiseWidget == m_stacker->visibleWidget() &&*/ !raiseWidget->hasFocus()) { -+ -+ if (dynamic_cast<QScrollView*>(raiseWidget)) -+ static_cast<QScrollView*>(raiseWidget)->viewport()->setFocus(); -+ else -+ raiseWidget->setFocus(); -+ } -+ -+ m_activeTab = frame; -+ -+ m_sloppyRegion = QRegion(); -+ m_sloppyTimer.stop(); -+ -+ ItemView* view; -+ if (raiseWidget == m_browserView) -+ view = m_browserView->currentView(); -+ else if (raiseWidget == m_exitView) -+ view = m_exitView->currentView(); -+ else -+ view = dynamic_cast<ItemView*>(m_stacker->visibleWidget()); -+ if (view && !view->selectedItem()) { -+ if (view->firstChild() && view->firstChild()->isSelectable()) { -+ view->setSelected(view->firstChild(),true); -+ } -+ else if (view->childCount()>1) { -+ view->setSelected(view->firstChild()->itemBelow(),true); -+ } -+ } -+#endif -+} -+ -+void KMenu::paletteChanged() -+{ -+} -+ -+void KMenu::tabClicked(QTab* t) -+{ -+ if (t==m_tabs[ApplicationsTab]) -+ slotGoSubMenu(QString::null); -+ else if (t==m_tabs[LeaveTab]) -+ slotGoExitMainMenu(); -+} -+ -+void KMenu::slotGoBack() -+{ -+ goSubMenu( m_browserView->currentView()->backPath() ); -+} -+ -+void KMenu::slotGoExitMainMenu() -+{ -+ if (m_exitView->currentView()==m_exitView->rightView()) { -+ m_exitView->prepareLeftMove(false); -+ m_exitView->showBackButton(false); -+ m_exitView->flipScroll(QString::null); -+ } -+} -+ -+void KMenu::slotGoExitSubMenu(const QString& url) -+{ -+ m_exitView->prepareRightMove(); -+ m_exitView->showBackButton(true); -+ -+ int nId = serviceMenuEndId() + 1; -+ int index = 1; -+ -+ if (url=="kicker:/restart/") { -+ QStringList rebootOptions; -+ int def, cur; -+ if ( DM().bootOptions( rebootOptions, def, cur ) ) -+ { -+ if ( cur == -1 ) -+ cur = def; -+ -+ int boot_index = 0; -+ QStringList::ConstIterator it = rebootOptions.begin(); -+ for (; it != rebootOptions.end(); ++it, ++boot_index) -+ { -+ -+ QString option = i18n( "Start '%1'" ).arg( *it ); -+ if (boot_index == cur) -+ option = i18n("Start '%1' (current)").arg( *it ); -+ m_exitView->rightView()->insertItem( "reload", option, -+ i18n( "Restart and boot directly into '%1'").arg( *it ), -+ QString( "kicker:/restart_%1" ).arg( boot_index ), nId++, index++ ); -+ } -+ m_exitView->rightView()->insertHeader( nId++, "kicker:/restart/" ); -+ } -+ } -+ else /*if (url=="kicker:/switchuser/") */{ -+ m_exitView->rightView()->insertItem( "switchuser", i18n( "Start New Session" ), -+ i18n( "Start a parallel session" ), "kicker:/switchuser", nId++, index++ ); -+ -+ m_exitView->rightView()->insertItem( "lock", i18n( "Lock Current && Start New Session").replace("&&","&"), -+ i18n( "Lock screen and start a parallel session" ), "kicker:/switchuserafterlock", nId++, index++ ); -+ -+ SessList sess; -+ if (DM().localSessions( sess )) { -+ if (sess.count()>1) -+ m_exitView->rightView()->insertSeparator( nId++, QString::null, index++ ); -+ for (SessList::ConstIterator it = sess.begin(); it != sess.end(); ++it) { -+ if ((*it).vt && !(*it).self) { -+ QString user, loc; -+ DM().sess2Str2( *it, user, loc ); -+ QStringList list = QStringList::split(":", user); -+ m_exitView->rightView()->insertItem( "switchuser", i18n( "Switch to Session of User '%1'").arg(list[0]), -+ i18n("Session: %1").arg(list[1].mid(1)+", "+loc) , QString("kicker:/switchuser_%1").arg((*it).vt), nId++, index++ ); -+ } -+ } -+ } -+ -+ m_exitView->rightView()->insertHeader( nId++, "kicker:/switchuser/" ); -+ } -+ m_exitView->flipScroll(QString::null); -+} -+ -+void KMenu::slotGoSubMenu(const QString& relPath) -+{ -+ goSubMenu(relPath); -+} -+ -+void KMenu::goSubMenu(const QString& relPath, bool keyboard) -+{ -+ if ( relPath.startsWith( "kicker:/goup/" ) ) -+ { -+ QString rel = relPath.mid( strlen( "kicker:/goup/" ) ); -+ int index = rel.length() - 1; -+ if ( rel.endsWith( "/" ) ) -+ index--; -+ index = rel.findRev( '/', index ); -+ kdDebug() << "goup, rel '" << rel << "' " << index << endl; -+ QString currel = rel; -+ rel = rel.left( index + 1 ); -+ if ( rel == "/" ) -+ rel = QString::null; -+ -+ kdDebug() << "goup, rel '" << rel << "' " << rel.isEmpty() << endl; -+ fillSubMenu( rel, m_browserView->prepareLeftMove() ); -+ m_browserView->flipScroll(keyboard ? currel : QString::null); -+ return; -+ } else if (relPath.isEmpty()) -+ { -+ if (m_browserView->currentView()->path.isEmpty()) -+ return; -+ fillSubMenu( relPath, m_browserView->prepareLeftMove() ); -+ } else if ( relPath.startsWith( "kicker:/new/" ) ) -+ { -+ ItemView* view = m_browserView->prepareRightMove(); -+ m_browserView->showBackButton( true ); -+ -+ int nId = serviceMenuEndId() + 1; -+ view->insertHeader( nId++, "new/" ); -+ int index = 2; -+ for (QStringList::ConstIterator it = m_newInstalledPrograms.begin(); -+ it != m_newInstalledPrograms.end(); ++it) { -+ KService::Ptr p = KService::serviceByStorageId((*it)); -+ view->insertMenuItem(p, nId++, index++); -+ } -+ } else -+ { -+ //m_browserView->clear(); -+ fillSubMenu(relPath, m_browserView->prepareRightMove()); -+ } -+ m_browserView->flipScroll(keyboard ? "kicker:/goup/": QString::null); -+} -+ -+void KMenu::fillSubMenu(const QString& relPath, ItemView *view) -+{ -+ kdDebug() << "fillSubMenu() " << relPath << endl; -+ KServiceGroup::Ptr root = KServiceGroup::group(relPath); -+ Q_ASSERT( root ); -+ -+ KServiceGroup::List list = root->entries(true, true, true, KickerSettings:: -+ menuEntryFormat() == KickerSettings::DescriptionAndName || KickerSettings::menuEntryFormat() -+ == KickerSettings::DescriptionOnly); -+ -+ int nId = serviceMenuStartId(); -+ m_browserView->showBackButton( !relPath.isEmpty() ); -+ if ( !relPath.isEmpty() ) -+ { -+ view->insertHeader( nId++, relPath ); -+ } -+ else if ( m_newInstalledPrograms.count() ) { -+ KMenuItem *item = view->insertItem( "clock", i18n( "New Applications" ), -+ QString::null, "kicker:/new/", nId++, -1 ); -+ item->setHasChildren( true ); -+ view->insertSeparator( nId++, QString::null, -1 ); -+ } -+ -+ view->path = relPath; -+ -+ fillMenu (root, list, relPath, view, nId); -+} -+ -+void KMenu::fillMenu(KServiceGroup::Ptr& -+#ifdef KDELIBS_SUSE -+ _root -+#endif -+ , KServiceGroup::List& _list, -+ const QString& _relPath, -+ ItemView* view, -+ int& id) -+{ -+ bool separatorNeeded = false; -+ KServiceGroup::List::ConstIterator it = _list.begin(); -+#ifdef KDELIBS_SUSE -+ KSortableValueList<KSharedPtr<KSycocaEntry>,QCString> slist; -+ KSortableValueList<KSharedPtr<KSycocaEntry>,QCString> glist; -+ QMap<QString,QString> specialTitle; -+ QMap<QString,QString> categoryIcon; -+ QMap<QString,QString> shortenedMenuPath; -+#endif -+ -+ for (; it != _list.end(); ++it) -+ { -+ KSycocaEntry * e = *it; -+ -+ if (e->isType(KST_KServiceGroup)) -+ { -+ KServiceGroup::Ptr g(static_cast<KServiceGroup *>(e)); -+#ifdef KDELIBS_SUSE -+ if ( true /*KickerSettings::reduceMenuDepth()*/ && g->SuSEshortMenu() ){ -+ KServiceGroup::List l = g->entries(true, true /*excludeNoDisplay_*/ ); -+ if ( l.count() == 1 ) { -+ // the special case, we want to short the menu. -+ // TOFIX? : this works only for one level -+ KServiceGroup::List::ConstIterator _it=l.begin(); -+ KSycocaEntry *_e = *_it; -+ if (_e->isType(KST_KService)) { -+ KService::Ptr s(static_cast<KService *>(_e)); -+ QString key; -+ if ( g->SuSEgeneralDescription() ) { -+ // we use the application name -+ key = s->name(); -+ } -+ else { -+ // we use the normal menu description -+ key = s->name(); -+ if( !s->genericName().isEmpty() && g->caption()!=s->genericName()) { -+ if (KickerSettings::menuEntryFormat() == KickerSettings::NameAndDescription) -+ key = s->name() + " (" + g->caption() + ")"; -+ else if (KickerSettings::menuEntryFormat() == KickerSettings::DescriptionAndName) -+ key = g->caption() + " (" + s->name() + ")"; -+ else if (KickerSettings::menuEntryFormat() == KickerSettings::DescriptionOnly) -+ key = g->caption(); -+ } -+ } -+ specialTitle.insert( _e->name(), key ); -+ categoryIcon.insert( _e->name(), g->icon() ); -+ slist.insert( key.local8Bit(), _e ); -+ shortenedMenuPath.insert( _e->name(), g->relPath() ); -+ // and escape from here -+ continue; -+ } -+ } -+ } -+ glist.insert( g->caption().local8Bit(), e ); -+ }else if( e->isType(KST_KService)) { -+ KService::Ptr s(static_cast<KService *>(e)); -+ slist.insert( s->name().local8Bit(), e ); -+ } else -+ slist.insert( e->name().local8Bit(), e ); -+ } -+ -+ _list = _root->SuSEsortEntries( slist, glist, true /*excludeNoDisplay_*/, true ); -+ it = _list.begin(); -+ -+ for (; it != _list.end(); ++it) { -+ -+ KSycocaEntry * e = *it; -+ -+ if (e->isType(KST_KServiceGroup)) { -+ -+ KServiceGroup::Ptr g(static_cast<KServiceGroup *>(e)); -+ if ( true /*KickerSettings::reduceMenuDepth()*/ && g->SuSEshortMenu() ){ -+ KServiceGroup::List l = g->entries(true, true /*excludeNoDisplay_*/ ); -+ if ( l.count() == 1 ) { -+ continue; -+ } -+ } -+ // standard sub menu -+#endif -+ QString groupCaption = g->caption(); -+ -+ // Avoid adding empty groups. -+ KServiceGroup::Ptr subMenuRoot = KServiceGroup::group(g->relPath()); -+ -+ int nbChildCount = subMenuRoot->childCount(); -+ if (nbChildCount == 0 && !g->showEmptyMenu()) -+ { -+ continue; -+ } -+ -+ bool is_description = KickerSettings::menuEntryFormat() == KickerSettings::DescriptionAndName || -+ KickerSettings::menuEntryFormat() == KickerSettings::DescriptionOnly; -+ -+ QString inlineHeaderName = g->showInlineHeader() ? groupCaption : ""; -+ -+ if ( nbChildCount == 1 && g->allowInline() && g->inlineAlias()) -+ { -+ KServiceGroup::Ptr element = KServiceGroup::group(g->relPath()); -+ if ( element ) -+ { -+ //just one element -+ -+ KServiceGroup::List listElement = element->entries(true, true, true, is_description ); -+ KSycocaEntry * e1 = *( listElement.begin() ); -+ if ( e1->isType( KST_KService ) ) -+ { -+ KService::Ptr s(static_cast<KService *>(e1)); -+ view->insertMenuItem(s, id++, -1, 0); -+ continue; -+ } -+ } -+ } -+ -+ if (g->allowInline() && ((nbChildCount <= g->inlineValue() ) || (g->inlineValue() == 0))) -+ { -+ //inline all entries -+ KServiceGroup::Ptr rootElement = KServiceGroup::group(g->relPath()); -+ -+ if (!rootElement || !rootElement->isValid()) -+ { -+ break; -+ } -+ -+ -+ KServiceGroup::List listElement = rootElement->entries(true, true, true, is_description ); -+ -+#if 0 -+ if ( !g->inlineAlias() && !inlineHeaderName.isEmpty() ) -+ { -+ int mid = view->insertItem(new PopupMenuTitle(inlineHeaderName, font()), id++, id, 0); -+ m_browserView->setItemEnabled( mid, false ); -+ } -+#endif -+ -+ fillMenu( rootElement, listElement, g->relPath(), 0, id ); -+ continue; -+ } -+ -+ // Ignore dotfiles. -+ if ((g->name().at(0) == '.')) -+ { -+ continue; -+ } -+ -+ KMenuItem *item = view->insertItem(g->icon(), groupCaption, QString::null, g->relPath(), id++, -1); -+ item->setMenuPath(g->relPath()); -+ item->setHasChildren( true ); -+ -+#warning FIXME -+#if 0 -+ PanelServiceMenu * m = -+ newSubMenu(g->name(), g->relPath(), this, g->name().utf8(), inlineHeaderName); -+ m->setCaption(groupCaption); -+ -+ QIconSet iconset = KickerLib::menuIconSet(g->icon()); -+ -+ if (separatorNeeded) -+ { -+ insertSeparator(); -+ separatorNeeded = false; -+ } -+ -+ int newId = insertItem(iconset, groupCaption, m, id++); -+ entryMap_.insert(newId, static_cast<KSycocaEntry*>(g)); -+ // We have to delete the sub menu our selves! (See Qt docs.) -+ subMenus.append(m); -+#endif -+ } -+ if (e->isType(KST_KService)) -+ { -+ KService::Ptr s(static_cast<KService *>(e)); -+ if (_relPath.isEmpty()) { -+ QStringList favs = KickerSettings::favorites(); -+ if (favs.find(s->storageId())!=favs.end()) -+ continue; -+ } -+#ifdef KDELIBS_SUSE -+ KMenuItem *item = view->insertMenuItem(s, id++, -1, 0, QString::null, specialTitle[s->name()], categoryIcon[s->name()] ); -+ if (shortenedMenuPath[s->name()].isEmpty()) -+ item->setMenuPath(_relPath+s->menuId()); -+ else -+ item->setMenuPath(shortenedMenuPath[s->name()]+s->menuId()); -+#else -+ KMenuItem *item = view->insertMenuItem(s, id++, -1); -+ item->setMenuPath(_relPath+s->menuId()); -+#endif -+ } -+ else if (e->isType(KST_KServiceSeparator)) -+ { -+ separatorNeeded = true; -+ } -+ } -+ -+ view->slotMoveContent(); -+} -+ -+void KMenu::initialize() -+{ -+ static bool m_initialized=false; -+ if (m_initialized) -+ return; -+ m_initialized = true; -+ -+ kdDebug(1210) << "KMenu::initialize()" << endl; -+ -+ // in case we've been through here before, let's disconnect -+ disconnect(kapp, SIGNAL(kdisplayPaletteChanged()), -+ this, SLOT(paletteChanged())); -+ connect(kapp, SIGNAL(kdisplayPaletteChanged()), -+ this, SLOT(paletteChanged())); -+ -+ /* -+ If the user configured ksmserver to -+ */ -+ KConfig ksmserver("ksmserverrc", false, false); -+ ksmserver.setGroup("General"); -+ connect( m_branding, SIGNAL(clicked()), SLOT(slotOpenHomepage())); -+ m_tabBar->setTabEnabled(LeaveTab, kapp->authorize("logout")); -+ -+ // load search field history -+ QStringList histList = KickerSettings::history(); -+ int maxHistory = KickerSettings::historyLength(); -+ -+ bool block = m_kcommand->signalsBlocked(); -+ m_kcommand->blockSignals( true ); -+ m_kcommand->setMaxCount( maxHistory ); -+ m_kcommand->setHistoryItems( histList ); -+ m_kcommand->blockSignals( block ); -+ -+ QStringList compList = KickerSettings::completionItems(); -+ if( compList.isEmpty() ) -+ m_kcommand->completionObject()->setItems( histList ); -+ else -+ m_kcommand->completionObject()->setItems( compList ); -+ -+ KCompletionBox* box = m_kcommand->completionBox(); -+ if (box) -+ box->setActivateOnSelect( false ); -+ -+ m_finalFilters = KURIFilter::self()->pluginNames(); -+ m_finalFilters.remove("kuriikwsfilter"); -+ -+ m_middleFilters = m_finalFilters; -+ m_middleFilters.remove("localdomainurifilter"); -+ -+ QStringList favs = KickerSettings::favorites(); -+ if (favs.isEmpty()) { -+ QFile f(locate("data", "kicker/default-favs")); -+ if (f.open(IO_ReadOnly)) { -+ QTextStream is(&f); -+ -+ while (!is.eof()) -+ favs << is.readLine(); -+ -+ f.close(); -+ } -+ KickerSettings::setFavorites(favs); -+ KickerSettings::writeConfig(); -+ } -+ -+ int nId = serviceMenuEndId() + 1; -+ int index = 1; -+ for (QStringList::ConstIterator it = favs.begin(); it != favs.end(); ++it) -+ { -+ if ((*it)[0]=='/') { -+ KDesktopFile df((*it),true); -+ QString url = df.readURL(); -+ if (!KURL(url).isLocalFile() || QFile::exists(url.replace("file://",QString::null))) -+ m_favoriteView->insertItem(df.readIcon(),df.readName(),df.readGenericName(), url, nId++, index++); -+ } -+ else { -+ KService::Ptr p = KService::serviceByStorageId((*it)); -+ m_favoriteView->insertMenuItem(p, nId++, index++); -+ } -+ } -+ -+ //nId = m_favoriteView->insertSeparator( nId, QString::null, index++ ); -+// m_favoriteView->insertDocument(KURL("help:/khelpcenter/userguide/index.html"), nId++); -+ -+ insertStaticItems(); -+ -+ m_stacker->raiseWidget (m_favoriteView); -+} -+ -+void KMenu::insertStaticExitItems() -+{ -+ int nId = serviceMenuEndId() + 1; -+ int index = 1; -+ -+ m_exitView->leftView()->insertSeparator( nId++, i18n("Session"), index++ ); -+ if (kapp->authorize("logout")) -+ m_exitView->leftView()->insertItem( "undo", i18n( "Logout" ), -+ i18n( "End session" ), "kicker:/logout", nId++, index++ ); -+ if (kapp->authorize("lock_screen")) -+ m_exitView->leftView()->insertItem( "lock", i18n( "Lock" ), -+ i18n( "Lock screen" ), "kicker:/lock", nId++, index++ ); -+ -+ KConfig ksmserver("ksmserverrc", false, false); -+ ksmserver.setGroup("General"); -+ if (ksmserver.readEntry( "loginMode" ) == "restoreSavedSession") -+ { -+ m_exitView->leftView()->insertItem("filesave", i18n("Save Session"), -+ i18n("Save current Session for next login"), -+ "kicker:/savesession", nId++, index++ ); -+ } -+ if (DM().isSwitchable() && kapp->authorize("switch_user")) -+ { -+ KMenuItem *switchuser = m_exitView->leftView()->insertItem( "switchuser", i18n( "Switch User" ), -+ i18n( "Manage parallel sessions" ), "kicker:/switchuser/", nId++, index++ ); -+ switchuser->setHasChildren(true); -+ } -+ -+ bool maysd = false; -+ if (ksmserver.readBoolEntry( "offerShutdown", true ) && DM().canShutdown()) -+ maysd = true; -+ -+ if ( maysd ) -+ { -+ m_exitView->leftView()->insertSeparator( nId++, i18n("System"), index++ ); -+ m_exitView->leftView()->insertItem( "exit", i18n( "Shutdown Computer" ), -+ i18n( "Turn off computer" ), "kicker:/shutdown", nId++, index++ ); -+ -+ m_exitView->leftView()->insertItem( "reload", i18n( "&Restart Computer" ).replace("&",""), -+ i18n( "Restart and boot the default system" ), -+ "kicker:/restart", nId++, index++ ); -+ -+ insertSuspendOption(nId, index); -+ -+ int def, cur; -+ QStringList dummy_opts; -+ if ( DM().bootOptions( dummy_opts, def, cur ) ) -+ { -+ -+ KMenuItem *restart = m_exitView->leftView()->insertItem( "reload", i18n( "Start Operating System" ), -+ i18n( "Restart and boot another operating system" ), -+ "kicker:/restart/", nId++, index++ ); -+ restart->setHasChildren(true); -+ } -+ } -+} -+ -+void KMenu::insertStaticItems() -+{ -+ insertStaticExitItems(); -+ -+ int nId = serviceMenuEndId() + 10; -+ int index = 1; -+ -+ m_systemView->insertSeparator( nId++, i18n("Applications"), index++); -+ -+ KService::Ptr p = KService::serviceByStorageId("/usr/share/applications/YaST.desktop"); -+ m_systemView->insertMenuItem(p, nId++, index++); -+ -+ m_systemView->insertItem( "info", i18n( "System Information" ), -+ "sysinfo:/", "sysinfo:/", nId++, index++ ); -+ -+ m_systemView->insertSeparator( nId++, i18n("System Folders"), index++ ); -+ -+ m_systemView->insertItem( "folder_home", i18n( "Home Folder" ), -+ QDir::homeDirPath(), "file://"+QDir::homeDirPath(), nId++, index++ ); -+ -+ if ( KStandardDirs::exists( KGlobalSettings::documentPath() + "/" ) ) -+ { -+ QString documentPath = KGlobalSettings::documentPath(); -+ if ( documentPath.endsWith( "/" ) ) -+ documentPath = documentPath.left( documentPath.length() - 1 ); -+ if (documentPath!=QDir::homeDirPath()) -+ m_systemView->insertItem( "folder_man", i18n( "My Documents" ), documentPath, documentPath, nId++, index++ ); -+ } -+ -+ m_systemView->insertItem( "network", i18n( "Network Folders" ), -+ "remote:/", "remote:/", nId++, index++ ); -+ -+ m_mediaWatcher = new MediaWatcher( this ); -+ connect( m_mediaWatcher, SIGNAL( mediumChanged() ), SLOT( updateMedia() ) ); -+ m_media_id = 0; -+ -+ connect(&m_mediaFreeTimer, SIGNAL(timeout()), SLOT( updateMedia())); -+} -+ -+int KMenu::insertClientMenu(KickerClientMenu *) -+{ -+#if 0 -+ int id = client_id; -+ clients.insert(id, p); -+ return id; -+#endif -+ return 0; -+} -+ -+void KMenu::removeClientMenu(int) -+{ -+#if 0 -+ clients.remove(id); -+ slotClear(); -+#endif -+} -+ -+extern int kicker_screen_number; -+ -+void KMenu::slotLock() -+{ -+ kdDebug() << "slotLock " << endl; -+ accept(); -+ QCString appname( "kdesktop" ); -+ if ( kicker_screen_number ) -+ appname.sprintf("kdesktop-screen-%d", kicker_screen_number); -+ kapp->dcopClient()->send(appname, "KScreensaverIface", "lock()", ""); -+} -+ -+void KMenu::slotOpenHomepage() -+{ -+ accept(); -+ kapp->invokeBrowser("http://opensuse.org"); -+} -+ -+void KMenu::slotLogout() -+{ -+ kapp->requestShutDown(); -+} -+ -+void KMenu::slotPopulateSessions() -+{ -+ int p = 0; -+ DM dm; -+ -+ sessionsMenu->clear(); -+ if (kapp->authorize("start_new_session") && (p = dm.numReserve()) >= 0) -+ { -+ if (kapp->authorize("lock_screen")) -+ sessionsMenu->insertItem(/*SmallIconSet("lockfork"),*/ i18n("Lock Current && Start New Session"), 100 ); -+ sessionsMenu->insertItem(SmallIconSet("fork"), i18n("Start New Session"), 101 ); -+ if (!p) { -+ sessionsMenu->setItemEnabled( 100, false ); -+ sessionsMenu->setItemEnabled( 101, false ); -+ } -+ sessionsMenu->insertSeparator(); -+ } -+ SessList sess; -+ if (dm.localSessions( sess )) -+ for (SessList::ConstIterator it = sess.begin(); it != sess.end(); ++it) { -+ int id = sessionsMenu->insertItem( DM::sess2Str( *it ), (*it).vt ); -+ if (!(*it).vt) -+ sessionsMenu->setItemEnabled( id, false ); -+ if ((*it).self) -+ sessionsMenu->setItemChecked( id, true ); -+ } -+} -+ -+void KMenu::slotSessionActivated( int ent ) -+{ -+ if (ent == 100) -+ doNewSession( true ); -+ else if (ent == 101) -+ doNewSession( false ); -+ else if (!sessionsMenu->isItemChecked( ent )) -+ DM().lockSwitchVT( ent ); -+} -+ -+void KMenu::doNewSession( bool lock ) -+{ -+ int result = KMessageBox::warningContinueCancel( -+ kapp->desktop()->screen(kapp->desktop()->screenNumber(this)), -+ i18n("<p>You have chosen to open another desktop session.<br>" -+ "The current session will be hidden " -+ "and a new login screen will be displayed.<br>" -+ "An F-key is assigned to each session; " -+ "F%1 is usually assigned to the first session, " -+ "F%2 to the second session and so on. " -+ "You can switch between sessions by pressing " -+ "Ctrl, Alt and the appropriate F-key at the same time. " -+ "Additionally, the KDE Panel and Desktop menus have " -+ "actions for switching between sessions.</p>") -+ .arg(7).arg(8), -+ i18n("Warning - New Session"), -+ KGuiItem(i18n("&Start New Session"), "fork"), -+ ":confirmNewSession", -+ KMessageBox::PlainCaption | KMessageBox::Notify); -+ -+ if (result==KMessageBox::Cancel) -+ return; -+ -+ if (lock) -+ slotLock(); -+ -+ DM().startReserve(); -+} -+ -+void KMenu::searchAccept() -+{ -+ QString cmd = m_kcommand->currentText().stripWhiteSpace(); -+ -+ bool logout = (cmd == "logout"); -+ bool lock = (cmd == "lock"); -+ -+ addToHistory(); -+ -+ if ( !logout && !lock ) -+ { -+ // first try if we have any search action -+ if (m_searchResultsWidget->currentItem()) { -+ m_searchResultsWidget->slotItemClicked(m_searchResultsWidget->currentItem()); -+ return; -+ } -+ } -+ -+ accept(); -+ saveConfig(); -+ -+ if ( logout ) -+ { -+ kapp->propagateSessionManager(); -+ kapp->requestShutDown(); -+ } -+ if ( lock ) -+ { -+ QCString appname( "kdesktop" ); -+ int kicker_screen_number = qt_xscreen(); -+ if ( kicker_screen_number ) -+ appname.sprintf("kdesktop-screen-%d", kicker_screen_number); -+ kapp->dcopClient()->send(appname, "KScreensaverIface", "lock()", ""); -+ } -+} -+ -+bool KMenu::runCommand() -+{ -+ kdDebug() << "runCommand() " << m_kcommand->lineEdit()->text() << endl; -+ // Ignore empty commands... -+ if ( m_kcommand->lineEdit()->text().isEmpty() ) -+ return true; -+ -+ accept(); -+ -+ if (input_timer->isActive ()) -+ input_timer->stop (); -+ -+ // Make sure we have an updated data -+ parseLine( true ); -+ -+ bool block = m_kcommand->signalsBlocked(); -+ m_kcommand->blockSignals( true ); -+ m_kcommand->clearEdit(); -+ m_kcommand->setFocus(); -+ m_kcommand->reset(); -+ m_kcommand->blockSignals( block ); -+ -+ -+ QString cmd; -+ KURL uri = m_filterData->uri(); -+ if ( uri.isLocalFile() && !uri.hasRef() && uri.query().isEmpty() ) -+ cmd = uri.path(); -+ else -+ cmd = uri.url(); -+ -+ QString exec; -+ -+ switch( m_filterData->uriType() ) -+ { -+ case KURIFilterData::LOCAL_FILE: -+ case KURIFilterData::LOCAL_DIR: -+ case KURIFilterData::NET_PROTOCOL: -+ case KURIFilterData::HELP: -+ { -+ // No need for kfmclient, KRun does it all (David) -+ (void) new KRun( m_filterData->uri(), parentWidget()); -+ return false; -+ } -+ case KURIFilterData::EXECUTABLE: -+ { -+ if( !m_filterData->hasArgsAndOptions() ) -+ { -+ // Look for desktop file -+ KService::Ptr service = KService::serviceByDesktopName(cmd); -+ if (service && service->isValid() && service->type() == "Application") -+ { -+ notifyServiceStarted(service); -+ KRun::run(*service, KURL::List()); -+ return false; -+ } -+ } -+ } -+ // fall-through to shell case -+ case KURIFilterData::SHELL: -+ { -+ if (kapp->authorize("shell_access")) -+ { -+ exec = cmd; -+ -+ if( m_filterData->hasArgsAndOptions() ) -+ cmd += m_filterData->argsAndOptions(); -+ -+ break; -+ } -+ else -+ { -+ KMessageBox::sorry( this, i18n("<center><b>%1</b></center>\n" -+ "You do not have permission to execute " -+ "this command.") -+ .arg( QStyleSheet::convertFromPlainText(cmd) )); -+ return true; -+ } -+ } -+ case KURIFilterData::UNKNOWN: -+ case KURIFilterData::ERROR: -+ default: -+ { -+ // Look for desktop file -+ KService::Ptr service = KService::serviceByDesktopName(cmd); -+ if (service && service->isValid() && service->type() == "Application") -+ { -+ notifyServiceStarted(service); -+ KRun::run(*service, KURL::List(), this); -+ return false; -+ } -+ -+ service = KService::serviceByName(cmd); -+ if (service && service->isValid() && service->type() == "Application") -+ { -+ notifyServiceStarted(service); -+ KRun::run(*service, KURL::List(), this); -+ return false; -+ } -+ -+ KMessageBox::sorry( this, i18n("<center><b>%1</b></center>\n" -+ "Could not run the specified command.") -+ .arg( QStyleSheet::convertFromPlainText(cmd) )); -+ return true; -+ } -+ } -+ -+ if ( KRun::runCommand( cmd, exec, m_iconName ) ) -+ return false; -+ -+ KMessageBox::sorry( this, i18n("<center><b>%1</b></center>\n" -+ "The specified command does not exist.").arg(cmd) ); -+ return true; // Let the user try again... -+} -+ -+void KMenu::show() -+{ -+ m_isShowing = true; -+ emit aboutToShow(); -+ -+ initialize(); -+ -+ PanelPopupButton *kButton = MenuManager::the()->findKButtonFor( this ); -+ if (kButton) -+ { -+ QPoint center = kButton->center(); -+ QRect screen = QApplication::desktop()->screenGeometry( center ); -+ setOrientation((center.y()-screen.y()<screen.height()/2) -+ ? TopDown : BottomUp); -+ } -+ -+ m_browserDirty=true; -+ m_recentDirty=true; -+ -+ updateMedia(); -+ m_mediaFreeTimer.start(10 * 1000); // refresh all 10s -+ -+ m_stacker->raiseWidget(FavoriteTab); -+ m_kcommand->clear(); -+ current_query.clear(); -+ m_kcommand->setFocus(); -+ -+ // we need to reenable it -+ m_toolTipsEnabled = QToolTip::isGloballyEnabled(); -+ QToolTip::setGloballyEnabled(KickerSettings::showToolTips()); -+ -+ KMenuBase::show(); -+ m_isShowing = false; -+} -+ -+void KMenu::setOrientation(MenuOrientation orientation) -+{ -+ if (m_orientation == orientation) -+ return; -+ -+ m_orientation=orientation; -+ -+ m_resizeHandle->setCursor(m_orientation == BottomUp ? Qt::sizeBDiagCursor : Qt::sizeFDiagCursor); -+ -+ QPixmap pix; -+ if ( m_orientation == BottomUp ) -+ pix.load( locate("data", "kicker/pics/search-gradient.png" ) ); -+ else -+ pix.load( locate("data", "kicker/pics/search-gradient-topdown.png" ) ); -+ -+ pix.convertFromImage( pix.convertToImage().scale(pix.width(), m_searchFrame->height())); -+ m_search->mainWidget()->setPaletteBackgroundPixmap( pix ); -+ m_resizeHandle->setPaletteBackgroundPixmap( pix ); -+ -+ m_tabBar->setShape( m_orientation == BottomUp -+ ? QTabBar::RoundedBelow : QTabBar::RoundedAbove); -+ -+ QPixmap respix = QPixmap( locate("data", "kicker/pics/resize_handle.png" ) ); -+ if ( m_orientation == TopDown ) { -+ QWMatrix m; -+ m.rotate( 90.0 ); -+ respix=respix.xForm(m); -+ } -+ m_resizeHandle->setPixmap(respix); -+ -+ { -+ QWidget *footer = m_footer->mainWidget(); -+ QPixmap pix( 64, footer->height() ); -+ QPainter p( &pix ); -+ p.fillRect( 0, 0, 64, footer->height(), m_branding->colorGroup().brush( QColorGroup::Base ) ); -+ p.fillRect( 0, m_orientation == BottomUp ? footer->height() - 2 : 0, -+ 64, 3, KNewButton::self()->borderColor() ); -+ p.end(); -+ footer->setPaletteBackgroundPixmap( pix ); -+ } -+ -+ resizeEvent(new QResizeEvent(sizeHint(), sizeHint())); -+} -+ -+void KMenu::showMenu() -+{ -+ kdDebug() << "KMenu::showMenu()" << endl; -+ PanelPopupButton *kButton = MenuManager::the()->findKButtonFor(this); -+ if (kButton) -+ { -+ adjustSize(); -+ kButton->showMenu(); -+ } -+ else -+ { -+ show(); -+ } -+ kdDebug() << "end KMenu::showMenu()" << endl; -+} -+ -+void KMenu::hide() -+{ -+ //kdDebug() << "KMenu::hide() from " << kdBacktrace() << endl; -+ -+ // TODO: hide popups -+ -+ emit aboutToHide(); -+ -+ if (m_popupMenu) { -+ m_popupMenu->deleteLater(); -+ m_popupMenu=0; -+ } -+ m_mediaFreeTimer.stop(); -+ -+ m_isresizing = false; -+ -+ KickerSettings::setKMenuWidth(width()); -+ KickerSettings::setKMenuHeight(height()); -+ KickerSettings::writeConfig(); -+ -+ QToolTip::setGloballyEnabled(m_toolTipsEnabled); -+ -+ // remove focus from lineedit again, otherwise it doesn't kill its timers -+ m_stacker->raiseWidget(FavoriteTab); -+ -+ QWidget::hide(); -+} -+ -+void KMenu::paintEvent(QPaintEvent * e) -+{ -+ KMenuBase::paintEvent(e); -+ -+ QPainter p(this); -+ p.setClipRegion(e->region()); -+ -+ const BackgroundMode bgmode = backgroundMode(); -+ const QColorGroup::ColorRole crole = QPalette::backgroundRoleFromMode( bgmode ); -+ p.setBrush( colorGroup().brush( crole ) ); -+ -+ p.drawRect( 0, 0, width(), height() ); -+ int ypos = m_search->mainWidget()->geometry().bottom(); -+ -+ p.drawPixmap( 0, ypos, main_border_tl ); -+ p.drawPixmap( width() - main_border_tr.width(), ypos, main_border_tr ); -+ // p.drawPixmap( 0, ->y(), button_box_left ); -+} -+ -+ -+void KMenu::configChanged() -+{ -+ RecentlyLaunchedApps::the().m_bNeedToUpdate = false; -+ RecentlyLaunchedApps::the().configChanged(); -+ -+ m_exitView->leftView()->clear(); -+ insertStaticExitItems(); -+} -+ -+// create and fill "recent" section at first -+void KMenu::createRecentMenuItems() -+{ -+ RecentlyLaunchedApps::the().init(); -+ -+ if (!KickerSettings::numVisibleEntries()) -+ KickerSettings::setNumVisibleEntries(5); -+ -+ int nId = serviceMenuEndId() + 1; -+ m_recentlyView->insertSeparator( nId++, i18n( "Applications" ), -1 ); -+ -+ QStringList RecentApps; -+ -+ if (!KickerSettings::recentVsOften()) { -+ KickerSettings::setRecentVsOften(true); -+ RecentlyLaunchedApps::the().configChanged(); -+ RecentlyLaunchedApps::the().getRecentApps(RecentApps); -+ KickerSettings::setRecentVsOften(false); -+ RecentlyLaunchedApps::the().configChanged(); -+ } -+ else -+ RecentlyLaunchedApps::the().getRecentApps(RecentApps); -+ -+ -+ if (RecentApps.count() > 0) -+ { -+// bool bSeparator = KickerSettings::showMenuTitles(); -+ int nIndex = 0; -+ -+ for (QValueList<QString>::ConstIterator it = -+ RecentApps.begin(); it!=RecentApps.end(); ++it) -+ { -+ KService::Ptr s = KService::serviceByStorageId(*it); -+ if (!s) -+ { -+ RecentlyLaunchedApps::the().removeItem(*it); -+ } -+ else -+ m_recentlyView->insertMenuItem(s, nIndex++); -+ } -+ -+ } -+ -+ m_recentlyView->insertSeparator( nId++, i18n( "Documents" ), -1 ); -+ -+ QStringList fileList = KRecentDocument::recentDocuments(); -+ kdDebug() << "createRecentMenuItems=" << fileList << endl; -+ for (QStringList::ConstIterator it = fileList.begin(); -+ it != fileList.end(); -+ ++it) -+ m_recentlyView->insertRecentlyItem(*it, nId++); -+ -+} -+ -+void KMenu::clearSubmenus() -+{ -+ // we don't need to delete these on the way out since the libloader -+ // handles them for us -+ if (QApplication::closingDown()) -+ { -+ return; -+ } -+ -+ for (PopupMenuList::const_iterator it = dynamicSubMenus.constBegin(); -+ it != dynamicSubMenus.constEnd(); -+ ++it) -+ { -+ delete *it; -+ } -+ dynamicSubMenus.clear(); -+} -+ -+void KMenu::updateRecent() -+{ -+ m_recentlyView->clear(); -+ -+ createRecentMenuItems(); -+ -+ m_recentDirty = false; -+} -+ -+void KMenu::popup(const QPoint&, int) -+{ -+ showMenu(); -+} -+ -+void KMenu::clearRecentAppsItems() -+{ -+ RecentlyLaunchedApps::the().clearRecentApps(); -+ RecentlyLaunchedApps::the().save(); -+ RecentlyLaunchedApps::the().m_bNeedToUpdate = true; -+ updateRecent(); -+} -+ -+void KMenu::clearRecentDocsItems() -+{ -+ KRecentDocument::clear(); -+ updateRecent(); -+} -+ -+void KMenu::searchChanged(const QString & text) -+{ -+ if (!text.isEmpty()) { -+ const QColor on = QColor( 244, 244, 244 ); -+ const QColor off = QColor( 181, 181, 181 ); -+ m_stacker->raiseWidget(m_searchWidget); -+ paintSearchTab(true); -+ } -+ -+ m_searchActions->clearSelection(); -+ m_searchResultsWidget->clearSelection(); -+ -+ if (input_timer->isActive ()) -+ input_timer->stop (); -+ input_timer->start (WAIT_BEFORE_QUERYING, TRUE); -+} -+ -+bool KMenu::dontQueryNow (const QString& str) -+{ -+ if (str.isEmpty ()) -+ return true; -+ if (str == current_query.get()) -+ return true; -+ int length = str.length (); -+ int last_whitespace = str.findRev (' ', -1); -+ if (last_whitespace == length-1) -+ return false; // if the user typed a space, search -+ if (last_whitespace >= length-2) -+ return true; // dont search if the user only typed one character -+ QChar lastchar = str[length-1]; -+ if (lastchar == ":" || lastchar == "=") -+ return true; -+ return false; -+} -+ -+void KMenu::createNewProgramList() -+{ -+ m_seenProgramsChanged = false; -+ m_seenPrograms = KickerSettings::firstSeenApps(); -+ m_newInstalledPrograms.clear(); -+ -+ m_currentDate = QDate::currentDate().toString(Qt::ISODate); -+ -+ bool initialize = (m_seenPrograms.count() == 0); -+ -+ createNewProgramList(QString::null); -+ -+ if (initialize) { -+ for (QStringList::Iterator it = m_seenPrograms.begin(); it != m_seenPrograms.end(); ++it) -+ *(++it)="-"; -+ -+ m_newInstalledPrograms.clear(); -+ } -+ -+ if (m_seenProgramsChanged) { -+ KickerSettings::setFirstSeenApps(m_seenPrograms); -+ KickerSettings::writeConfig(); -+ } -+} -+ -+void KMenu::createNewProgramList(QString relPath) -+{ -+ KServiceGroup::Ptr group = KServiceGroup::group(relPath); -+ if (!group || !group->isValid()) -+ return; -+ -+ KServiceGroup::List list = group->entries(); -+ if (list.isEmpty()) -+ return; -+ -+ KServiceGroup::List::ConstIterator it = list.begin(); -+ for(; it != list.end(); ++it) { -+ KSycocaEntry *e = *it; -+ -+ if(e != 0) { -+ if(e->isType(KST_KServiceGroup)) { -+ KServiceGroup::Ptr g(static_cast<KServiceGroup *>(e)); -+ if(!g->noDisplay()) -+ createNewProgramList(g->relPath()); -+ } else if(e->isType(KST_KService)) { -+ KService::Ptr s(static_cast<KService *>(e)); -+ if(s->type() == "Application" && !s->noDisplay() ) { -+ QString shortStorageId = s->storageId().replace(".desktop",QString::null); -+ QStringList::Iterator it_find = m_seenPrograms.begin(); -+ QStringList::Iterator it_end = m_seenPrograms.end(); -+ bool found = false; -+ for (; it_find != it_end; ++it_find) { -+ if (*(it_find)==shortStorageId) { -+ found = true; -+ break; -+ } -+ ++it_find; -+ } -+ if (!found) { -+ m_seenProgramsChanged=true; -+ m_seenPrograms+=shortStorageId; -+ m_seenPrograms+=m_currentDate; -+ if (m_newInstalledPrograms.find(s->storageId())==m_newInstalledPrograms.end()) -+ m_newInstalledPrograms+=s->storageId(); -+ } -+ else { -+ ++it_find; -+ if (*(it_find)!="-") { -+ QDate date = QDate::fromString(*(it_find),Qt::ISODate); -+ if (date.daysTo(QDate::currentDate())<3) { -+ if (m_newInstalledPrograms.find(s->storageId())==m_newInstalledPrograms.end()) -+ m_newInstalledPrograms+=s->storageId(); -+ } -+ else { -+ m_seenProgramsChanged=true; -+ (*it_find)="-"; -+ } -+ } -+ } -+ } -+ } -+ } -+ } -+} -+ -+void KMenu::searchProgramList(QString relPath) -+{ -+ KServiceGroup::Ptr group = KServiceGroup::group(relPath); -+ if (!group || !group->isValid()) -+ return; -+ -+ KServiceGroup::List list = group->entries(); -+ if (list.isEmpty()) -+ return; -+ -+ KServiceGroup::List::ConstIterator it = list.begin(); -+ for(; it != list.end(); ++it) { -+ KSycocaEntry *e = *it; -+ -+ if(e != 0) { -+ if(e->isType(KST_KServiceGroup)) { -+ KServiceGroup::Ptr g(static_cast<KServiceGroup *>(e)); -+ if(!g->noDisplay()) -+ searchProgramList(g->relPath()); -+ } else if(e->isType(KST_KService)) { -+ KService::Ptr s(static_cast<KService *>(e)); -+ if(s->type() == "Application" && !s->noDisplay() && !checkUriInMenu(s->desktopEntryPath())) { -+ if (!current_query.matches(s->name()+' '+s->genericName()+' '+s->exec()+' '+ -+ s->keywords().join(",")+' '+s->comment()+' '+group->caption()+' '+ -+ s->categories().join(",")) || !anotherHitMenuItemAllowed(APPS)) -+ continue; -+ -+ QString input = current_query.get(); -+ int score = 0; -+ if (s->exec()==input) -+ score = 100; -+ else if (s->exec().find(input)==0) -+ score = 50; -+ else if (s->exec().find(input)!=-1) -+ score = 10; -+ else if (s->name().lower()==input) -+ score = 100; -+ else if (s->genericName().lower()==input) -+ score = 100; -+ else if (s->name().lower().find(input)==0) -+ score = 50; -+ else if (s->genericName().lower().find(input)==0) -+ score = 50; -+ else if (s->name().lower().find(input)!=-1) -+ score = 10; -+ else if (s->genericName().lower().find(input)!=-1) -+ score = 10; -+ -+ if (s->exec().find(' ')==-1) -+ score+=1; -+ -+ if (s->substituteUid()) -+ score-=1; -+ -+ if (s->noDisplay()) -+ score -= 100; -+ else if (s->terminal()) -+ score -= 50; -+ else -+ score += kMin(10, s->initialPreference()); -+ -+ QString firstLine, secondLine; -+ if ((KickerSettings::DescriptionAndName || KickerSettings::menuEntryFormat() == KickerSettings::DescriptionOnly) && !s->genericName().isEmpty()) { -+ firstLine = s->genericName(); -+ secondLine = s->name(); -+ } -+ else { -+ firstLine = s->name(); -+ secondLine = s->genericName(); -+ } -+ -+ HitMenuItem *hit_item = new HitMenuItem (firstLine, secondLine, -+ s->desktopEntryPath(), QString::null, 0, APPS, s->icon(), score); -+ if (hit_item == NULL) -+ continue; -+ -+ hit_item->service = s; -+ insertSearchResult(hit_item); -+ -+ QString exe = s->exec(); -+ int pos = exe.find(' '); -+ if (pos>0) -+ exe=exe.left(pos); -+ m_programsInMenu+=KGlobal::dirs()->findExe(exe); -+ } -+ } -+ } -+ } -+} -+ -+void KMenu::searchBookmarks(KBookmarkGroup group) -+{ -+ KBookmark bookmark = group.first(); -+ while(!bookmark.isNull()) { -+ if (bookmark.isGroup()) { -+ searchBookmarks(bookmark.toGroup()); -+ } else if (!bookmark.isSeparator() && !bookmark.isNull()) { -+ if (!current_query.matches(bookmark.fullText()+' '+bookmark.url().url()) || !anotherHitMenuItemAllowed(BOOKMARKS)) { -+ bookmark = group.next(bookmark); -+ continue; -+ } -+ -+ HitMenuItem *hit_item = new HitMenuItem (bookmark.fullText(), bookmark.fullText(), -+ bookmark.url(), QString::null, 0, BOOKMARKS, bookmark.icon()); -+ -+ insertSearchResult(hit_item); -+ } -+ bookmark = group.next(bookmark); -+ } -+} -+ -+void KMenu::initSearch() -+{ -+ if (!m_addressBook && KickerSettings::kickoffSearchAddressBook()) -+ m_addressBook = KABC::StdAddressBook::self( false ); -+ -+ if (!bookmarkManager) -+ bookmarkManager = KBookmarkManager::userBookmarksManager(); -+ -+ if (!m_search_plugin) { -+ m_search_plugin_interface = new QObject( this, "m_search_plugin_interface" ); -+ new MyKickoffSearchInterface( this, m_search_plugin_interface, "kickoffsearch interface" ); -+ KTrader::OfferList offers = KTrader::self()->query("KickoffSearch/Plugin"); -+ -+ KService::Ptr service = *offers.begin(); -+ if (service) { -+ int errCode = 0; -+ m_search_plugin = KParts::ComponentFactory::createInstanceFromService<KickoffSearch::Plugin> -+ ( service, m_search_plugin_interface, 0, QStringList(), &errCode); -+ } -+ } -+} -+ -+void KMenu::searchAddressbook() -+{ -+ if (!KickerSettings::kickoffSearchAddressBook()) -+ return; -+ -+ if (!m_addressBook) -+ m_addressBook = KABC::StdAddressBook::self( false ); -+ -+ KABC::AddressBook::ConstIterator it = m_addressBook->begin(); -+ while (it!=m_addressBook->end()) { -+ if (!current_query.matches((*it).assembledName()+' '+(*it).fullEmail())) { -+ it++; -+ continue; -+ } -+ -+ HitMenuItem *hit_item; -+ QString realName = (*it).realName(); -+ if (realName.isEmpty()) -+ realName=(*it).preferredEmail(); -+ -+ if (!(*it).preferredEmail().isEmpty()) { -+ if (!anotherHitMenuItemAllowed(ACTIONS)) { -+ it++; -+ continue; -+ } -+ -+ hit_item = new HitMenuItem (i18n("Send Email to %1").arg(realName), (*it).preferredEmail(), -+ "mailto:"+(*it).preferredEmail(), QString::null, 0, ACTIONS, "mail_new"); -+ -+ insertSearchResult(hit_item); -+ } -+ -+ if (!anotherHitMenuItemAllowed(ACTIONS)) { -+ it++; -+ continue; -+ } -+ -+ hit_item = new HitMenuItem (i18n("Open Addressbook at %1").arg(realName), (*it).preferredEmail(), -+ "kaddressbook:/"+(*it).uid(), QString::null, 0, ACTIONS, "kaddressbook"); -+ -+ insertSearchResult(hit_item); -+ -+ it++; -+ } -+} -+ -+QString KMenu::insertBreaks(const QString& text, QFontMetrics fm, int width, QString leadInsert) -+{ -+ QString result, line; -+ QStringList words = QStringList::split(' ', text); -+ -+ for(QStringList::Iterator it = words.begin(); it != words.end(); ++it) { -+ if (fm.width(line+' '+*it) >= width) { -+ if (!result.isEmpty()) -+ result = result + '\n'; -+ result = result + line; -+ line = leadInsert + *it; -+ } -+ else -+ line = line + ' ' + *it; -+ } -+ if (!result.isEmpty()) -+ result = result + '\n'; -+ -+ return result + line; -+} -+ -+void KMenu::clearSearchResults(bool showHelp) -+{ -+ m_searchResultsWidget->clear(); -+ m_searchResultsWidget->setFocusPolicy(showHelp ? QWidget::NoFocus : QWidget::StrongFocus); -+ setTabOrder(m_kcommand, m_searchResultsWidget); -+ -+ if (showHelp) { -+ const int width = m_searchResultsWidget->width()-10; -+ QFontMetrics fm = m_searchResultsWidget->fontMetrics(); -+ -+ QListViewItem* item; -+ item = new QListViewItem( m_searchResultsWidget, insertBreaks(i18n("- Add ext:type to specify a file extension."), fm, width, " ") ); -+ item->setSelectable(false); -+ item->setMultiLinesEnabled(true); -+ item = new QListViewItem( m_searchResultsWidget, insertBreaks(i18n("- When searching for a phrase, add quotes."), fm, width, " " ) ); -+ item->setSelectable(false); -+ item->setMultiLinesEnabled(true); -+ item = new QListViewItem( m_searchResultsWidget, insertBreaks(i18n("- To exclude search terms, use the minus symbol in front."), fm, width, " " ) ); -+ item->setSelectable(false); -+ item->setMultiLinesEnabled(true); -+ item = new QListViewItem( m_searchResultsWidget, insertBreaks(i18n("- To search for optional terms, use OR."), fm, width, " ") ); -+ item->setSelectable(false); -+ item->setMultiLinesEnabled(true); -+ item = new QListViewItem( m_searchResultsWidget, insertBreaks(i18n("- You can use upper and lower case."), fm, width, " ") ); -+ item->setSelectable(false); -+ item->setMultiLinesEnabled(true); -+ item = new QListViewItem( m_searchResultsWidget, i18n("Search Quick Tips")); -+ item->setSelectable(false); -+ } -+ -+ for (int i=0; i<num_categories; ++i) { -+ categorised_hit_total [i] = 0; -+ max_category_id [i] = base_category_id [i]; -+ } -+} -+ -+void KMenu::doQuery (bool return_pressed) -+{ -+ QString query_str = m_kcommand->lineEdit()->text ().simplifyWhiteSpace (); -+ if (! return_pressed && dontQueryNow (query_str)) { -+ if (query_str.length()<3) -+ clearSearchResults(); -+ else { -+ if (m_searchResultsWidget->firstChild() && m_searchResultsWidget->firstChild()->isSelectable()) { -+ m_searchResultsWidget->setSelected(m_searchResultsWidget->firstChild(),true); -+ } -+ else if (m_searchResultsWidget->childCount()>1) { -+ m_searchResultsWidget->setSelected(m_searchResultsWidget->firstChild()->itemBelow(),true); -+ } -+ } -+ return; -+ } -+ kdDebug() << "Querying for [" << query_str << "]" << endl; -+ current_query.set(query_str); -+ -+ // reset search results -+ HitMenuItem *hit_item; -+ while ((hit_item = m_current_menu_items.take ()) != NULL) { -+ //kndDebug () << " (" << hit_item->id << "," << hit_item->category << ")" << endl; -+ delete hit_item; -+ } -+ -+ clearSearchResults(false); -+ m_searchPixmap->setMovie(QMovie(locate( "data", "kicker/pics/search-running.mng" ))); -+ -+ resetOverflowCategory(); -+ -+ initCategoryTitlesUpdate(); -+ -+ // calculate ? -+ QString cmd = query_str.stripWhiteSpace(); -+ if (!cmd.isEmpty() && (cmd[0].isNumber() || (cmd[0] == '(')) && -+ (QRegExp("[a-zA-Z\\]\\[]").search(cmd) == -1)) -+ { -+ QString result = calculate(cmd); -+ if (!result.isEmpty()) -+ { -+ categorised_hit_total[ACTIONS] ++; -+ HitMenuItem *hit_item = new HitMenuItem (i18n("%1 = %2").arg(query_str, result), QString::null, -+ "kcalc", QString::null, (++max_category_id [ACTIONS]), ACTIONS, "kcalc"); -+ int index = getHitMenuItemPosition (hit_item); -+ m_searchResultsWidget->insertItem(iconForHitMenuItem(hit_item), hit_item->display_name, -+ hit_item->display_info, KGlobal::dirs()->findExe("kcalc"), max_category_id [ACTIONS], index); -+ } -+ } -+ -+ // detect email address -+ if (emailRegExp.exactMatch(query_str)) { -+ categorised_hit_total[ACTIONS] ++; -+ HitMenuItem *hit_item = new HitMenuItem (i18n("Send Email to %1").arg(query_str), QString::null, -+ "mailto:"+query_str, QString::null, (++max_category_id [ACTIONS]), ACTIONS, "mail_new"); -+ int index = getHitMenuItemPosition (hit_item); -+ m_searchResultsWidget->insertItem(iconForHitMenuItem(hit_item), hit_item->display_name, hit_item->display_info, "mailto:"+query_str, max_category_id [ACTIONS], index); -+ } -+ -+ // quick own application search -+ m_programsInMenu.clear(); -+ searchProgramList(QString::null); -+ -+ KURIFilterData filterData; -+ filterData.setData(query_str); -+ filterData.setCheckForExecutables(true); -+ -+ if (KURIFilter::self()->filterURI(filterData)) { -+ -+ QString description; -+ QString exe; -+ -+ switch (filterData.uriType()) { -+ case KURIFilterData::LOCAL_FILE: -+ description = i18n("Open Local File: %1").arg(filterData.uri().url()); -+ break; -+ case KURIFilterData::LOCAL_DIR: -+ description = i18n("Open Local Dir: %1").arg(filterData.uri().url()); -+ break; -+ case KURIFilterData::NET_PROTOCOL: -+ description = i18n("Open Remote Location: %1").arg(filterData.uri().url()); -+ break; -+ case KURIFilterData::SHELL: -+ case KURIFilterData::EXECUTABLE: -+ { -+ exe = KGlobal::dirs()->findExe(filterData.uri().url()); -+#ifdef KDELIBS_SUSE -+ bool gimp_hack = false; -+ if (exe.endsWith("/bin/gimp")) { -+ QStringList::ConstIterator it = m_programsInMenu.begin(); -+ for (; it != m_programsInMenu.end(); ++it) -+ if ((*it).find("bin/gimp-remote-")!=-1) { -+ gimp_hack = true; -+ break; -+ } -+ } -+#endif -+ if (m_programsInMenu.find(exe)!=m_programsInMenu.end() -+#ifdef KDELIBS_SUSE -+ || gimp_hack -+#endif -+ ) -+ exe = QString::null; -+ else if (kapp->authorize("shell_access")) -+ { -+ if( filterData.hasArgsAndOptions() ) -+ exe += filterData.argsAndOptions(); -+ -+ description = i18n("Run '%1'").arg(exe); -+ exe = "kicker:/runcommand"; -+ } -+ } -+ default: -+ break; -+ } -+ -+ if (!description.isEmpty()) { -+ categorised_hit_total[ACTIONS] ++; -+ HitMenuItem *hit_item = new HitMenuItem (description, QString::null, -+ exe.isEmpty() ? filterData.uri() : exe, QString::null, -+ (++max_category_id [ACTIONS]), ACTIONS, exe.isEmpty() ? "fileopen": "run"); -+ int index = getHitMenuItemPosition (hit_item); -+ m_searchResultsWidget->insertItem(iconForHitMenuItem(hit_item), hit_item->display_name, -+ hit_item->display_info, -+ exe.isEmpty() ? filterData.uri().url() : exe, max_category_id [ACTIONS], index); -+ } -+ } -+ -+ // search Konqueror bookmarks; -+ if (!bookmarkManager) -+ bookmarkManager = KBookmarkManager::userBookmarksManager(); -+ -+ if (query_str.length()>=3) -+ searchBookmarks(bookmarkManager->root()); -+ -+ // search KDE addressbook -+ if (query_str.length()>=3) -+ searchAddressbook(); -+ -+ updateCategoryTitles(); -+ -+ if (m_searchResultsWidget->childCount()>1) -+ m_searchResultsWidget->setSelected(m_searchResultsWidget->firstChild()->itemBelow(),true); -+ m_searchActions->clearSelection(); -+ -+ if (!m_search_plugin) -+ initSearch(); -+ -+ // start search plugin only with at least 3 characters -+ if (query_str.length()<3 || !m_search_plugin || (m_search_plugin && !m_search_plugin->daemonRunning()) ) { -+ m_searchPixmap->setPixmap( BarIcon( "find", 32 ) ); -+ fillOverflowCategory(); -+ if (query_str.length()>2 && m_current_menu_items.isEmpty()) -+ reportError (i18n("No matches found")); -+ return; -+ } -+ -+ if (m_search_plugin) { -+ m_search_plugin->query(current_query.get(), KickerSettings::DescriptionAndName || KickerSettings::menuEntryFormat() == KickerSettings::DescriptionOnly); -+ } -+} -+ -+bool KMenu::anotherHitMenuItemAllowed(int cat, bool count) -+{ -+ // update number of hits in this category -+ if (count) -+ categorised_hit_total [cat] ++; -+ -+ // if number of hits in this category is more than allowed, dont process this -+ if (max_category_id [cat] - base_category_id [cat] < max_items(cat)) -+ return true; -+ -+ if (m_overflowCategoryState==None || (m_overflowCategoryState==Filling && m_overflowCategory==cat && -+ max_category_id [cat] + m_overflowList.count() - base_category_id [cat] < max_items(cat) * 2.0)) -+ return true; -+ -+ return false; -+} -+ -+void KMenu::addHitMenuItem(HitMenuItem* item) -+{ -+ if (checkUriInMenu(item->uri)) -+ return; -+ -+ // if number of hits in this category is more than allowed, dont process this -+ if (!anotherHitMenuItemAllowed(item->category, false)) -+ return; -+ -+ insertSearchResult(item); -+} -+ -+void KMenu::insertSearchResult(HitMenuItem* item) -+{ -+ if (m_overflowCategoryState==None) { -+ m_overflowCategoryState = Filling; -+ m_overflowCategory = item->category; -+ } -+ else if (m_overflowCategoryState==Filling && m_overflowCategory!=item->category) -+ m_overflowCategoryState = NotNeeded; -+ -+ if (max_category_id [item->category] - base_category_id [item->category] < max_items(item->category)) { -+ max_category_id [item->category]++; -+ item->id=max_category_id [item->category]; -+ -+ int index = getHitMenuItemPosition (item); -+ -+ kdDebug () << "Adding " << item->uri -+ << "(" << item->mimetype << ") with id=" -+ << max_category_id [item->category] << " at " << index << endl; -+ -+ KMenuItem *hit_item = m_searchResultsWidget->insertItem(iconForHitMenuItem(item), item->display_name, item->display_info, item->uri.url(), max_category_id [item->category], index); -+ hit_item->setService(item->service); -+ -+ kdDebug () << "Done inserting ... " << endl; -+ } -+ else if (m_overflowCategoryState==Filling && m_overflowCategory==item->category && -+ max_category_id [item->category] - base_category_id [item->category] < max_items(item->category) * 2) -+ m_overflowList.append(item); -+} -+ -+void KMenu::searchOver() -+{ -+ m_searchPixmap->setPixmap( BarIcon( "find", 32 ) ); -+ fillOverflowCategory(); -+ if (m_current_menu_items.isEmpty()) { -+ kdDebug() << "No matches found" << endl; -+ reportError (i18n("No matches found")); -+ } -+ if (!m_searchResultsWidget->selectedItem() && !m_searchActions->selectedItem() && m_searchResultsWidget->childCount()>1) { -+ m_searchResultsWidget->setSelected(m_searchResultsWidget->firstChild()->itemBelow(),true); -+ } -+} -+ -+void KMenu::initCategoryTitlesUpdate() -+{ -+ // Need to know if each category was updated with hits or had the first hit -+ // That way we know if we need to changetitle or inserttitle -+ already_added = new bool [num_categories]; -+ for (int i=0; i<num_categories; ++i) -+ already_added [i] = (max_category_id [i] != base_category_id [i]); -+} -+ -+void KMenu::updateCategoryTitles() -+{ -+ // update category title -+ for (int i=0; i<num_categories; ++i) { -+ if (i == OTHER) -+ continue; -+ // nothing is in this category -+ if (max_category_id [i] == base_category_id [i]) -+ continue; -+ -+ KMenuItemSeparator *sep = 0; -+ -+ // if nothing was in this category before but now there is -+ if (! already_added [i]) { -+ // insert a new title for this category -+ int index = getHitMenuItemPosition (new HitMenuItem ( -+ base_category_id[i], -+ i)); -+ QString title = QString ("%1").arg (i18n(categories [i].utf8())); -+ sep = m_searchResultsWidget->insertSeparator(base_category_id [i], title, index); -+ kdDebug () << "Inserting heading with id=" << base_category_id[i] << " for " << categories[i] << " at " << index << endl; -+ } else { -+ // something was already displayed in this category -+ // update the title to reflect the total -+ sep = dynamic_cast<KMenuItemSeparator*>( m_searchResultsWidget->findItem(base_category_id [i]) ); -+ if ( !sep ) -+ continue; -+ kdDebug () << "Changing heading of id=" << base_category_id[i] << " for " << categories[i] << endl; -+ } -+ -+ int max = max_items(i); -+ if (m_overflowCategoryState == Filling && m_overflowCategory == i) -+ max *= 2; -+ -+ if ( categorised_hit_total [i] > max ) { -+ if (m_kerryInstalled) -+ sep->setLink( i18n( "top %1 of %2" ).arg( max ).arg( categorised_hit_total [i] ), QString( "kerry:/%1" ).arg( i ) ); -+ else -+ sep->setText( 0, i18n( "%1 (top %2 of %3)" ).arg( i18n(categories [i].utf8()) ).arg( max ).arg( categorised_hit_total [i] ) ); -+ } -+ else { -+ sep->setLink( QString::null ); -+ } -+ } -+ delete[] already_added; -+ already_added = 0; -+} -+ -+QString KMenu::iconForHitMenuItem(HitMenuItem *hit_item) -+{ -+ // get the icon -+ if (!hit_item->icon.isEmpty()) -+ return hit_item->icon; -+ -+ if (hit_item->category == WEBHIST) { -+ QString favicon = KMimeType::favIconForURL (hit_item->uri); -+ if (! favicon.isEmpty ()) -+ return favicon; -+ } -+ -+ if (mimetype_iconstore.contains (hit_item->mimetype)) -+ return (mimetype_iconstore [hit_item->mimetype]); -+ else { -+ KMimeType::Ptr mimetype_ptr = KMimeType::mimeType (hit_item->mimetype); -+ QString mimetype_icon = mimetype_ptr->icon(QString::null, FALSE); -+ mimetype_iconstore [hit_item->mimetype] = mimetype_icon; -+ return mimetype_icon; -+ } -+ return QString::null; -+} -+ -+void KMenu::slotStartService(KService::Ptr ptr) -+{ -+ accept(); -+ -+ addToHistory(); -+ KApplication::startServiceByDesktopPath(ptr->desktopEntryPath(), -+ QStringList(), 0, 0, 0, "", true); -+ updateRecentlyUsedApps(ptr); -+} -+ -+ -+void KMenu::slotStartURL(const QString& u) -+{ -+ if ( u == "kicker:/goup/" ) { -+ // only m_exitView is connected to this slot, not m_browserView -+ slotGoExitMainMenu(); -+ return; -+ } -+ -+ if ( u == "kicker:/restart/" || u=="kicker:/switchuser/") { -+ slotGoExitSubMenu(u); -+ return; -+ } -+ -+ accept(); -+ -+ if ( u == "kicker:/lock" ) { -+ slotLock(); -+ } -+ else if ( u == "kicker:/logout" ) { -+#ifdef KDELIBS_SUSE -+ QByteArray params; -+ QDataStream stream(params, IO_WriteOnly); -+ stream << 0 << -1 << ""; -+ -+ kapp->dcopClient()->send("ksmserver", "default", "logoutTimed(int,int,QString)", params); -+#else -+ DCOPRef mediamanager("ksmserver", "ksmserver"); -+ DCOPReply reply = mediamanager.call( "logoutTimed", (int)KApplication::ShutdownTypeNone, (int)KApplication::ShutdownModeDefault ); -+ if (!reply.isValid() && KMessageBox::Continue==KMessageBox::warningContinueCancel(this, i18n("Do you really want to end the session?"), -+ i18n("Logout Confirmation"), KGuiItem(i18n("Logout"),"undo"))) -+ kapp->requestShutDown( KApplication::ShutdownConfirmNo, -+ KApplication::ShutdownTypeNone, -+ KApplication::ShutdownModeDefault ); -+ -+#endif -+ } -+ else if ( u == "kicker:/runcommand" ) -+ { -+ runCommand(); -+ } -+ else if ( u == "kicker:/shutdown" ) { -+#ifdef KDELIBS_SUSE -+ QByteArray params; -+ QDataStream stream(params, IO_WriteOnly); -+ stream << 2 << -1 << ""; -+ -+ kapp->dcopClient()->send("ksmserver", "default", "logoutTimed(int,int,QString)", params); -+#else -+ if (KMessageBox::Continue==KMessageBox::warningContinueCancel(this, i18n("Do you really want to turn off the computer?"), -+ i18n("Shutdown Confirmation"), KGuiItem(i18n("Shutdown"),"exit"))) -+ kapp->requestShutDown( KApplication::ShutdownConfirmNo, -+ KApplication::ShutdownTypeHalt, -+ KApplication::ShutdownModeDefault ); -+#endif -+ } -+ else if ( u == "kicker:/restart" ) { -+#ifdef KDELIBS_SUSE -+ QByteArray params; -+ QDataStream stream(params, IO_WriteOnly); -+ stream << 1 << -1 << QString::null; -+ -+ kapp->dcopClient()->send("ksmserver", "default", "logoutTimed(int,int,QString)", params); -+#else -+ if (KMessageBox::Continue==KMessageBox::warningContinueCancel(this, i18n("Do you really want to reset the computer and boot (another operating system)?"), -+ i18n("Restart Confirmation"), KGuiItem(i18n("Restart"),"reload"))) -+ kapp->requestShutDown( KApplication::ShutdownConfirmNo, -+ KApplication::ShutdownTypeReboot, -+ KApplication::ShutdownModeDefault ); -+#endif -+ } -+#ifdef KDELIBS_SUSE -+ else if ( u == "kicker:/suspend_disk" ) { -+ slotSuspend( 1 ); -+ } -+ else if ( u == "kicker:/suspend_ram" ) { -+ slotSuspend( 2 ); -+ } -+ else if ( u == "kicker:/standby" ) { -+ slotSuspend( 3 ); -+ } -+#endif -+ else if ( u == "kicker:/savesession" ) { -+ QByteArray data; -+ kapp->dcopClient()->send( "ksmserver", "default", -+ "saveCurrentSession()", data ); -+ } -+ else if ( u == "kicker:/switchuser" ) { -+ DM().startReserve(); -+ } -+ else if ( u == "kicker:/switchuserafterlock" ) { -+ slotLock(); -+ DM().startReserve(); -+ } -+ else if ( u.startsWith("kicker:/switchuser_") ) -+ DM().lockSwitchVT( u.mid(19).toInt() ); -+ else if ( u.startsWith("kicker:/restart_") ) { -+#ifdef KDELIBS_SUSE -+ QStringList rebootOptions; -+ int def, cur; -+ DM().bootOptions( rebootOptions, def, cur ); -+ -+ QByteArray params; -+ QDataStream stream(params, IO_WriteOnly); -+ stream << 1 << -1 << rebootOptions[u.mid(16).toInt()]; -+ -+ kapp->dcopClient()->send("ksmserver", "default", "logoutTimed(int,int,QString)", params); -+#else -+ KMessageBox::error( this, QString( "Sorry, not implemented." )); -+#endif -+ } -+#warning restart entry not supported -+#if 0 -+ else if ( u == "kicker:/restart_windows" ) { -+ if (KMessageBox::Continue==KMessageBox::warningContinueCancel(this, i18n("Do you really want to reset the computer and boot Microsoft Windows"), i18n("Start Windows Confirmation"), KGuiItem(i18n("Start Windows"),"reload"))) -+ KMessageBox::error( this, QString( "kicker:/restart_windows is not yet implemented " ) ); -+ } -+#endif -+ else if ( u.startsWith("kerry:/")) -+ { -+ QByteArray data; -+ QDataStream arg(data, IO_WriteOnly); -+ arg << m_kcommand->currentText() << kerry_categories[u.mid(7).toInt()]; -+ if (ensureServiceRunning("kerry")) -+ kapp->dcopClient()->send("kerry","search","search(QString,QString)", data); -+ } -+ else { -+ addToHistory(); -+ if (u.startsWith("kaddressbook:/")) { -+ KProcess *proc = new KProcess; -+ *proc << "kaddressbook" << "--uid" << u.mid(14); -+ proc->start(); -+ accept(); -+ return; -+ } else if (u.startsWith("note:/")) { -+ KProcess *proc = new KProcess; -+ *proc << "tomboy"; -+ *proc << "--open-note" << u; -+ if (!proc->start()) -+ KMessageBox::error(0,i18n("Could not start Tomboy.")); -+ return; -+ } -+ else if (u.startsWith("knotes:/") ) { -+ if (ensureServiceRunning("knotes")) { -+ QByteArray data; -+ QDataStream arg(data, IO_WriteOnly); -+ arg << u.mid(9,22); -+ -+ kapp->dcopClient()->send("knotes","KNotesIface","showNote(QString)", data); -+ } -+ return; -+ } -+ -+ kapp->propagateSessionManager(); -+ (void) new KRun( u, parentWidget()); -+ } -+} -+ -+void KMenu::slotContextMenuRequested( QListViewItem * item, const QPoint & pos, int /*col*/ ) -+{ -+ const QObject* source = sender(); -+ -+ if (!item) -+ return; -+ -+ KMenuItem* kitem = dynamic_cast<KMenuItem*>(item); -+ if (!kitem) -+ return; -+ -+ KFileItemList _items; -+ _items.setAutoDelete(true); -+ -+ if (dynamic_cast<KMenuItemSeparator*>(item)) -+ return; -+ -+ m_popupService = kitem->service(); -+ m_popupPath.menuPath = kitem->menuPath(); -+ if (!m_popupService) { -+ m_popupPath.title = kitem->title(); -+ m_popupPath.description = kitem->description(); -+ m_popupPath.path = kitem->path(); -+ m_popupPath.icon = kitem->icon(); -+ -+ if (m_popupPath.path.startsWith(locateLocal("data", QString::fromLatin1("RecentDocuments/")))) { -+ KDesktopFile df(m_popupPath.path,true); -+ m_popupPath.path=df.readURL(); -+ } -+ } -+ -+ m_popupMenu = new KPopupMenu(this); -+ connect(m_popupMenu, SIGNAL(activated(int)), SLOT(slotContextMenu(int))); -+ bool hasEntries = false; -+ -+ m_popupMenu->insertTitle(SmallIcon(kitem->icon()),kitem->title()); -+ -+ if (source==m_favoriteView) -+ { -+ hasEntries = true; -+ m_popupMenu->insertItem(SmallIconSet("remove"), -+ i18n("Remove From Favorites"), RemoveFromFavorites); -+ } -+ else if (!kitem->hasChildren() && !m_popupPath.path.startsWith("system:/") && -+ !m_popupPath.path.startsWith("kicker:/switchuser_") && !m_popupPath.path.startsWith("kicker:/restart_")) -+ { -+ hasEntries = true; -+ int num = m_popupMenu->insertItem(SmallIconSet("bookmark_add"), -+ i18n("Add to Favorites"), AddToFavorites); -+ -+ QStringList favs = KickerSettings::favorites(); -+ if (m_popupService && favs.find(m_popupService->storageId())!=favs.end()) -+ m_popupMenu->setItemEnabled(num, false); -+ else { -+ QStringList::Iterator it; -+ for (it = favs.begin(); it != favs.end(); ++it) -+ { -+ if ((*it)[0]=='/') -+ { -+ KDesktopFile df((*it),true); -+ if (df.readURL().replace("file://",QString::null)==m_popupPath.path) -+ break; -+ } -+ } -+ if (it!=favs.end()) -+ m_popupMenu->setItemEnabled(num, false); -+ } -+ } -+ -+ if (source!=m_exitView) { -+ if (m_popupService || (!m_popupPath.path.startsWith("kicker:/") && !m_popupPath.path.startsWith("system:/") && !m_popupPath.path.startsWith("kaddressbook:/"))) { -+ if (hasEntries) -+ m_popupMenu->insertSeparator(); -+ -+ if (kapp->authorize("editable_desktop_icons") ) -+ { -+ hasEntries = true; -+ if (m_popupPath.menuPath.endsWith("/")) -+ m_popupMenu->insertItem(SmallIconSet("desktop"), -+ i18n("Add Menu to Desktop"), AddMenuToDesktop); -+ else -+ m_popupMenu->insertItem(SmallIconSet("desktop"), -+ i18n("Add Item to Desktop"), AddItemToDesktop); -+ } -+ if (kapp->authorizeKAction("kicker_rmb") && !Kicker::the()->isImmutable()) -+ { -+ hasEntries = true; -+ if (m_popupPath.menuPath.endsWith("/")) -+ m_popupMenu->insertItem(SmallIconSet("kicker"), -+ i18n("Add Menu to Main Panel"), AddMenuToPanel); -+ else -+ m_popupMenu->insertItem(SmallIconSet("kicker"), -+ i18n("Add Item to Main Panel"), AddItemToPanel); -+ } -+ if (kapp->authorizeKAction("menuedit") && !kitem->menuPath().isEmpty()) -+ { -+ hasEntries = true; -+ if (kitem->menuPath().endsWith("/")) -+ m_popupMenu->insertItem(SmallIconSet("kmenuedit"), i18n("Edit Menu"), EditMenu); -+ else -+ m_popupMenu->insertItem(SmallIconSet("kmenuedit"), i18n("Edit Item"), EditItem); -+ } -+ if (kapp->authorize("run_command") && (m_popupService || (!m_popupPath.menuPath.isEmpty() && !m_popupPath.menuPath.endsWith("/")))) -+ { -+ hasEntries = true; -+ m_popupMenu->insertItem(SmallIconSet("run"), -+ i18n("Put Into Run Dialog"), PutIntoRunDialog); -+ } -+ } -+ if (source==m_searchResultsWidget || ((source==m_favoriteView || source==m_recentlyView || source == m_systemView) && !m_popupService && !m_popupPath.path.startsWith("kicker:/")) ) { -+ QString uri; -+ if (m_popupService) -+ uri = locate("apps", m_popupService->desktopEntryPath()); -+ else -+ uri = m_popupPath.path; -+ -+ QString mimetype = QString::null; -+ if ( m_popupPath.path.startsWith( "system:/media/" ) ) -+ mimetype = media_mimetypes[m_popupPath.path]; -+ -+ KFileItem* item = new KFileItem(uri, mimetype, KFileItem::Unknown); -+ _items.append( item ); -+ -+ const KURL kurl(uri); -+ KActionCollection act(this); -+ -+ KonqPopupMenu * konqPopupMenu = new KonqPopupMenu( KonqBookmarkManager::self(), _items, -+ kurl, act, (KNewMenu*)NULL, this, -+ item->isLocalFile() ? KonqPopupMenu::ShowProperties : KonqPopupMenu::NoFlags, -+ KParts::BrowserExtension::DefaultPopupItems ); -+ -+ if (konqPopupMenu->count()) { -+ if (hasEntries) { -+ m_popupMenu->insertSeparator(); -+ m_popupMenu->insertItem(SmallIconSet("add"),i18n("Advanced"), konqPopupMenu); -+ } -+ else { -+ delete m_popupMenu; -+ m_popupMenu = (KPopupMenu*)konqPopupMenu; -+ m_popupMenu->insertTitle(SmallIcon(kitem->icon()),kitem->title(),-1,0); -+ } -+ hasEntries = true; -+ } -+ } -+ } -+ -+ if (source==m_recentlyView) { -+ m_popupMenu->insertSeparator(); -+ if (m_popupService) -+ m_popupMenu->insertItem(SmallIconSet("history_clear"), -+ i18n("Clear Recently Used Applications"), ClearRecentlyUsedApps); -+ else -+ m_popupMenu->insertItem(SmallIconSet("history_clear"), -+ i18n("Clear Recently Used Documents"), ClearRecentlyUsedDocs); -+ } -+ -+ if (hasEntries) { -+ m_isShowing = true; -+ m_popupMenu->exec(pos); -+ m_isShowing = false; -+ } -+ -+ delete m_popupMenu; -+ m_popupMenu = 0; -+} -+ -+void KMenu::slotContextMenu(int selected) -+{ -+ KServiceGroup::Ptr g; -+ QByteArray ba; -+ QDataStream ds(ba, IO_WriteOnly); -+ -+ KURL src,dest; -+ KIO::CopyJob *job; -+ -+ KProcess *proc; -+ -+ QStringList favs = KickerSettings::favorites(); -+ -+ switch (selected) { -+ case AddItemToDesktop: -+ accept(); -+ if (m_popupService) { -+ src.setPath( KGlobal::dirs()->findResource( "apps", m_popupService->desktopEntryPath() ) ); -+ dest.setPath( KGlobalSettings::desktopPath() ); -+ dest.setFileName( src.fileName() ); -+ -+ job = KIO::copyAs( src, dest ); -+ job->setDefaultPermissions( true ); -+ } -+ else { -+ KDesktopFile* df = new KDesktopFile( newDesktopFile(KURL(m_popupPath.path), KGlobalSettings::desktopPath() ) ); -+ df->writeEntry("GenericName", m_popupPath.description); -+ df->writeEntry( "Icon", m_popupPath.icon ); -+ df->writePathEntry( "URL", m_popupPath.path ); -+ df->writeEntry( "Name", m_popupPath.title ); -+ df->writeEntry( "Type", "Link" ); -+ df->sync(); -+ delete df; -+ } -+ accept(); -+ break; -+ -+ case AddItemToPanel: -+ accept(); -+ if (m_popupService) -+ kapp->dcopClient()->send("kicker", "Panel", "addServiceButton(QString)", m_popupService->desktopEntryPath()); -+ else -+#warning FIXME special RecentDocuments/foo.desktop handling -+ kapp->dcopClient()->send("kicker", "Panel", "addURLButton(QString)", m_popupPath.path); -+ accept(); -+ break; -+ -+ case EditItem: -+ case EditMenu: -+ accept(); -+ proc = new KProcess(this); -+ *proc << KStandardDirs::findExe(QString::fromLatin1("kmenuedit")); -+ *proc << "/"+m_popupPath.menuPath.section('/',-200,-2) << m_popupPath.menuPath.section('/', -1); -+ proc->start(); -+ break; -+ -+ case PutIntoRunDialog: -+ accept(); -+ if (m_popupService) -+ kapp->dcopClient()->send("kdesktop", "default", "popupExecuteCommand(QString)", m_popupService->exec()); -+ else -+#warning FIXME special RecentDocuments/foo.desktop handling -+ kapp->dcopClient()->send("kdesktop", "default", "popupExecuteCommand(QString)", m_popupPath.path); -+ accept(); -+ break; -+ -+ case AddMenuToDesktop: { -+ accept(); -+ KDesktopFile *df = new KDesktopFile( newDesktopFile(KURL("programs:/"+m_popupPath.menuPath),KGlobalSettings::desktopPath())); -+ df->writeEntry( "Icon", m_popupPath.icon ); -+ df->writePathEntry( "URL", "programs:/"+m_popupPath.menuPath ); -+ df->writeEntry( "Name", m_popupPath.title ); -+ df->writeEntry( "Type", "Link" ); -+ df->sync(); -+ delete df; -+ -+ break; -+ } -+ case AddMenuToPanel: -+ accept(); -+ ds << "foo" << m_popupPath.menuPath; -+ kapp->dcopClient()->send("kicker", "Panel", "addServiceMenuButton(QString,QString)", ba); -+ break; -+ -+ case AddToFavorites: -+ if (m_popupService) { -+ if (favs.find(m_popupService->storageId())==favs.end()) { -+ KService::Ptr p = KService::serviceByStorageId(m_popupService->storageId()); -+ m_favoriteView->insertMenuItem(p, serviceMenuEndId()+favs.count()+1); -+ favs+=m_popupService->storageId(); -+ } -+ } -+ else { -+ QStringList::Iterator it; -+ for (it = favs.begin(); it != favs.end(); ++it) { -+ if ((*it)[0]=='/') { -+ KDesktopFile df((*it),true); -+ if (df.readURL().replace("file://",QString::null)==m_popupPath.path) -+ break; -+ } -+ } -+ if (it==favs.end()) { -+ QString file = KickerLib::newDesktopFile(m_popupPath.path); -+ KDesktopFile df(file); -+ df.writeEntry("Encoding", "UTF-8"); -+ df.writeEntry("Type","Link"); -+ df.writeEntry("Name", m_popupPath.title); -+ df.writeEntry("GenericName", m_popupPath.description); -+ df.writeEntry("Icon", m_popupPath.icon); -+ df.writeEntry("URL", m_popupPath.path); -+ -+ m_favoriteView->insertItem(m_popupPath.icon, m_popupPath.title, m_popupPath.description, -+ m_popupPath.path, serviceMenuEndId()+favs.count()+1, -1); -+ -+ favs+=file; -+ } -+ } -+ KickerSettings::setFavorites(favs); -+ KickerSettings::writeConfig(); -+ m_browserDirty=true; -+ m_stacker->raiseWidget(FavoriteTab); -+ break; -+ -+ case RemoveFromFavorites: -+ if (m_popupService) { -+ favs.erase(favs.find(m_popupService->storageId())); -+ -+ for (QListViewItemIterator it(m_favoriteView); it.current(); ++it) { -+ KMenuItem* kitem = static_cast<KMenuItem*>(it.current()); -+ if (kitem->service() && kitem->service()->storageId() == m_popupService->storageId()) { -+ delete it.current(); -+ break; -+ } -+ } -+ } -+ else { -+ for (QStringList::Iterator it = favs.begin(); it != favs.end(); ++it) { -+ if ((*it)[0]=='/') { -+ KDesktopFile df((*it),true); -+ if (df.readURL().replace("file://",QString::null)==m_popupPath.path) { -+ QFile::remove((*it)); -+ favs.erase(it); -+ break; -+ } -+ } -+ } -+ for (QListViewItemIterator it(m_favoriteView); it.current(); ++it) { -+ KMenuItem* kitem = static_cast<KMenuItem*>(it.current()); -+ if (!kitem->service() && kitem->path() == m_popupPath.path) { -+ delete it.current(); -+ break; -+ } -+ } -+ } -+ m_favoriteView->slotMoveContent(); -+ KickerSettings::setFavorites(favs); -+ KickerSettings::writeConfig(); -+ m_browserDirty=true; -+ m_stacker->raiseWidget(FavoriteTab); -+ break; -+ -+ case ClearRecentlyUsedApps: -+ clearRecentAppsItems(); -+ break; -+ -+ case ClearRecentlyUsedDocs: -+ clearRecentDocsItems(); -+ break; -+ -+ default: -+ break; -+ } -+} -+ -+void KMenu::resizeEvent ( QResizeEvent * e ) -+{ -+ //kdDebug() << "resizeEvent " << size() << endl; -+ KMenuBase::resizeEvent(e); -+ int ypos = 0; -+ // this is the height remaining to fill -+ int left_height = height(); -+ -+ if ( m_orientation == BottomUp ) -+ { -+ m_resizeHandle->move( e->size().width() - 19, 3); -+ -+ // put the search widget at the top of the menu and give it its desired -+ // height -+ m_search->mainWidget()->setGeometry( 0, ypos, width(), -+ m_search->minimumSize().height() ); -+ left_height -= m_search->minimumSize().height(); -+ ypos += m_search->minimumSize().height(); -+ -+ // place the footer widget at the bottom of the menu and give it its desired -+ // height -+ m_footer->mainWidget()->setGeometry( 0, height() - m_footer->minimumSize().height(), -+ width(), m_footer->minimumSize().height() ); -+ left_height -= m_footer->minimumSize().height(); -+ -+ // place the button box above the footer widget, horizontal placement -+ // has the width of the edge graphics subtracted -+ m_tabBar->setGeometry(button_box_left.width(), -+ height() - m_footer->minimumSize().height() - -+ m_tabBar->sizeHint().height(), -+ width() - button_box_left.width(), -+ m_tabBar->sizeHint().height() ); -+ left_height -= m_tabBar->sizeHint().height(); -+ -+ // place the main (stacker) widget below the search widget, -+ // in the remaining vertical space -+ m_stacker->setGeometry(0, ypos, -+ width(), -+ left_height ); -+ -+ } -+ else // TopDown orientation -+ { -+ // place the 'footer' widget at the top of the menu and give it -+ // its desired height -+ m_footer->mainWidget()->setGeometry( 0, -+ ypos /*height() - m_footer->minimumSize().height()*/, -+ width(), -+ m_footer->minimumSize().height() ); -+ ypos += m_footer->minimumSize().height(); -+ left_height -= m_footer->minimumSize().height(); -+ -+ // place the button box next at the top of the menu. -+ // has the width of the edge graphics subtracted -+ m_tabBar->setGeometry(button_box_left.width(), ypos, width() - button_box_left.width(), -+ m_tabBar->sizeHint().height()); -+ -+ ypos += m_tabBar->sizeHint().height(); -+ left_height -= m_tabBar->sizeHint().height(); -+ -+ // put the search widget above the footer widget -+ // height -+ m_search->mainWidget()->setGeometry( 0, -+ height() - m_search->minimumSize().height(), -+ width(), -+ m_search->minimumSize().height() -+ ); -+ left_height -= m_search->minimumSize().height(); -+ -+ // place the main (stacker) widget below the button box, -+ // in the remaining vertical space -+ m_stacker->setGeometry(0, ypos, -+ width(), -+ left_height ); -+ m_resizeHandle->move( e->size().width() - 19, e->size().height() - 19); -+ } -+ paintSearchTab( false ); -+} -+ -+void KMenu::mousePressEvent ( QMouseEvent * e ) -+{ -+ if ( m_orientation == BottomUp ) { -+ if (e->x() > width() - m_resizeHandle->width() && -+ e->y() < m_resizeHandle->height() ) -+ { -+ m_isresizing = true; -+ } -+ } -+ else { -+ if (e->x() > width() - m_resizeHandle->width() && -+ e->y() > height() - m_resizeHandle->height() ) -+ { -+ m_isresizing = true; -+ } -+ } -+ KMenuBase::mousePressEvent(e); -+} -+ -+void KMenu::mouseReleaseEvent ( QMouseEvent * /*e*/ ) -+{ -+ m_isresizing = false; -+} -+ -+void KMenu::mouseMoveEvent ( QMouseEvent * e ) -+{ -+ if ( hasMouseTracking() && m_isresizing ) { -+ m_stacker->setMinimumSize( QSize(0, 0) ); -+ m_stacker->setMaximumSize( QSize(32000, 32000) ); -+ int newWidth = QMAX( e->x() - x(), minimumSizeHint().width() ); -+ if ( m_orientation == BottomUp ) { -+ int newHeight = QMAX( height() - e->y(), minimumSizeHint().height() + 10 ); -+ int newY = y() + height() - newHeight; -+ setGeometry( x(), newY, newWidth, newHeight); -+ } -+ else { -+ setGeometry( x(), y(), newWidth, QMAX( e->y(), minimumSizeHint().height() + 10 )); -+ } -+ } -+} -+ -+void KMenu::clearedHistory() -+{ -+ saveConfig(); -+} -+ -+void KMenu::saveConfig() -+{ -+ KickerSettings::setHistory( m_kcommand->historyItems() ); -+ KickerSettings::setCompletionItems( m_kcommand->completionObject()->items() ); -+ KickerSettings::writeConfig(); -+} -+ -+void KMenu::notifyServiceStarted(KService::Ptr service) -+{ -+ // Inform other applications (like the quickstarter applet) -+ // that an application was started -+ QByteArray params; -+ QDataStream stream(params, IO_WriteOnly); -+ stream << "minicli" << service->storageId(); -+ kdDebug() << "minicli appLauncher dcop signal: " << service->storageId() << endl; -+ KApplication::kApplication()->dcopClient()->emitDCOPSignal("appLauncher", -+ "serviceStartedByStorageId(QString,QString)", params); -+} -+ -+void KMenu::parseLine( bool final ) -+{ -+ QString cmd = m_kcommand->currentText().stripWhiteSpace(); -+ m_filterData->setData( cmd ); -+ -+ if( final ) -+ KURIFilter::self()->filterURI( *(m_filterData), m_finalFilters ); -+ else -+ KURIFilter::self()->filterURI( *(m_filterData), m_middleFilters ); -+ -+ m_iconName = m_filterData->iconName(); -+ -+ kdDebug (1207) << "Command: " << m_filterData->uri().url() << endl; -+ kdDebug (1207) << "Arguments: " << m_filterData->argsAndOptions() << endl; -+} -+ -+// report error as a title in the menu -+void KMenu::reportError (QString error) -+{ -+ int index = 1000; //getHitMenuItemPosition (new HitMenuItem (base_category_id[0], 0)); -+ kndDebug () << "Inserting error:" << error << " at position " << index << endl; -+ m_searchResultsWidget->insertSeparator(OTHER_ID_BASE + 120, error, index); -+} -+ -+int KMenu::getHitMenuItemPosition ( HitMenuItem *hit_item) -+{ -+ QPtrListIterator<HitMenuItem> it (m_current_menu_items); -+ const HitMenuItem *cur_item; -+ int pos = 0; -+ while ((cur_item = it.current ()) != NULL) { -+ ++it; -+ if ((cur_item->category!=hit_item->category || !cur_item->display_name.isEmpty()) && (*hit_item) < (*cur_item)) -+ break; -+ pos++; -+ } -+ m_current_menu_items.insert (pos, hit_item); -+ -+ return pos + 1; -+} -+ -+bool KMenu::checkUriInMenu( const KURL &uri) -+{ -+ QPtrListIterator<HitMenuItem> it (m_current_menu_items); -+ const HitMenuItem *cur_item; -+ while ((cur_item = it.current ()) != NULL) { -+ ++it; -+ if (cur_item->uri == uri ) -+ return true; -+ } -+ -+ return false; -+} -+ -+void KMenu::searchActionClicked(QListViewItem* item) -+{ -+ accept(); -+ -+ addToHistory(); -+ if (item==m_searchIndex) { -+ QByteArray data; -+ QDataStream arg(data, IO_WriteOnly); -+ arg << m_kcommand->currentText(); -+ -+ if (ensureServiceRunning("kerry")) -+ kapp->dcopClient()->send("kerry","search","search(QString)", data); -+ } -+ else { -+ KURIFilterData data; -+ QStringList list; -+ data.setData( m_kcommand->currentText() ); -+ list << "kurisearchfilter" << "kuriikwsfilter"; -+ -+ if( !KURIFilter::self()->filterURI(data, list) ) { -+ KDesktopFile file("searchproviders/google.desktop", true, "services"); -+ data.setData(file.readEntry("Query").replace("\\{@}", m_kcommand->currentText())); -+ } -+ -+ (void) new KRun( data.uri(), parentWidget()); -+ } -+} -+ -+void KMenu::addToHistory() -+{ -+ QString search = m_kcommand->currentText().stripWhiteSpace(); -+ -+ if (search.length()<4) -+ return; -+ -+ m_kcommand->addToHistory( search ); -+} -+ -+QString KMenu::newDesktopFile(const KURL& url, const QString &directory) -+{ -+ QString base = url.fileName(); -+ if (base.endsWith(".desktop")) -+ base.truncate(base.length()-8); -+ QRegExp r("(.*)(?=-\\d+)"); -+ if (r.search(base) > -1) -+ base = r.cap(1); -+ -+ QString file = base + ".desktop"; -+ -+ for(int n = 1; ++n; ) -+ { -+ if (!QFile::exists(directory+file)) -+ break; -+ -+ file = QString("%2-%1.desktop").arg(n).arg(base); -+ } -+ return directory+file; -+} -+ -+void KMenu::updateRecentlyUsedApps(KService::Ptr &service) -+{ -+ QString strItem(service->desktopEntryPath()); -+ -+ // don't add an item from root kmenu level -+ if (!strItem.contains('/')) -+ { -+ return; -+ } -+ -+ // add it into recent apps list -+ RecentlyLaunchedApps::the().appLaunched(strItem); -+ RecentlyLaunchedApps::the().save(); -+ RecentlyLaunchedApps::the().m_bNeedToUpdate = true; -+} -+ -+QSize KMenu::sizeHint() const -+{ -+#warning FIXME -+ // this should be only for the inner area so layout changes do not break it -+ const int width = kMin(KickerSettings::kMenuWidth(), QApplication::desktop()->screen()->width()-50); -+ -+ const int height = kMin(KickerSettings::kMenuHeight(), QApplication::desktop()->screen()->height()-50); -+ QSize wanted(width, height); -+ kdDebug() << "show " << minimumSizeHint() << " " << m_stacker->minimumSizeHint() << " " -+ << m_searchFrame->minimumSizeHint() << " " << wanted << endl; -+ bool isDefault = wanted.isNull(); -+ wanted = wanted.expandedTo(minimumSizeHint()); -+ if ( isDefault ) -+ wanted.setHeight( wanted.height() + ( m_favoriteView->goodHeight() - m_stacker->minimumSizeHint().height() ) ); -+ -+ return wanted; -+} -+ -+QSize KMenu::minimumSizeHint() const -+{ -+ QSize minsize; -+ minsize.setWidth( minsize.width() + m_tabBar->sizeHint().width() ); -+ minsize.setWidth( QMAX( minsize.width(), -+ m_search->minimumSize().width() ) ); -+ minsize.setWidth( QMAX( minsize.width(), -+ m_search->minimumSize().width() ) ); -+ -+ minsize.setHeight( minsize.height() + -+ m_search->minimumSize().height() + -+ m_footer->minimumSize().height() + -+ 180 ); // 180 is a very rough guess for 32 icon size -+ return minsize; -+} -+ -+void KMenu::slotFavoritesMoved( QListViewItem* item, QListViewItem* /*afterFirst*/, QListViewItem* afterNow) -+{ -+ KMenuItem* kitem = dynamic_cast<KMenuItem*>(item); -+ KMenuItem* kafterNow = dynamic_cast<KMenuItem*>(afterNow); -+ -+ QStringList favs = KickerSettings::favorites(); -+ QStringList::Iterator it; -+ QString addFav = QString::null; -+ -+ // remove at old position -+ if (kitem->service()) -+ { -+ favs.erase(favs.find(kitem->service()->storageId())); -+ addFav = kitem->service()->storageId(); -+ } -+ else -+ { -+ for (it = favs.begin(); it != favs.end(); ++it) -+ { -+ if ((*it)[0]=='/') -+ { -+ KDesktopFile df((*it),true); -+ if (df.readURL().replace("file://",QString::null)==kitem->path()) -+ { -+ addFav = *it; -+ favs.erase(it); -+ break; -+ } -+ } -+ } -+ } -+ -+ if (addFav.isEmpty()) -+ return; -+ -+ if (!kafterNow || dynamic_cast<KMenuSpacer*>(afterNow)) -+ { -+ favs.prepend(addFav); -+ } -+ else -+ { -+ // add at new position -+ for (it = favs.begin(); it != favs.end(); ++it) -+ { -+ if ((*it)[0]=='/' && !kafterNow->service()) -+ { -+ KDesktopFile df((*it),true); -+ if (df.readURL().replace("file://",QString::null)==kafterNow->path()) -+ { -+ kdDebug() << "insert after " << kafterNow->path() << endl; -+ favs.insert(++it,addFav); -+ break; -+ } -+ } -+ else if (kafterNow->service() && *it==kafterNow->service()->storageId()) -+ { -+ kdDebug() << "insert after service " << kafterNow->service() << endl; -+ favs.insert(++it,addFav); -+ break; -+ } -+ } -+ } -+ kdDebug() << "favs " << favs << endl; -+ -+ KickerSettings::setFavorites(favs); -+ KickerSettings::writeConfig(); -+ -+ m_favoriteView->slotMoveContent(); -+} -+ -+void KMenu::updateMedia() -+{ -+ QStringList devices = m_mediaWatcher->devices(); -+ if ( devices.isEmpty() ) -+ return; -+ -+ int nId = serviceMenuStartId(); -+ if ( m_media_id ) { -+ for ( int i = m_media_id + 1 ;; ++i ) -+ { -+ KMenuItem *item = m_systemView->findItem( i ); -+ if ( !item ) -+ break; -+ if ( !item->path().startsWith( "system:/" ) ) -+ break; -+ media_mimetypes.remove(item->path()); -+ delete item; -+ } -+ nId = m_media_id + 1; -+ } else { -+ m_media_id = nId; -+ m_systemView->insertSeparator( nId++, i18n("Media"), -1); -+ } -+ -+ for ( QStringList::ConstIterator it = devices.constBegin(); it != devices.constEnd(); ++it ) -+ { -+ QString id = ( *it ); -+ QString name = *++it; -+ QString label = *++it; -+ QString userLabel = ( *++it ); -+ bool mountable = ( *++it == "true" ); // bool -+ ( void )mountable; -+ QString deviceNode = ( *++it ); -+ QString mountPoint = ( *++it ); -+ QString fsType = ( *++it ); -+ bool mounted = ( *++it == "true" ); // bool -+ QString baseURL = ( *++it ); -+ QString mimeType = ( *++it ); -+ QString iconName = ( *++it ); -+ -+ media_mimetypes["system:/media/"+name] = mimeType; -+ -+ if ( iconName.isEmpty() ) // no user icon, query the MIME type -+ { -+ KMimeType::Ptr mime = KMimeType::mimeType( mimeType ); -+ iconName = mime->icon( QString::null, false ); -+ } -+ -+ QString descr = deviceNode; -+ if ( mounted ) -+ { -+ descr = mountPoint; -+ // calc the free/total space -+ struct statfs sfs; -+ if ( statfs( QFile::encodeName( mountPoint ), &sfs ) == 0 ) -+ { -+ uint64_t total = ( uint64_t )sfs.f_blocks * sfs.f_bsize; -+ uint64_t avail = ( uint64_t )( getuid() ? sfs.f_bavail : sfs.f_bfree ) * sfs.f_bsize; -+ if ( avail < total && avail > 1024 ) { -+ label += " " + i18n( "(%1 available)" ).arg( KIO::convertSize(avail) ); -+ } -+ } -+ } -+ m_systemView->insertItem( iconName, userLabel.isEmpty() ? label : userLabel, -+ descr, "system:/media/" + name, nId++, -1 ); -+ -+ ++it; // skip separator -+ } -+} -+ -+bool KMenu::ensureServiceRunning(const QString & service) -+{ -+ QStringList URLs; -+ QByteArray data, replyData; -+ QCString replyType; -+ QDataStream arg(data, IO_WriteOnly); -+ arg << service << URLs; -+ -+ if ( !kapp->dcopClient()->call( "klauncher", "klauncher", "start_service_by_desktop_name(QString,QStringList)", -+ data, replyType, replyData) ) { -+ qWarning( "call to klauncher failed."); -+ return false; -+ } -+ QDataStream reply(replyData, IO_ReadOnly); -+ -+ if ( replyType != "serviceResult" ) -+ { -+ qWarning( "unexpected result '%s' from klauncher.", replyType.data()); -+ return false; -+ } -+ int result; -+ QCString dcopName; -+ QString error; -+ reply >> result >> dcopName >> error; -+ if (result != 0) -+ { -+ qWarning("Error starting: %s", error.local8Bit().data()); -+ return false; -+ } -+ return true; -+} -+ -+void KMenu::slotFavDropped(QDropEvent * ev, QListViewItem *after ) -+{ -+ QStringList favs = KickerSettings::favorites(); -+ KMenuItem *newItem = 0; -+ -+ if (KMenuItemDrag::canDecode(ev)) -+ { -+ KMenuItemInfo item; -+ KMenuItemDrag::decode(ev,item); -+ -+ if (item.m_s) -+ { -+ if (favs.find(item.m_s->storageId())==favs.end()) -+ { -+ newItem = m_favoriteView->insertMenuItem(item.m_s, serviceMenuEndId()+favs.count()+1); -+ favs += item.m_s->storageId(); -+ } -+ } -+ else -+ { -+ QString uri = item.m_path; -+ if (uri.startsWith(locateLocal("data", QString::fromLatin1("RecentDocuments/")))) { -+ KDesktopFile df(uri,true); -+ uri=df.readURL(); -+ } -+ -+ QStringList::Iterator it; -+ for (it = favs.begin(); it != favs.end(); ++it) -+ { -+ if ((*it)[0]=='/') -+ { -+ KDesktopFile df((*it),true); -+ if (df.readURL().replace("file://",QString::null)==uri) -+ break; -+ } -+ } -+ if (it==favs.end()) -+ { -+ QString file = KickerLib::newDesktopFile(uri); -+ KDesktopFile df(file); -+ df.writeEntry("Encoding", "UTF-8"); -+ df.writeEntry("Type","Link"); -+ df.writeEntry("Name", item.m_title); -+ df.writeEntry("GenericName", item.m_description); -+ df.writeEntry("Icon", item.m_icon); -+ df.writeEntry("URL", uri); -+ -+ newItem = m_favoriteView->insertItem(item.m_icon, item.m_title, item.m_description, -+ uri, serviceMenuEndId()+favs.count()+1, -1); -+ favs += file; -+ } -+ } -+ } -+ else if (QTextDrag::canDecode(ev)) -+ { -+ QString text; -+ QTextDrag::decode(ev,text); -+ -+ if (text.endsWith(".desktop")) -+ { -+ KService::Ptr p = KService::serviceByDesktopPath(text.replace("file://",QString::null)); -+ if (p && favs.find(p->storageId())==favs.end()) { -+ newItem = m_favoriteView->insertMenuItem(p, serviceMenuEndId()+favs.count()+1); -+ favs+=p->storageId(); -+ } -+ } -+ else -+ { -+ QStringList::Iterator it; -+ for (it = favs.begin(); it != favs.end(); ++it) -+ { -+ if ((*it)[0]=='/') -+ { -+ KDesktopFile df((*it),true); -+ if (df.readURL().replace("file://",QString::null)==text) -+ break; -+ } -+ } -+ if (it==favs.end()) -+ { -+ KFileItem* item = new KFileItem(text, QString::null, KFileItem::Unknown); -+ KURL kurl(text); -+ -+ QString file = KickerLib::newDesktopFile(text); -+ KDesktopFile df(file); -+ df.writeEntry("Encoding", "UTF-8"); -+ df.writeEntry("Type","Link"); -+ df.writeEntry("Name", item->name()); -+ df.writeEntry("GenericName", i18n("Directory: %1").arg(kurl.upURL().path())); -+ df.writeEntry("Icon", item->iconName()); -+ df.writeEntry("URL", text); -+ -+ newItem = m_favoriteView->insertItem(item->iconName(), item->name(), i18n("Directory: %1").arg(kurl.upURL().path()), text, serviceMenuEndId()+favs.count()+1, -1); -+ favs += file; -+ } -+ } -+ } -+ -+ if ( newItem ) { -+ if (!after && m_favoriteView->childCount()>0) { -+ newItem->moveItem( m_favoriteView->firstChild() ); -+ m_favoriteView->firstChild()->moveItem( newItem ); -+ } -+ else -+ newItem->moveItem( after ); -+ KickerSettings::setFavorites(favs); -+ slotFavoritesMoved( newItem, 0, after ); -+ } -+ m_stacker->raiseWidget(m_favoriteView); -+} -+ -+void KMenu::resetOverflowCategory() -+{ -+ if (m_overflowCategoryState==NotNeeded) -+ m_overflowList.setAutoDelete( true ); -+ -+ m_overflowList.clear(); -+ m_overflowList.setAutoDelete( false ); -+ m_overflowCategoryState = None; -+ m_overflowCategory = num_categories; -+} -+ -+void KMenu::fillOverflowCategory() -+{ -+ if (m_overflowCategoryState==Filling) { -+ initCategoryTitlesUpdate(); -+ for (HitMenuItem * item = m_overflowList.first(); item; item = m_overflowList.next() ) { -+ max_category_id [item->category]++; -+ item->id=max_category_id [item->category]; -+ -+ KMenuItem *hit_item = m_searchResultsWidget->insertItem(iconForHitMenuItem(item), item->display_name, item->display_info, item->uri.url(), max_category_id [item->category], getHitMenuItemPosition (item)); -+ hit_item->setService(item->service); -+ } -+ updateCategoryTitles(); -+ } -+} -+ -+int KMenu::max_items(int category) const -+{ -+ if (category==ACTIONS) -+ return 10; -+ -+ return 5; -+} -+ -+#define DBUS_HAL_INTERFACE "org.freedesktop.Hal" -+#define DBUS_HAL_SYSTEM_POWER_INTERFACE "org.freedesktop.Hal.Device.SystemPowerManagement" -+#define HAL_UDI_COMPUTER "/org/freedesktop/Hal/devices/computer" -+ -+#ifdef KDELIBS_SUSE -+#include <liblazy.h> -+#endif -+ -+void KMenu::insertSuspendOption( int &nId, int &index ) -+{ -+#ifdef KDELIBS_SUSE -+ int supported = -1; -+ bool suspend_ram, suspend_disk, standby; -+ -+ liblazy_hal_get_property_bool(HAL_UDI_COMPUTER, "power_management.can_suspend", &supported); -+ if (supported == 1) -+ suspend_ram = true; -+ else -+ suspend_ram = false; -+ liblazy_hal_get_property_bool(HAL_UDI_COMPUTER, "power_management.can_standby", &supported); -+ if (supported == 1) -+ standby = true; -+ else -+ standby = false; -+ liblazy_hal_get_property_bool(HAL_UDI_COMPUTER, "power_management.can_hibernate", &supported); -+ if (supported == 1) -+ suspend_disk = true; -+ else -+ suspend_disk = false; -+ -+ if (liblazy_hal_is_caller_privileged("org.freedesktop.hal.power-management.hibernate") != 1) -+ suspend_disk = false; -+ if (liblazy_hal_is_caller_privileged("org.freedesktop.hal.power-management.suspend") != 1) -+ suspend_ram = false; -+ if (liblazy_hal_is_caller_privileged("org.freedesktop.hal.power-management.standby") != 1) -+ standby = false; -+ -+ if ( ! ( standby + suspend_ram + suspend_disk ) ) -+ return; -+ -+ i18n("Suspend Computer"); -+ -+ if ( suspend_disk ) -+ m_exitView->leftView()->insertItem( "suspend2disk", i18n( "Suspend to Disk" ), -+ i18n( "Pause without logging out" ), "kicker:/suspend_disk", nId++, index++ ); -+ -+ if ( suspend_ram ) -+ m_exitView->leftView()->insertItem( "suspend2ram", i18n( "Suspend to RAM" ), -+ i18n( "Pause without logging out" ), "kicker:/suspend_ram", nId++, index++ ); -+ -+ if ( standby ) -+ m_exitView->leftView()->insertItem( "player_pause", i18n( "Standby" ), -+ i18n( "Pause without logging out" ), "kicker:/standby", nId++, index++ ); -+#endif -+} -+ -+void KMenu::slotSuspend(int id) -+{ -+#ifdef KDELIBS_SUSE -+ int error = 0; -+ int wake = 0; -+ DBusMessage *reply = 0; -+ -+ if (id == 1) { -+ error = liblazy_dbus_system_send_method_call(DBUS_HAL_INTERFACE, -+ HAL_UDI_COMPUTER, -+ DBUS_HAL_SYSTEM_POWER_INTERFACE, -+ "Hibernate", -+ &reply, -+ DBUS_TYPE_INVALID); -+ } else if (id == 2) -+ error = liblazy_dbus_system_send_method_call(DBUS_HAL_INTERFACE, -+ HAL_UDI_COMPUTER, -+ DBUS_HAL_SYSTEM_POWER_INTERFACE, -+ "Suspend", -+ &reply, -+ DBUS_TYPE_INT32, -+ &wake, -+ DBUS_TYPE_INVALID); -+ else if (id == 3) -+ error = liblazy_dbus_system_send_method_call(DBUS_HAL_INTERFACE, -+ HAL_UDI_COMPUTER, -+ DBUS_HAL_SYSTEM_POWER_INTERFACE, -+ "Standby", -+ &reply, -+ DBUS_TYPE_INVALID); -+ else -+ return; -+ if (error) -+#endif -+ KMessageBox::error(this, i18n("Suspend failed")); -+ -+} -+ -+// vim:cindent:sw=4: ---- kicker/ui/kmenuitembase.ui (Revision 0) -+++ kicker/ui/kmenuitembase.ui (Revision 849791) -@@ -0,0 +1,141 @@ -+<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> -+<class>KMenuItemBase</class> -+<widget class="QWidget"> -+ <property name="name"> -+ <cstring>KMenuItemBase</cstring> -+ </property> -+ <property name="geometry"> -+ <rect> -+ <x>0</x> -+ <y>0</y> -+ <width>514</width> -+ <height>80</height> -+ </rect> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>7</hsizetype> -+ <vsizetype>5</vsizetype> -+ <horstretch>0</horstretch> -+ <verstretch>0</verstretch> -+ </sizepolicy> -+ </property> -+ <property name="minimumSize"> -+ <size> -+ <width>0</width> -+ <height>0</height> -+ </size> -+ </property> -+ <property name="maximumSize"> -+ <size> -+ <width>32767</width> -+ <height>80</height> -+ </size> -+ </property> -+ <property name="caption"> -+ <string>KMenuItemBase</string> -+ </property> -+ <grid> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <property name="margin"> -+ <number>2</number> -+ </property> -+ <widget class="QLayoutWidget" row="0" column="1"> -+ <property name="name"> -+ <cstring>layout11</cstring> -+ </property> -+ <vbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <widget class="QLabel"> -+ <property name="name"> -+ <cstring>itemTitle</cstring> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>7</hsizetype> -+ <vsizetype>1</vsizetype> -+ <horstretch>1</horstretch> -+ <verstretch>0</verstretch> -+ </sizepolicy> -+ </property> -+ <property name="font"> -+ <font> -+ <pointsize>14</pointsize> -+ </font> -+ </property> -+ <property name="text"> -+ <string></string> -+ </property> -+ <property name="textFormat"> -+ <enum>RichText</enum> -+ </property> -+ <property name="alignment"> -+ <set>WordBreak|AlignTop</set> -+ </property> -+ </widget> -+ <widget class="QLabel"> -+ <property name="name"> -+ <cstring>itemDescription</cstring> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>7</hsizetype> -+ <vsizetype>7</vsizetype> -+ <horstretch>0</horstretch> -+ <verstretch>1</verstretch> -+ </sizepolicy> -+ </property> -+ <property name="paletteForegroundColor"> -+ <color> -+ <red>188</red> -+ <green>188</green> -+ <blue>188</blue> -+ </color> -+ </property> -+ <property name="text"> -+ <string></string> -+ </property> -+ <property name="textFormat"> -+ <enum>RichText</enum> -+ </property> -+ <property name="alignment"> -+ <set>WordBreak|AlignTop</set> -+ </property> -+ </widget> -+ </vbox> -+ </widget> -+ <widget class="QLayoutWidget" row="0" column="0"> -+ <property name="name"> -+ <cstring>layout4</cstring> -+ </property> -+ <vbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <widget class="QLabel"> -+ <property name="name"> -+ <cstring>itemPixmap</cstring> -+ </property> -+ <property name="minimumSize"> -+ <size> -+ <width>64</width> -+ <height>64</height> -+ </size> -+ </property> -+ <property name="text"> -+ <string></string> -+ </property> -+ <property name="alignment"> -+ <set>AlignTop|AlignHCenter</set> -+ </property> -+ </widget> -+ </vbox> -+ </widget> -+ </grid> -+</widget> -+<layoutdefaults spacing="6" margin="11"/> -+</UI> ---- kicker/ui/addappletvisualfeedback.cpp (Revision 849788) -+++ kicker/ui/addappletvisualfeedback.cpp (Revision 849791) -@@ -51,6 +51,7 @@ - m_richText(0), - m_dissolveDelta(-1), - m_frames(1), -+ m_moveTimer(0, "m_moveTimer"), - m_dirty(false) - { - setFocusPolicy(NoFocus); ---- kicker/ui/kickoff_bar.cpp (Revision 0) -+++ kicker/ui/kickoff_bar.cpp (Revision 849791) -@@ -0,0 +1,200 @@ -+/***************************************************************** -+ -+ Copyright (c) 1996-2000 the kicker authors. See file AUTHORS. -+ Copyright (c) 2006 Dirk Mueller <mueller@kde.org> -+ -+ This program is free software; you can redistribute it and/or -+ modify it under the terms of the GNU General Public -+ License as published by the Free Software Foundation; either -+ version 2 of the License, or (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; see the file COPYING. If not, write to -+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ Boston, MA 02110-1301, USA. -+ -+******************************************************************/ -+ -+#include "kickoff_bar.h" -+#include "itemview.h" -+ -+#include <qiconset.h> -+#include <qpainter.h> -+#include <qcursor.h> -+#include <qstyle.h> -+#include <qapplication.h> -+ -+#include <kdebug.h> -+#include "kickerSettings.h" -+ -+KickoffTabBar::KickoffTabBar(QWidget* parent, const char* name) -+ : QTabBar(parent, name), m_tabsActivated(true) -+{ -+ setAcceptDrops(true); -+} -+ -+void KickoffTabBar::deactivateTabs(bool b) -+{ -+ m_tabsActivated = !b; -+ -+ update(); -+} -+ -+void KickoffTabBar::paint(QPainter* p, QTab* t, bool selected) const -+{ -+ QStyle::SFlags flags = QStyle::Style_Default; -+ -+ if (isEnabled() && t->isEnabled()) -+ flags |= QStyle::Style_Enabled; -+ if ( m_tabsActivated && selected ) -+ flags |= QStyle::Style_Selected; -+// else if(t == d->pressed) -+// flags |= QStyle::Style_Sunken; -+ //selection flags -+ if(t->rect().contains(mapFromGlobal(QCursor::pos()))) -+ flags |= QStyle::Style_MouseOver; -+ style().drawControl( QStyle::CE_TabBarTab, p, this, t->rect(), -+ colorGroup(), flags, QStyleOption(t) ); -+ -+ paintLabel( p, t->rect(), t, t->identifier() == keyboardFocusTab() ); -+} -+ -+ -+void KickoffTabBar::paintLabel(QPainter* p, const QRect& br, QTab* t, bool has_focus) const -+{ -+ QRect r = br; -+ -+ bool selected = m_tabsActivated && (currentTab() == t->identifier()); -+ int vframe = style().pixelMetric( QStyle::PM_TabBarTabVSpace, this ); -+ -+ p->setFont( font() ); -+ QFontMetrics fm = p->fontMetrics(); -+ int fw = fm.size( Qt::SingleLine|Qt::ShowPrefix, t->text() ).width(); -+ -+ QRect rt(r); -+ rt.setWidth(fw); -+ -+ if ( t->iconSet()) -+ { -+ // the tab has an iconset, draw it in the right mode -+ QIconSet::Mode mode = (t->isEnabled() && isEnabled()) -+ ? QIconSet::Normal : QIconSet::Disabled; -+ if ( mode == QIconSet::Normal && has_focus ) -+ mode = QIconSet::Active; -+ QPixmap pixmap = t->iconSet()->pixmap( QIconSet::Large, mode ); -+ int pixw = pixmap.width(); -+ int pixh = pixmap.height(); -+ int xoff = br.x() + (br.width() - pixw)/2; -+ int yoff = br.y() + (br.height() - 4 - pixh - ((KickerSettings::kickoffTabBarFormat() != KickerSettings::IconOnly) ? fm.height() : 0) - vframe)/2; -+ -+ p->drawPixmap( xoff, 4 + yoff, pixmap ); -+ -+ r.setTop(vframe/2 + yoff + pixh - 8); -+ rt.setTop(vframe/2 + yoff + pixh - 8); -+ rt.setHeight(((KickerSettings::kickoffTabBarFormat() != KickerSettings::IconOnly) ? fm.height() : 0) + vframe/2); -+ } -+ else -+ rt.setHeight(vframe/2 + fm.height()); -+ -+ rt.setWidth(fw+8); -+ rt.moveCenter(r.center()); -+ -+ QStyle::SFlags flags = QStyle::Style_Default; -+ -+ if (isEnabled() && t->isEnabled()) -+ flags |= QStyle::Style_Enabled; -+ if (has_focus) -+ flags |= QStyle::Style_HasFocus; -+ if ( selected ) -+ flags |= QStyle::Style_Selected; -+ // else if(t == d->pressed) -+ // flags |= QStyle::Style_Sunken; -+ if(t->rect().contains(mapFromGlobal(QCursor::pos()))) -+ flags |= QStyle::Style_MouseOver; -+ style().drawControl( QStyle::CE_TabBarLabel, p, this, rt, -+ t->isEnabled() ? colorGroup(): palette().disabled(), -+ flags, QStyleOption(t) ); -+} -+ -+QSize KickoffTabBar::sizeHint() const -+{ -+ QSize s = QTabBar::sizeHint(); -+ -+ return s; -+} -+ -+void KickoffTabBar::layoutTabs() -+{ -+ QTabBar::layoutTabs(); -+ -+ QFontMetrics fm = fontMetrics(); -+ int fh = ((KickerSettings::kickoffTabBarFormat() != KickerSettings::IconOnly) ? fm.height() : 0) + 4; -+ -+ int hframe = style().pixelMetric( QStyle::PM_TabBarTabHSpace, this ); -+ int vframe = style().pixelMetric( QStyle::PM_TabBarTabVSpace, this ); -+ int overlap = style().pixelMetric( QStyle::PM_TabBarTabOverlap, this ); -+ -+ QSize s; -+ for (int t = 0; t < count(); ++t) -+ { -+ QTab* tab = tabAt(t); -+ if (tab->iconSet()) -+ s = s.expandedTo(tab->iconSet()->pixmap(QIconSet::Large, QIconSet::Normal).size()); -+ } -+ -+ int x = 0; -+ for (int t = 0; t < count(); ++t) { -+ QTab* tab = tabAt(QApplication::reverseLayout() ? count() - t - 1 : t); -+ int h = fh; -+ if (tab->iconSet()) -+ h += 4 + s.height() + 4; -+ QRect r = tab->rect(); -+ -+ int fw = fm.size( Qt::SingleLine|Qt::ShowPrefix, tab->text() ).width(); -+ int iw = 0; -+ if ( tab->iconSet() != 0 ) -+ iw = tab->iconSet()->pixmap( QIconSet::Large, QIconSet::Normal ).width(); -+ int w = QMAX(iw, fw + 6 + 6 ) + hframe; -+ h += ((KickerSettings::kickoffTabBarFormat() != KickerSettings::IconOnly) ? fm.height() : 0) + vframe; -+ tab->setRect(QRect(QPoint(x, 0), style().sizeFromContents(QStyle::CT_TabBarTab, this, -+ QSize(w, h), QStyleOption(tab)))); -+ x += tab->rect().width() - overlap; -+ } -+} -+ -+void KickoffTabBar::dragEnterEvent(QDragEnterEvent* event) -+{ -+ event->accept(KMenuItemDrag::canDecode(event)); -+} -+ -+void KickoffTabBar::dragMoveEvent(QDragMoveEvent* event) -+{ -+ QTab* t = selectTab(event->pos()); -+ -+ // ### uhhh, look away -+ if (t && t->identifier() == 0) -+ { -+ setCurrentTab(t); -+ } -+} -+ -+void KickoffTabBar::mousePressEvent( QMouseEvent * e ) -+{ -+ if ( e->button() != LeftButton ) { -+ e->ignore(); -+ return; -+ } -+ QTab *t = selectTab( e->pos() ); -+ if ( t && t->isEnabled() ) { -+ emit tabClicked(t); -+ } -+ QTabBar::mousePressEvent(e); -+} -+ -+#include "kickoff_bar.moc" -+// vim:cindent:sw=4: ---- kicker/ui/media_watcher.h (Revision 0) -+++ kicker/ui/media_watcher.h (Revision 849791) -@@ -0,0 +1,51 @@ -+/***************************************************************** -+ -+Copyright (c) 2006 Stephan Kulow <coolo@novell.com> -+ -+Permission is hereby granted, free of charge, to any person obtaining a copy -+of this software and associated documentation files (the "Software"), to deal -+in the Software without restriction, including without limitation the rights -+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+copies of the Software, and to permit persons to whom the Software is -+furnished to do so, subject to the following conditions: -+ -+The above copyright notice and this permission notice shall be included in -+all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+******************************************************************/ -+ -+#ifndef _media_watcher_ -+#define _media_watcher_ -+ -+#include <dcopobject.h> -+#include <qobject.h> -+#include <qstringlist.h> -+ -+class MediaWatcher : public QObject, public DCOPObject -+{ -+ Q_OBJECT -+ K_DCOP -+ -+ QStringList m_devices; -+ void updateDevices(); -+ -+k_dcop: -+ void slotMediumAdded(QString medium, bool a); -+ -+signals: -+ void mediumChanged(); -+ -+public: -+ MediaWatcher(QObject *parent); -+ -+ QStringList devices() const { return m_devices; } -+}; -+ -+#endif ---- kicker/ui/appletop_mnu.h (Revision 849788) -+++ kicker/ui/appletop_mnu.h (Revision 849791) -@@ -47,6 +47,9 @@ - signals: - void escapePressed(); - -+protected slots: -+ void toggleLegacy(); -+ - protected: - void keyPressEvent(QKeyEvent* e); - }; ---- kicker/ui/flipscrollview.h (Revision 0) -+++ kicker/ui/flipscrollview.h (Revision 849791) -@@ -0,0 +1,118 @@ -+/***************************************************************** -+ -+Copyright (c) 2006 Will Stephenson <wstephenson@novell.com> -+ -+Permission is hereby granted, free of charge, to any person obtaining a copy -+of this software and associated documentation files (the "Software"), to deal -+in the Software without restriction, including without limitation the rights -+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+copies of the Software, and to permit persons to whom the Software is -+furnished to do so, subject to the following conditions: -+ -+The above copyright notice and this permission notice shall be included in -+all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+******************************************************************/ -+ -+/* -+ * Flip scroll menu -+ * Each level of the menu is a separate QListView -+ * Child items are added to their own QListView. -+ * When a parent is clicked, we look up its child menu and insert -+ * that in a QScrollView, then scroll to it. -+ * -+ * Need to intercept QListViewItems' parent param and instead of -+ * inserting directly into parent, insert into parent item's listview -+ * -+ * So need -+ * - adapted QLVI -+ * - wrap QLV and offer same interface -+ */ -+ -+#ifndef FLIPSCROLLVIEW_H -+#define FLIPSCROLLVIEW_H -+ -+#include <qscrollview.h> -+#include <qlistview.h> -+#include <qframe.h> -+#include <qtimer.h> -+#include <qpainter.h> -+#include <kstandarddirs.h> -+#include "service_mnu.h" -+ -+class ItemView; -+ -+class BackFrame : public QFrame -+{ -+ Q_OBJECT -+ -+public: -+ BackFrame( QWidget *parent ); -+ virtual void drawContents( QPainter *p ); -+ -+ void enterEvent ( QEvent * ); -+ void leaveEvent( QEvent * ); -+ void mousePressEvent ( QMouseEvent * e ); -+ -+signals: -+ void clicked(); -+ -+private: -+ QPixmap left_triangle; -+ bool mouse_inside; -+}; -+ -+class FlipScrollView : public QScrollView -+{ -+ Q_OBJECT -+public: -+ enum State{ StoppedLeft, StoppedRight, ScrollingLeft, ScrollingRight }; -+ FlipScrollView( QWidget * parent = 0, const char * name = 0 ); -+ ~FlipScrollView(); -+ -+ ItemView *currentView() const; -+ ItemView *leftView() const; -+ ItemView *rightView() const; -+ ItemView *prepareLeftMove(bool clear=true); -+ ItemView *prepareRightMove(); -+ -+ void flipScroll(const QString& selectMenuPath = QString::null); -+ void showBackButton(bool enable); -+ bool showsBackButton() const {return mShowBack;} -+ -+protected slots: -+ void slotScrollTimer(); -+ -+signals: -+ void startService(KService::Ptr kservice); -+ void startURL(const QString& u); -+ void rightButtonPressed(QListViewItem*,const QPoint&,int); -+ void backButtonClicked(); -+ -+protected: -+ void viewportResizeEvent ( QResizeEvent * ); -+ -+private: -+ ItemView * mLeftView; -+ ItemView * mRightView; -+// ItemView * mCurrentView; -+ int mStepsRemaining; -+ State mState; -+ QTimer * mTimer; -+ BackFrame *mBackrow; -+ QString mSelectMenuPath; -+ int mScrollDirection; -+ bool mShowBack; -+}; -+ -+ -+ -+ -+#endif ---- kicker/ui/k_new_mnu.h (Revision 0) -+++ kicker/ui/k_new_mnu.h (Revision 849791) -@@ -0,0 +1,342 @@ -+/***************************************************************** -+ -+ Copyright (c) 1996-2000 the kicker authors. See file AUTHORS. -+ Copyright (c) 2006 Debajyoti Bera <dbera.web@gmail.com> -+ -+ This program is free software; you can redistribute it and/or -+ modify it under the terms of the GNU General Public -+ License as published by the Free Software Foundation; either -+ version 2 of the License, or (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; see the file COPYING. If not, write to -+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ Boston, MA 02110-1301, USA. -+ -+******************************************************************/ -+ -+#ifndef __k_new_mnu_h__ -+#define __k_new_mnu_h__ -+ -+#include <dcopobject.h> -+#include <qintdict.h> -+#include <qpixmap.h> -+#include <qframe.h> -+#include <qtoolbutton.h> -+#include <qscrollview.h> -+#include <qtimer.h> -+#include <qbitmap.h> -+#include <qvbox.h> -+#include <qregexp.h> -+ -+#include <kabc/addressbook.h> -+#include <kabc/stdaddressbook.h> -+#include "../interfaces/kickoff-search-plugin.h" -+ -+#include "kmenubase.h" -+#include "service_mnu.h" -+#include "query.h" -+ -+class KickerClientMenu; -+class KickoffTabBar; -+class KBookmarkMenu; -+class KActionCollection; -+class KBookmarkOwner; -+class Panel; -+class QWidgetStack; -+class KHistoryCombo; -+class QScrollView; -+class PopupMenuTitle; -+class MediaWatcher; -+class KURIFilterData; -+class KBookmarkGroup; -+class KBookmarkManager; -+class ItemView; -+class FlipScrollView; -+class QListViewItem; -+class KMenuItem; -+class QListView; -+class QTabBar; -+class QTab; -+ -+static QString categories[14] = {I18N_NOOP("Actions"), I18N_NOOP("Applications"), I18N_NOOP("Bookmarks"), -+ I18N_NOOP("Notes"), I18N_NOOP("Emails"), I18N_NOOP("Files"), I18N_NOOP("Music"), -+ I18N_NOOP("Browsing History"), I18N_NOOP("Chat Logs"), I18N_NOOP("Feeds"), -+ I18N_NOOP("Pictures"), I18N_NOOP("Videos"), I18N_NOOP("Documentation"), -+ I18N_NOOP("Others")}; -+ -+static QString kerry_categories[14] = {"contacts", "applications", "webpages", "everything", "conversations", -+ "everything", "media", "webpages", "conversations", "webpages", "images", -+ "media", "everything", "everything"}; -+ -+enum MenuOrientation { BottomUp, TopDown, UnDetermined }; -+enum OverflowCategoryState { None, Filling, NotNeeded }; -+ -+class KMenu : public KMenuBase -+{ -+ Q_OBJECT -+ Q_PROPERTY (bool KStyleMenuDropShadow READ useKStyleMenuDropShadow ) -+ -+public: -+ KMenu(); -+ ~KMenu(); -+ -+ int insertClientMenu(KickerClientMenu *p); -+ void removeClientMenu(int id); -+ -+ bool useKStyleMenuDropShadow() const { return true; } -+ -+ virtual void showMenu(); -+ virtual bool eventFilter(QObject*, QEvent*); -+ -+ void clearRecentAppsItems(); -+ void clearRecentDocsItems(); -+ bool highlightMenuItem(const QString& /*id*/) { return false;} -+ -+ void selectFirstItem() {} -+ void popup(const QPoint&, int indexAtPoint); -+ -+ enum MaskEffect { Plain, Dissolve }; -+ -+ virtual QSize sizeHint() const; -+ virtual QSize minimumSizeHint() const; -+ -+ void searchOver(); -+ void initCategoryTitlesUpdate(); -+ bool anotherHitMenuItemAllowed(int cat, bool count=true); -+ void addHitMenuItem(HitMenuItem*); -+ void insertSearchResult(HitMenuItem* item); -+ -+ void updateCategoryTitles(); -+ -+signals: -+ void aboutToHide(); -+ void aboutToShow(); -+ -+public slots: -+ virtual void initialize(); -+ -+ virtual void hide(); -+ virtual void show(); -+ -+ void stackWidgetRaised(QWidget*); -+ -+protected slots: -+ void slotLock(); -+ void slotOpenHomepage(); -+ void slotLogout(); -+ void slotPopulateSessions(); -+ void slotSessionActivated( int ); -+ void slotGoSubMenu(const QString& relPath); -+ void slotGoBack(); -+ void slotGoExitMainMenu(); -+ void slotGoExitSubMenu(const QString& url); -+ void tabClicked(QTab*); -+ -+ void paletteChanged(); -+ virtual void configChanged(); -+ void updateRecent(); -+ -+ void initSearch(); -+ void searchAccept(); -+ void searchChanged(const QString &); -+ // when timeout happens or doQueryNow calls -+ void doQuery (bool return_pressed = false); -+ void searchActionClicked(QListViewItem*); -+ -+ void slotStartService(KService::Ptr); -+ void slotStartURL(const QString&); -+ void slotContextMenuRequested( QListViewItem * item, const QPoint & pos, int col ); -+ -+ void clearedHistory(); -+ -+ void slotSloppyTimeout(); -+ -+ void slotContextMenu(int); -+ void slotFavoritesMoved( QListViewItem*, QListViewItem*, QListViewItem* ); -+ -+ void updateMedia(); -+ void slotFavDropped(QDropEvent * e, QListViewItem *after ); -+ void slotSuspend(int id); -+ -+protected: -+ virtual void paintEvent(QPaintEvent *); -+ virtual void resizeEvent ( QResizeEvent * ); -+ virtual void mousePressEvent ( QMouseEvent * e ); -+ virtual void mouseReleaseEvent ( QMouseEvent * e ); -+ virtual void mouseMoveEvent ( QMouseEvent * e ); -+ -+ void doNewSession(bool lock); -+ void createRecentMenuItems(); -+ void insertStaticItems(); -+ void insertStaticExitItems(); -+ void insertSuspendOption( int &id, int &index ); -+ virtual void clearSubmenus(); -+// void raiseStackWidget(QWidget *view); -+ -+ bool runCommand(); -+ -+ void setupUi(); -+ -+ void saveConfig(); -+ void searchProgramList(QString relPath); -+ void searchBookmarks(KBookmarkGroup); -+ void searchAddressbook(); -+ -+ void createNewProgramList(); -+ void createNewProgramList(QString relPath); -+ -+ void paintSearchTab( bool active ); -+ -+ void goSubMenu(const QString& relPath, bool keyboard = false); -+ void setOrientation(MenuOrientation orientation); -+ -+private: -+ int serviceMenuStartId() { return 5242; } -+ int serviceMenuEndId() { return 5242; } -+ -+ void fillMenu( KServiceGroup::Ptr &_root, KServiceGroup::List &_list, -+ const QString &_relPath, ItemView* view, int & id ); -+ -+ void fillSubMenu(const QString& relPath, ItemView *view); -+ -+ QPopupMenu *sessionsMenu; -+ int client_id; -+ bool delay_init; -+ QIntDict<KickerClientMenu> clients; -+ KActionCollection *actionCollection; -+ PopupMenuList dynamicSubMenus; -+ -+ QTimer m_sloppyTimer; -+ QTimer m_mediaFreeTimer; -+ MediaWatcher * m_mediaWatcher; -+ QRegion m_sloppyRegion; -+ QRect m_sloppySource; -+ bool m_sloppySourceClicked; -+ QWidget * m_sloppyWidget; -+ ItemView * m_recentlyView; -+ ItemView * m_favoriteView; -+ ItemView * m_searchResultsWidget; -+ QListView * m_searchActions; -+ FlipScrollView * m_browserView; -+ ItemView * m_systemView; -+ FlipScrollView * m_exitView; -+ QVBox * m_searchWidget; -+ QLabel * m_resizeHandle; -+ -+ bool m_isresizing; -+ // timer for search without pressing enter feature -+ QTimer *input_timer, *init_search_timer; -+ -+ Query current_query; -+ -+ bool dontQueryNow(const QString &); -+ -+ // start timeout timer to call doQuery is enough time has passed since last keypress -+ void checkToDoQuery (const QString &); -+ // when return is pressed -+ void doQueryNow (); -+ void clearSearchResults(bool showHelp = true); -+ -+ int *max_category_id; // maximum id in this category: max_category_id - base_category_id gives the current number of hits displayed in this category -+ int *categorised_hit_total; // current number of hits returned in each category -+ -+ bool ensureServiceRunning(const QString & service); -+ -+ QString iconForHitMenuItem(HitMenuItem *hit_item); -+ -+ int getHitMenuItemPosition (HitMenuItem *hit_item); -+ QMap<QString, QString> mimetype_iconstore; -+ QMap<QString, QString> media_mimetypes; -+ // report error as a menu item -+ void reportError (QString err); -+ void addToHistory(); -+ -+ int max_items(int category) const; -+ QString TOP_CATEGORY_STRING; -+ bool *already_added; -+ -+ void notifyServiceStarted(KService::Ptr service); -+ void parseLine( bool final ); -+ QString m_iconName; -+ QStringList m_middleFilters; -+ QStringList m_finalFilters; -+ KURIFilterData* m_filterData; -+ QPtrList<HitMenuItem> m_current_menu_items; -+ QListViewItem *m_searchIndex, *m_searchInternet; -+ -+ bool checkUriInMenu(const KURL &uri); -+ -+ QRegExp emailRegExp,uriRegExp,uri2RegExp,authRegExp; -+ -+ KBookmarkManager *bookmarkManager; -+ KABC::AddressBook* m_addressBook; -+ -+ enum ContextMenuEntry { AddItemToPanel, EditItem, AddMenuToPanel, EditMenu, -+ AddItemToDesktop, AddMenuToDesktop, PutIntoRunDialog, -+ AddToFavorites, RemoveFromFavorites, ClearRecentlyUsedApps, -+ ClearRecentlyUsedDocs }; -+ struct PopupPath -+ { -+ QString title, description, icon, path, menuPath; -+ }; -+ -+ enum KickoffTabEntry { FavoriteTab, ApplicationsTab, ComputerTab, -+ HistoryTab, LeaveTab, SearchTab, NumTabs }; -+ -+ KPopupMenu* m_popupMenu; -+ KService* m_popupService; -+ PopupPath m_popupPath; -+ -+ KickoffTabBar* m_tabBar; -+ QTab* m_tabs[NumTabs]; -+ -+ QString newDesktopFile(const KURL& url, const QString &directory); -+ void updateRecentlyUsedApps(KService::Ptr &service); -+ -+ QPixmap main_border_lc; -+ QPixmap main_border_rc; -+ QPixmap main_border_tl; -+ QPixmap main_border_tr; -+ QPixmap button_box_left; -+ -+ QPixmap search_tab_left; -+ QPixmap search_tab_right; -+ QPixmap search_tab_center; -+ -+ QPixmap search_tab_top_left; -+ QPixmap search_tab_top_right; -+ QPixmap search_tab_top_center; -+ -+ QWidgetStack *m_stacker; -+ -+ QStringList m_programsInMenu; -+ QStringList m_newInstalledPrograms, m_seenPrograms; -+ bool m_seenProgramsChanged; -+ QString m_currentDate; -+ -+ MenuOrientation m_orientation; -+ bool m_toolTipsEnabled; -+ int m_media_id; -+ -+ bool m_recentDirty, m_browserDirty, m_kerryInstalled, m_isShowing; -+ -+ KickoffSearch::Plugin* m_search_plugin; -+ QObject* m_search_plugin_interface; -+ -+ OverflowCategoryState m_overflowCategoryState; -+ QPtrList<HitMenuItem> m_overflowList; -+ int m_overflowCategory; -+ -+ void resetOverflowCategory(); -+ void fillOverflowCategory(); -+ -+ QString insertBreaks(const QString& text, QFontMetrics fm, int width, QString leadInsert = QString::null); -+}; -+ -+#endif ---- kicker/ui/appletop_mnu.cpp (Revision 849788) -+++ kicker/ui/appletop_mnu.cpp (Revision 849791) -@@ -30,6 +30,7 @@ - #include "appletop_mnu.h" - #include "container_button.h" - #include "containerarea.h" -+#include "kickerSettings.h" - - PanelAppletOpMenu::PanelAppletOpMenu(int actions, QPopupMenu *opMenu, const QPopupMenu* appletsMenu, - const QString & title, const QString &icon, -@@ -159,6 +160,20 @@ - } - } - -+ if ((actions & PanelAppletOpMenu::KMenuEditor)) -+ { -+ if (needSeparator) -+ { -+ insertSeparator(); -+ needSeparator = false; -+ } -+ -+ if (KickerSettings::legacyKMenu()) -+ insertItem(SmallIcon("suse"), i18n("Switch to SUSE Menu Style"), this, SLOT(toggleLegacy())); -+ else -+ insertItem(SmallIcon("about_kde"), i18n("Switch to KDE Menu Style"), this, SLOT(toggleLegacy())); -+ } -+ - if ((actions & PanelAppletOpMenu::KMenuEditor) && kapp->authorizeKAction("menuedit")) - { - if (needSeparator) -@@ -205,4 +220,11 @@ - QPopupMenu::keyPressEvent(e); - } - -+void PanelAppletOpMenu::toggleLegacy() -+{ -+ KickerSettings::setLegacyKMenu(!KickerSettings::legacyKMenu()); -+ KickerSettings::writeConfig(); -+ Kicker::the()->restart(); -+} -+ - #include "appletop_mnu.moc" ---- kicker/ui/kmenubase.ui (Revision 0) -+++ kicker/ui/kmenubase.ui (Revision 849791) -@@ -0,0 +1,300 @@ -+<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> -+<class>KMenuBase</class> -+<widget class="QDialog"> -+ <property name="name"> -+ <cstring>KMenu</cstring> -+ </property> -+ <property name="geometry"> -+ <rect> -+ <x>0</x> -+ <y>0</y> -+ <width>723</width> -+ <height>580</height> -+ </rect> -+ </property> -+ <property name="caption"> -+ <string>KMenu</string> -+ </property> -+ <property name="frameShadow" stdset="0"> -+ <string>MShadow</string> -+ </property> -+ <property name="frameShape" stdset="0"> -+ <string>MShape</string> -+ </property> -+ <widget class="QLayoutWidget"> -+ <property name="name"> -+ <cstring>m_search</cstring> -+ </property> -+ <property name="geometry"> -+ <rect> -+ <x>20</x> -+ <y>40</y> -+ <width>190</width> -+ <height>54</height> -+ </rect> -+ </property> -+ <hbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <property name="margin"> -+ <number>0</number> -+ </property> -+ <property name="spacing"> -+ <number>0</number> -+ </property> -+ <widget class="QFrame"> -+ <property name="name"> -+ <cstring>m_searchFrame</cstring> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>5</hsizetype> -+ <vsizetype>0</vsizetype> -+ <horstretch>0</horstretch> -+ <verstretch>0</verstretch> -+ </sizepolicy> -+ </property> -+ <property name="minimumSize"> -+ <size> -+ <width>0</width> -+ <height>52</height> -+ </size> -+ </property> -+ <property name="maximumSize"> -+ <size> -+ <width>32767</width> -+ <height>52</height> -+ </size> -+ </property> -+ <property name="frameShape"> -+ <enum>StyledPanel</enum> -+ </property> -+ <property name="frameShadow"> -+ <enum>Raised</enum> -+ </property> -+ <property name="lineWidth"> -+ <number>0</number> -+ </property> -+ <hbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <widget class="QLayoutWidget"> -+ <property name="name"> -+ <cstring>layout18</cstring> -+ </property> -+ <hbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <widget class="QLabel"> -+ <property name="name"> -+ <cstring>m_searchLabel</cstring> -+ </property> -+ <property name="backgroundOrigin"> -+ <enum>ParentOrigin</enum> -+ </property> -+ <property name="font"> -+ <font> -+ <pointsize>14</pointsize> -+ </font> -+ </property> -+ <property name="text"> -+ <string>Search:</string> -+ </property> -+ </widget> -+ <widget class="KHistoryCombo"> -+ <property name="name"> -+ <cstring>m_kcommand</cstring> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>7</hsizetype> -+ <vsizetype>0</vsizetype> -+ <horstretch>0</horstretch> -+ <verstretch>0</verstretch> -+ </sizepolicy> -+ </property> -+ </widget> -+ <widget class="QLabel"> -+ <property name="name"> -+ <cstring>m_searchPixmap</cstring> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>1</hsizetype> -+ <vsizetype>1</vsizetype> -+ <horstretch>0</horstretch> -+ <verstretch>0</verstretch> -+ </sizepolicy> -+ </property> -+ <property name="minimumSize"> -+ <size> -+ <width>32</width> -+ <height>32</height> -+ </size> -+ </property> -+ <property name="maximumSize"> -+ <size> -+ <width>32</width> -+ <height>32</height> -+ </size> -+ </property> -+ <property name="backgroundMode"> -+ <enum>PaletteBackground</enum> -+ </property> -+ <property name="backgroundOrigin"> -+ <enum>ParentOrigin</enum> -+ </property> -+ <property name="scaledContents"> -+ <bool>true</bool> -+ </property> -+ </widget> -+ </hbox> -+ </widget> -+ </hbox> -+ </widget> -+ <spacer> -+ <property name="name"> -+ <cstring>spacer5_2</cstring> -+ </property> -+ <property name="orientation"> -+ <enum>Horizontal</enum> -+ </property> -+ <property name="sizeType"> -+ <enum>Preferred</enum> -+ </property> -+ <property name="sizeHint"> -+ <size> -+ <width>16</width> -+ <height>20</height> -+ </size> -+ </property> -+ </spacer> -+ </hbox> -+ </widget> -+ <widget class="QLayoutWidget"> -+ <property name="name"> -+ <cstring>m_footer</cstring> -+ </property> -+ <property name="geometry"> -+ <rect> -+ <x>20</x> -+ <y>110</y> -+ <width>407</width> -+ <height>34</height> -+ </rect> -+ </property> -+ <hbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <property name="margin"> -+ <number>4</number> -+ </property> -+ <property name="spacing"> -+ <number>4</number> -+ </property> -+ <widget class="QLabel"> -+ <property name="name"> -+ <cstring>m_userInfo</cstring> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>3</hsizetype> -+ <vsizetype>0</vsizetype> -+ <horstretch>0</horstretch> -+ <verstretch>0</verstretch> -+ </sizepolicy> -+ </property> -+ <property name="text"> -+ <string>User&nbsp;<b>user</b>&nbsp;on&nbsp;<b>host</b></string> -+ </property> -+ </widget> -+ <spacer> -+ <property name="name"> -+ <cstring>spacer13_2</cstring> -+ </property> -+ <property name="orientation"> -+ <enum>Horizontal</enum> -+ </property> -+ <property name="sizeType"> -+ <enum>MinimumExpanding</enum> -+ </property> -+ <property name="sizeHint"> -+ <size> -+ <width>10</width> -+ <height>20</height> -+ </size> -+ </property> -+ </spacer> -+ <widget class="QToolButton"> -+ <property name="name"> -+ <cstring>m_branding</cstring> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>4</hsizetype> -+ <vsizetype>4</vsizetype> -+ <horstretch>0</horstretch> -+ <verstretch>0</verstretch> -+ </sizepolicy> -+ </property> -+ <property name="maximumSize"> -+ <size> -+ <width>90</width> -+ <height>24</height> -+ </size> -+ </property> -+ <property name="text"> -+ <string></string> -+ </property> -+ <property name="iconSet"> -+ <iconset>image0</iconset> -+ </property> -+ <property name="usesBigPixmap"> -+ <bool>true</bool> -+ </property> -+ <property name="autoRaise"> -+ <bool>true</bool> -+ </property> -+ </widget> -+ <spacer> -+ <property name="name"> -+ <cstring>spacer13</cstring> -+ </property> -+ <property name="orientation"> -+ <enum>Horizontal</enum> -+ </property> -+ <property name="sizeType"> -+ <enum>Fixed</enum> -+ </property> -+ <property name="sizeHint"> -+ <size> -+ <width>14</width> -+ <height>20</height> -+ </size> -+ </property> -+ </spacer> -+ </hbox> -+ </widget> -+</widget> -+<customwidgets> -+</customwidgets> -+<images> -+ <image name="image0"> -+ <data format="XPM.GZ" length="2522">789cdd933d6fdb30104077ff0a21de8c82b12d5bb2507448f6021d0b141dc82369d9116d7d50b1ada2ffbdbca3c4444950244032b4b790efce7cd29de8eb59f4fddbd768763d692cb73b8820e7753493ad31971f3fbffc9a5c6d36d17219c5f36871f56972e57e104dd7324be325a2464cd24cc60a5120a6731eaf046241c879b64e113bc44dcc751223da802bc41de16ac092508a753a4754885922440a8892301332a5e79e10f91c169b0cf1963083345b231a423ee0bec78dc71c51c420393578249432e664be2354d2bd17628d0889cc0447bc20cab9d490205601a9df29e142cd3d9e0933b59234ba0321576b49d3d8f69878bc41544b952a6abf218c9590f41a9c70a5c0e33d21e885a2e1b4883ad1a9de2032420ac20f8affde3df5415bdea7f8b8c0fbed507fa59b0bf02119739f9172b46e755fc819dbf55bd07ba15fef0ec7f6b41f728c0dcf84bbc76ebedfbfde0d2042eb8fdd5b801de5b794281e06f716f7ee710f619d5227a1b01b1d0aeedc18e366660ec7b2ac18ab1d1a9745acd1ad3161f28631dbbb716d86c29112c2f86363770ec20a383a89b51a9a06b4b5503a2c10dd771b46d98cdcac180a052528cc13b781b6bd7759506d5b435541ddb6161cba16c0f5a174383872b3729057c19dbfe06ed16ddab642b7324638b77b870add3eaae76e1fb577db17e7fdcc5d586bcd5fddc59bdda7deed7d83db580a81ee93bb906eefd4ee0fa24201ddda53f9d4ad4ce92605fae466713843614ceddd17b83008d1b06618bd2b5e42de3da70b7019dfc1b2eb3af7e140a9ae7342d3d152babb75ee1a76ea7c9478ea5c92bd3bf6c7a870f6677cdc8cdd7d840bf40ef1cc7dfb716efd81eef78c7fd6fdfbf3e40f51236246</data> -+ </image> -+</images> -+<includes> -+ <include location="local" impldecl="in implementation">kmenubase.ui.h</include> -+</includes> -+<functions> -+ <function access="private" specifier="non virtual">init()</function> -+</functions> -+<layoutdefaults spacing="6" margin="11"/> -+<includehints> -+ <includehint>kcombobox.h</includehint> -+</includehints> -+</UI> ---- kicker/ui/kickoff_bar.h (Revision 0) -+++ kicker/ui/kickoff_bar.h (Revision 849791) -@@ -0,0 +1,53 @@ -+/***************************************************************** -+ -+ Copyright (c) 1996-2000 the kicker authors. See file AUTHORS. -+ Copyright (c) 2006 Dirk Mueller <mueller@kde.org> -+ -+ This program is free software; you can redistribute it and/or -+ modify it under the terms of the GNU General Public -+ License as published by the Free Software Foundation; either -+ version 2 of the License, or (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; see the file COPYING. If not, write to -+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ Boston, MA 02110-1301, USA. -+ -+******************************************************************/ -+ -+#ifndef __kickoff_bar_h__ -+#define __kickoff_bar_h__ -+ -+#include <qtabbar.h> -+ -+class KickoffTabBar : public QTabBar -+{ -+ Q_OBJECT -+public: -+ KickoffTabBar(QWidget* parent, const char* name); -+ -+ void deactivateTabs(bool b); -+ virtual QSize sizeHint() const; -+ -+protected: -+ virtual void paint(QPainter*, QTab*, bool) const; -+ virtual void paintLabel(QPainter* p, const QRect& br, QTab* t, bool has_focus) const; -+ virtual void layoutTabs(); -+ virtual void dragEnterEvent(QDragEnterEvent*); -+ virtual void dragMoveEvent(QDragMoveEvent*); -+ virtual void mousePressEvent ( QMouseEvent * ); -+ -+signals: -+ void tabClicked(QTab*); -+ -+private: -+ bool m_tabsActivated; -+}; -+ -+ -+#endif ---- kicker/ui/k_mnu_stub.cpp (Revision 0) -+++ kicker/ui/k_mnu_stub.cpp (Revision 849791) -@@ -0,0 +1,141 @@ -+/***************************************************************** -+ -+Copyright (c) 2006 Dirk Mueller <mueller@kde.org> -+ -+Permission is hereby granted, free of charge, to any person obtaining a copy -+of this software and associated documentation files (the "Software"), to deal -+in the Software without restriction, including without limitation the rights -+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+copies of the Software, and to permit persons to whom the Software is -+furnished to do so, subject to the following conditions: -+ -+The above copyright notice and this permission notice shall be included in -+all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+******************************************************************/ -+ -+#include "k_mnu_stub.h" -+#include "k_new_mnu.h" -+#include "k_mnu.h" -+ -+void KMenuStub::removeClientMenu(int id) -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->removeClientMenu(id); -+ return m_w.panelkmenu->removeClientMenu(id); -+} -+ -+int KMenuStub::insertClientMenu(KickerClientMenu *p) -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->insertClientMenu(p); -+ return m_w.panelkmenu->insertClientMenu(p); -+} -+ -+void KMenuStub::adjustSize() -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->adjustSize(); -+ return m_w.panelkmenu->adjustSize(); -+} -+ -+void KMenuStub::hide() -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->hide(); -+ return m_w.panelkmenu->hide(); -+} -+ -+void KMenuStub::show() -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->show(); -+ return m_w.panelkmenu->show(); -+} -+ -+void KMenuStub::showMenu() -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->showMenu(); -+ return m_w.panelkmenu->showMenu(); -+} -+ -+#if 0 -+void KMenuStub::resize() -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->resize(); -+ return m_w.panelkmenu->resize(); -+} -+#endif -+ -+void KMenuStub::popup(const QPoint &pos, int indexAtPoint) -+{ -+ return m_type == t_KMenu ? -+ m_w.kmenu->popup(pos, indexAtPoint) -+ : m_w.panelkmenu->popup(pos, indexAtPoint); -+} -+ -+void KMenuStub::selectFirstItem() -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->selectFirstItem(); -+ return m_w.panelkmenu->selectFirstItem(); -+} -+ -+void KMenuStub::resize(int w, int h) -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->resize(w, h); -+ return m_w.panelkmenu->resize(w, h); -+} -+ -+QSize KMenuStub::sizeHint() const -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->sizeHint(); -+ return m_w.panelkmenu->sizeHint(); -+} -+ -+bool KMenuStub::highlightMenuItem( const QString &menuId ) -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->highlightMenuItem(menuId); -+ return m_w.panelkmenu->highlightMenuItem(menuId); -+} -+ -+void KMenuStub::clearRecentMenuItems() -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->clearRecentAppsItems(); -+ return m_w.panelkmenu->clearRecentMenuItems(); -+} -+ -+void KMenuStub::initialize() -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->initialize(); -+ return m_w.panelkmenu->initialize(); -+} -+ -+bool KMenuStub::isVisible() const -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu->isVisible(); -+ return m_w.panelkmenu->isVisible(); -+} -+ -+QWidget* KMenuStub::widget() -+{ -+ if(m_type == t_KMenu) -+ return m_w.kmenu; -+ return m_w.panelkmenu; -+} -+ ---- kicker/ui/kmenubase.ui.h (Revision 0) -+++ kicker/ui/kmenubase.ui.h (Revision 849791) -@@ -0,0 +1,9 @@ -+#include <X11/Xlib.h> -+ -+void KMenuBase::init() -+{ -+ XSetWindowAttributes attrs; -+ attrs.override_redirect = True; -+ XChangeWindowAttributes( qt_xdisplay(), winId(), CWOverrideRedirect, &attrs ); -+ setWFlags( Qt::WType_Popup ); -+} ---- kicker/ui/mykickoffsearchinterface.h (Revision 0) -+++ kicker/ui/mykickoffsearchinterface.h (Revision 849791) -@@ -0,0 +1,47 @@ -+/*************************************************************************** -+ * Copyright (C) 2006 by Stephan Binner <binner@kde.org> * -+ * * -+ * This program is free software; you can redistribute it and/or modify * -+ * it under the terms of the GNU General Public License as published by * -+ * the Free Software Foundation; either version 2 of the License, or * -+ * (at your option) any later version. * -+ * * -+ * This program is distributed in the hope that it will be useful, * -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of * -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -+ * GNU General Public License for more details. * -+ * * -+ * You should have received a copy of the GNU General Public License * -+ * along with this program; if not, write to the * -+ * Free Software Foundation, Inc., * -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * -+ ***************************************************************************/ -+ -+#ifndef MYKICKOFFSEARCHINTERFACE_H -+#define MYKICKOFFSEARCHINTERFACE_H -+ -+#include "../interfaces/kickoffsearchinterface.h" -+ -+class KMenu; -+ -+using namespace KickoffSearch; -+ -+class MyKickoffSearchInterface :public KickoffSearchInterface -+{ -+ Q_OBJECT -+ -+public: -+ MyKickoffSearchInterface( KMenu*, QObject* parent, const char* name = 0 ); -+ -+ bool anotherHitMenuItemAllowed(int cat); -+ void addHitMenuItem(HitMenuItem* item); -+ void searchOver(); -+ void initCategoryTitlesUpdate(); -+ void updateCategoryTitles(); -+ -+private: -+ KMenu* _menu; -+ -+}; -+ -+#endif /* MYKICKOFFSEARCHINTERFACE_H */ ---- kicker/ui/itemview.h (Revision 0) -+++ kicker/ui/itemview.h (Revision 849791) -@@ -0,0 +1,260 @@ -+/***************************************************************** -+ -+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS. -+ -+Permission is hereby granted, free of charge, to any person obtaining a copy -+of this software and associated documentation files (the "Software"), to deal -+in the Software without restriction, including without limitation the rights -+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+copies of the Software, and to permit persons to whom the Software is -+furnished to do so, subject to the following conditions: -+ -+The above copyright notice and this permission notice shall be included in -+all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+******************************************************************/ -+ -+#ifndef __itemview_h__ -+#define __itemview_h__ -+ -+#include <dcopobject.h> -+#include <qintdict.h> -+#include <qpixmap.h> -+#include <qframe.h> -+#include <qtoolbutton.h> -+#include <klistview.h> -+#include <qdragobject.h> -+ -+#include "kmenubase.h" -+#include "kmenuitembase.h" -+#include "service_mnu.h" -+ -+class KickerClientMenu; -+class KBookmarkMenu; -+class KActionCollection; -+class KBookmarkOwner; -+class Panel; -+class QWidgetStack; -+class KHistoryCombo; -+class QScrollView; -+class PopupMenuTitle; -+class QWidget; -+class QVBoxLayout; -+class QTimer; -+class KPixmap; -+ -+class KMenuItem : public QListViewItem -+{ -+public: -+ KMenuItem(int nId, QListView* parent) : QListViewItem(parent), m_id(nId) { init(); } -+ KMenuItem(int nId, QListViewItem* parent) : QListViewItem(parent), m_id(nId) { init(); } -+ ~KMenuItem(); -+ -+ void setIcon(const QString& icon, int size); -+ QString icon() const { return m_icon; } -+ void setTitle( const QString& text ); -+ QString title() const { return m_title; } -+ void setToolTip( const QString& text ); -+ QString toolTip() const { return m_tooltip; } -+ void setDescription(const QString& text); -+ QString description() const { return m_description; } -+ void setService(KService::Ptr& s) { m_s = s; } -+ KService::Ptr service() { return m_s; } -+ void setPath(const QString& u) { m_path = u; } -+ QString path() const { return m_path; } -+ void setMenuPath(const QString& u) { m_menuPath = u; } -+ QString menuPath() const { return m_menuPath; } -+ int id() const { return m_id; } -+ void setHasChildren(bool flag); -+ bool hasChildren() const { return m_has_children; } -+ void makeGradient(KPixmap &off, const QColor& c); -+ -+protected: -+ virtual void paintCell(QPainter* p, const QColorGroup & cg, int column, int width, int align); -+ virtual void paintCellInter(QPainter* p, const QColorGroup & cg, int column, int width, int align); -+ virtual void setup(); -+ -+private: -+ void init(); -+ -+ int m_id; -+ KService::Ptr m_s; -+ QString m_title; -+ QString m_description; -+ QString m_path; -+ QString m_icon; -+ QString m_tooltip; -+ QString m_menuPath; -+ float title_font_size; -+ float description_font_size; -+ bool m_has_children; -+ int m_old_width; -+ QPixmap right_triangle; -+}; -+ -+class KMenuItemSeparator : public KMenuItem -+{ -+public: -+ KMenuItemSeparator(int nId, QListView* parent); -+ virtual void setup(); -+ -+ virtual void paintCell(QPainter* p, const QColorGroup & cg, int column, int width, int align); -+ void setLink(const QString &text, const QString &link = QString::null ); -+ -+ QString linkUrl() const { return m_link_url; } -+ -+ /// returns true if the cursor has to change -+ bool hitsLink(const QPoint &pos); -+ -+protected: -+ void preparePixmap(int width); -+ QPixmap pixmap; -+ int left_margin; -+ -+private: -+ QListView* lv; -+ int cached_width; -+ QString m_link_text, m_link_url; -+ QRect m_link_rect; -+ -+}; -+ -+class KMenuItemHeader : public KMenuItemSeparator -+{ -+public: -+ KMenuItemHeader( int nId, const QString &relpath, QListView* parent); -+ virtual void setup(); -+ -+ virtual void paintCell(QPainter* p, const QColorGroup & cg, int column, int width, int align); -+ -+private: -+ QListView* lv; -+ QStringList paths; -+ QStringList texts; -+ QStringList icons; -+ QPixmap left_triangle; -+}; -+ -+class KMenuSpacer : public KMenuItem -+{ -+public: -+ KMenuSpacer(int nId, QListView* parent); -+ virtual void paintCell(QPainter* p, const QColorGroup & cg, int column, int width, int align); -+ virtual void setup(); -+ -+ void setHeight(int); -+}; -+ -+class ItemView : public KListView -+{ -+ friend class KMenuItem; -+ -+ Q_OBJECT -+public: -+ ItemView(QWidget* parent, const char* name = 0); -+ -+ KMenuItem* insertItem( const QString& icon, const QString& text, const QString& description, int nId, int nIndex, KMenuItem* parentItem = 0 ); -+ KMenuItem* insertItem( const QString& icon, const QString& text, const QString& description, const QString& path, int nId, int nIndex, KMenuItem* parentItem = 0 ); -+ int insertItem( PopupMenuTitle*, int, int); -+ int setItemEnabled(int id, bool enabled); -+ KMenuItemSeparator *insertSeparator(int id, const QString& text, int nIndex); -+ KMenuItemHeader *insertHeader(int id, const QString &relpath); -+ KMenuItem* insertMenuItem(KService::Ptr & s, int nId, int nIndex = -1, KMenuItem* parentItem = 0, -+ const QString &aliasname = QString::null, const QString &label = QString::null, -+ const QString &categoryIcon = QString::null); -+ KMenuItem* insertRecentlyItem(const QString& s, int nId, int nIndex = -1); -+ KMenuItem* insertDocumentItem(const QString& s, int nId, int nIndex = -1 , const QStringList* suppressGenericNames = 0, -+ const QString& aliasname = QString::null); -+ KMenuItem* insertSubItem(const QString& icon, const QString& caption, const QString& description, const QString& path, KMenuItem* parentItem); -+ KMenuItem* findItem(int nId); -+ -+ void setIconSize(int size) { m_iconSize = size; } -+ void setMouseMoveSelects(bool select) { m_mouseMoveSelects = select; } -+ void clear(); -+ int goodHeight(); -+ QString path; -+ void setBackPath( const QString &str ) { m_back_url = str; } -+ QString backPath() const { return m_back_url; } -+ -+public slots: -+ void slotItemClicked(QListViewItem*); -+ void slotMoveContent(); -+ -+signals: -+ void startService(KService::Ptr kservice); -+ void startURL(const QString& u); -+ -+protected: -+ void contentsMouseMoveEvent(QMouseEvent *e); -+ void contentsMousePressEvent ( QMouseEvent * e ); -+ void contentsWheelEvent(QWheelEvent *e); -+ void leaveEvent(QEvent *e); -+ virtual void resizeEvent ( QResizeEvent * e ); -+ virtual void viewportPaintEvent ( QPaintEvent * pe ); -+ virtual QDragObject* dragObject (); -+ virtual bool acceptDrag (QDropEvent* event) const; -+ virtual bool focusNextPrevChild(bool next); -+ -+private slots: -+ void slotItemClicked(int button, QListViewItem * item, const QPoint & pos, int c ); -+ -+private: -+ KMenuItem* itemAtIndex(int nIndex); -+ void moveItemToIndex(KMenuItem*, int); -+ -+ QWidget* m_itemBox; -+ QVBoxLayout* m_itemLayout; -+ KMenuItem *m_lastOne; -+ KMenuSpacer *m_spacer; -+ -+ QString m_back_url; -+ -+ bool m_mouseMoveSelects; -+ int m_iconSize; -+ int m_old_contentY; -+}; -+ -+class FavoritesItemView : public ItemView -+{ -+public: -+ FavoritesItemView(QWidget* parent, const char* name = 0); -+ -+protected: -+ virtual bool acceptDrag (QDropEvent* event) const; -+}; -+ -+class KMenuItemInfo -+{ -+public: -+ int m_id; -+ KService::Ptr m_s; -+ QString m_title; -+ QString m_description; -+ QString m_path; -+ QString m_icon; -+}; -+ -+class KMenuItemDrag : public QDragObject -+{ -+ public: -+ KMenuItemDrag(KMenuItem& item, QWidget *dragSource); -+ ~KMenuItemDrag(); -+ -+ virtual const char * format(int i = 0) const; -+ virtual QByteArray encodedData(const char *) const; -+ -+ static bool canDecode(const QMimeSource * e); -+ static bool decode(const QMimeSource* e, KMenuItemInfo& item); -+ -+ private: -+ QByteArray a; -+}; -+ -+#endif ---- kicker/ui/default-favs (Revision 0) -+++ kicker/ui/default-favs (Revision 849791) -@@ -0,0 +1,9 @@ -+MozillaFirefox.desktop -+kde-Kontact.desktop -+writer.desktop -+kde-amarok.desktop -+kde-digikam.desktop -+kde-Home.desktop -+kde-KControl.desktop -+kde-Help.desktop -+kde-konsole.desktop ---- kicker/ui/query.h (Revision 0) -+++ kicker/ui/query.h (Revision 849791) -@@ -0,0 +1,55 @@ -+/***************************************************************** -+ -+ Copyright (c) 2006 Stephan Binner <binner@kde.org> -+ -+ This program is free software; you can redistribute it and/or -+ modify it under the terms of the GNU General Public -+ License as published by the Free Software Foundation; either -+ version 2 of the License, or (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; see the file COPYING. If not, write to -+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -+ Boston, MA 02110-1301, USA. -+ -+******************************************************************/ -+ -+#ifndef QUERY_H -+#define QUERY_H -+ -+#include <qstringlist.h> -+#include <qptrlist.h> -+ -+class Alternative -+{ -+public: -+ QStringList includes; -+ QStringList excludes; -+}; -+ -+class Query -+{ -+ public: -+ Query(); -+ void clear(); -+ void set(const QString &); -+ QString get() const; -+ bool matches(const QString &); -+ -+ private: -+ QString query_term; -+ QPtrList<Alternative> alternatives; -+ -+ void add_term(); -+ QString current_part; -+ Alternative *current_alternative; -+ bool within_quotes; -+ bool exclude_part; -+}; -+ -+#endif ---- kicker/ui/k_mnu_stub.h (Revision 0) -+++ kicker/ui/k_mnu_stub.h (Revision 849791) -@@ -0,0 +1,72 @@ -+/***************************************************************** -+ -+Copyright (c) 2006 Dirk Mueller <mueller@kde.org> -+ -+Permission is hereby granted, free of charge, to any person obtaining a copy -+of this software and associated documentation files (the "Software"), to deal -+in the Software without restriction, including without limitation the rights -+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+copies of the Software, and to permit persons to whom the Software is -+furnished to do so, subject to the following conditions: -+ -+The above copyright notice and this permission notice shall be included in -+all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+******************************************************************/ -+ -+#ifndef __k_mnu_stub_h__ -+#define __k_mnu_stub_h__ -+ -+#include <qstring.h> -+#include <qpoint.h> -+ -+class KickerClientMenu; -+class KMenu; -+class PanelKMenu; -+ -+ -+ -+ -+class KMenuStub -+{ -+public: -+ KMenuStub(KMenu* _kmenu) -+ : m_type(t_KMenu) { m_w.kmenu = _kmenu; } -+ KMenuStub(PanelKMenu* _panelkmenu) -+ : m_type(t_PanelKMenu) { m_w.panelkmenu = _panelkmenu; } -+ ~KMenuStub() {} -+ -+ void removeClientMenu(int id); -+ int insertClientMenu(KickerClientMenu *p); -+ void adjustSize(); -+ void hide(); -+ void show(); -+ void showMenu(); -+ void resize(); -+ void popup(const QPoint &pos, int indexAtPoint = -1); -+ void selectFirstItem(); -+ void resize(int, int); -+ QSize sizeHint() const; -+ bool highlightMenuItem( const QString &menuId ); -+ void clearRecentMenuItems(); -+ void initialize(); -+ -+ QWidget* widget(); -+ -+ bool isVisible() const; -+private: -+ enum {t_PanelKMenu, t_KMenu} m_type; -+ union { -+ KMenu* kmenu; -+ PanelKMenu* panelkmenu; -+ } m_w; -+}; -+ -+#endif ---- kicker/ui/Makefile.am (Revision 849788) -+++ kicker/ui/Makefile.am (Revision 849791) -@@ -1,38 +1,46 @@ - INCLUDES = -I$(srcdir)/../core -I../core -I$(srcdir)/../buttons \ - -I../../libkicker -I$(srcdir)/../../libkicker \ -- -I$(top_srcdir)/libkonq -I$(top_srcdir)/kdmlib $(all_includes) -+ -I$(top_srcdir)/libkonq -I$(top_srcdir)/kdmlib $(DBUS_INCS) $(all_includes) - - noinst_LTLIBRARIES = libkicker_ui.la - -+libkicker_ui_la_COMPILE_FIRST = kmenubase.h -+ - libkicker_ui_la_SOURCES = addbutton_mnu.cpp appletitem.ui appletview.ui addapplet.cpp \ - addapplet_mnu.cpp appletop_mnu.cpp \ - browser_mnu.cpp client_mnu.cpp dirdrop_mnu.cpp \ -- nonKDEButtonSettings.ui exe_dlg.cpp k_mnu.cpp k_mnu.skel\ -- quickbrowser_mnu.cpp service_mnu.cpp \ -- addextension_mnu.cpp extensionop_mnu.cpp \ -- recentapps.cpp browser_dlg.cpp \ -+ nonKDEButtonSettings.ui exe_dlg.cpp k_new_mnu.cpp k_mnu.cpp k_mnu.skel\ -+ quickbrowser_mnu.cpp service_mnu.cpp kmenubase.ui kmenuitembase.ui \ -+ addextension_mnu.cpp extensionop_mnu.cpp k_mnu_stub.cpp \ -+ recentapps.cpp browser_dlg.cpp itemview.cpp kickoff_bar.cpp \ - removeapplet_mnu.cpp removeextension_mnu.cpp removecontainer_mnu.cpp \ - removebutton_mnu.cpp popupmenutitle.cpp hidebutton.cpp \ -- addappletvisualfeedback.cpp -+ addappletvisualfeedback.cpp flipscrollview.cpp \ -+ media_watcher.cpp media_watcher.skel mykickoffsearchinterface.cpp query.cpp - --libkicker_ui_la_LIBADD = $(top_builddir)/libkonq/libkonq.la $(top_builddir)/kdmlib/libdmctl.la -+libkicker_ui_la_LIBADD = $(top_builddir)/libkonq/libkonq.la $(top_builddir)/kdmlib/libdmctl.la \ -+ $(LIB_KABC) ../interfaces/libkickoffsearch_interfaces.la -llazy - - libkicker_ui_la_METASOURCES = AUTO - - noinst_HEADERS = addapplet.h appletwidget.h addbutton_mnu.h addapplet_mnu.h appletop_mnu.h \ -- browser_mnu.h client_mnu.h dirdrop_mnu.h exe_dlg.h k_mnu.h \ -+ browser_mnu.h client_mnu.h dirdrop_mnu.h exe_dlg.h k_new_mnu.h k_mnu.h \ - quickbrowser_mnu.h service_mnu.h \ - addextension_mnu.h extensionop_mnu.h \ -- recentapps.h browser_dlg.h \ -+ recentapps.h browser_dlg.h itemview.h query.h \ - removeapplet_mnu.h removeextension_mnu.h removecontainer_mnu.h \ - removebutton_mnu.h popupmenutitle.h hidebutton.h addappletvisualfeedback.h - -+kicker_ui_data_DATA = default-favs -+kicker_ui_datadir = $(kde_datadir)/kicker -+ - removecontainer_mnu.lo: ../../libkicker/kickerSettings.h - removeextension_mnu.lo: ../../libkicker/kickerSettings.h - addextension_mnu.lo: ../core/extensionSettings.h - appletop_mnu.lo: ../../libkicker/kickerSettings.h - extensionop_mnu.lo: ../../libkicker/kickerSettings.h - k_mnu.lo: ../../libkicker/kickerSettings.h -+k_new_mnu.lo: ../../libkicker/kickerSettings.h - removecontainer_mnu.lo: ../core/extensionSettings.h - removeextension_mnu.lo: ../core/extensionSettings.h - service_mnu.lo: ../../libkicker/kickerSettings.h ---- kicker/ui/mykickoffsearchinterface.cpp (Revision 0) -+++ kicker/ui/mykickoffsearchinterface.cpp (Revision 849791) -@@ -0,0 +1,54 @@ -+/*************************************************************************** -+ * Copyright (C) 2006 by Stephan Binner <binner@kde.org> * -+ * * -+ * This program is free software; you can redistribute it and/or modify * -+ * it under the terms of the GNU General Public License as published by * -+ * the Free Software Foundation; either version 2 of the License, or * -+ * (at your option) any later version. * -+ * * -+ * This program is distributed in the hope that it will be useful, * -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of * -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -+ * GNU General Public License for more details. * -+ * * -+ * You should have received a copy of the GNU General Public License * -+ * along with this program; if not, write to the * -+ * Free Software Foundation, Inc., * -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * -+ ***************************************************************************/ -+ -+#include "mykickoffsearchinterface.h" -+#include "../ui/k_new_mnu.h" -+ -+MyKickoffSearchInterface::MyKickoffSearchInterface( KMenu* menu, QObject* parent, const char* name ) -+ : KickoffSearchInterface( parent, name ), _menu( menu ) -+{ -+} -+ -+bool MyKickoffSearchInterface::anotherHitMenuItemAllowed(int cat) -+{ -+ return _menu->anotherHitMenuItemAllowed(cat); -+} -+ -+void MyKickoffSearchInterface::addHitMenuItem(HitMenuItem* item) -+{ -+ _menu->addHitMenuItem(item); -+} -+ -+ -+void MyKickoffSearchInterface::searchOver() -+{ -+ _menu->searchOver(); -+} -+ -+void MyKickoffSearchInterface::initCategoryTitlesUpdate() -+{ -+ _menu->initCategoryTitlesUpdate(); -+} -+ -+void MyKickoffSearchInterface::updateCategoryTitles() -+{ -+ _menu->updateCategoryTitles(); -+} -+ -+#include "mykickoffsearchinterface.moc" ---- kicker/ui/itemview.cpp (Revision 0) -+++ kicker/ui/itemview.cpp (Revision 849791) -@@ -0,0 +1,1257 @@ -+/***************************************************************** -+ -+Copyright (c) 1996-2000 the kicker authors. See file AUTHORS. -+ -+Permission is hereby granted, free of charge, to any person obtaining a copy -+of this software and associated documentation files (the "Software"), to deal -+in the Software without restriction, including without limitation the rights -+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+copies of the Software, and to permit persons to whom the Software is -+furnished to do so, subject to the following conditions: -+ -+The above copyright notice and this permission notice shall be included in -+all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+******************************************************************/ -+ -+#include <stdlib.h> -+#include <sys/types.h> -+#include <unistd.h> -+#include <dmctl.h> -+ -+#include <qapplication.h> -+#include <qimage.h> -+#include <qpainter.h> -+#include <qstyle.h> -+#include <qwidgetstack.h> -+#include <qlayout.h> -+#include <qlabel.h> -+#include <qvbox.h> -+#include <qheader.h> -+#include <qdrawutil.h> -+#include <qdragobject.h> -+#include <qcursor.h> -+#include <qpaintdevicemetrics.h> -+#include <qbuffer.h> -+#include <qtooltip.h> -+#include <qstylesheet.h> -+#include <qiconview.h> -+ -+#include <dcopclient.h> -+#include <kapplication.h> -+#include <kaboutkde.h> -+#include <kpixmapeffect.h> -+#include <kaction.h> -+#include <kbookmarkmenu.h> -+#include <kconfig.h> -+#include <kdebug.h> -+#include <kglobal.h> -+#include <kglobalsettings.h> -+#include <kiconloader.h> -+#include <klocale.h> -+#include <kmessagebox.h> -+#include <kstandarddirs.h> -+#include <kcombobox.h> -+#include <kwin.h> -+#include <kdebug.h> -+#include <kmimetype.h> -+#include <kmultipledrag.h> -+ -+#include "client_mnu.h" -+#include "container_base.h" -+#include "global.h" -+#include "kbutton.h" -+#include "kicker.h" -+#include "kickerSettings.h" -+#include "konqbookmarkmanager.h" -+#include "menuinfo.h" -+#include "menumanager.h" -+#include "popupmenutitle.h" -+#include "quickbrowser_mnu.h" -+#include "recentapps.h" -+ -+#include "k_mnu.h" -+#include "k_new_mnu.h" -+#include "itemview.h" -+ -+// -------------------------------------------------------------------------- -+ -+KMenuItem::~KMenuItem() -+{ -+ ItemView *listview = dynamic_cast<ItemView*>( listView() ); -+ if ( listview && listview->m_lastOne == this) { -+ listview->m_lastOne = 0; -+ listview->m_old_contentY = -1; -+ } -+} -+ -+static double pointSize( double pixelSize, QPaintDevice *w ) -+{ -+ return pixelSize * 72. / QPaintDevice::x11AppDpiY( w->x11Screen () ); -+} -+ -+static int pixelSize( double pixelSize, QPaintDevice *w ) -+{ -+ return qRound( pixelSize * QPaintDevice::x11AppDpiY( w->x11Screen () ) / 72. ); -+} -+ -+void KMenuItem::init() -+{ -+ setMultiLinesEnabled(true); -+ m_s = 0; -+ m_path = QString::null; -+ m_icon = QString::null; -+ m_menuPath = QString::null; -+ setDragEnabled(true); -+ m_has_children = false; -+ m_old_width = -1; -+ if ( QApplication::reverseLayout() ) -+ right_triangle.load( locate( "data", "kicker/pics/left_triangle.png" ) ); -+ else -+ right_triangle.load( locate( "data", "kicker/pics/right_triangle.png" ) ); -+} -+ -+void KMenuItem::setTitle(const QString& txt) -+{ -+ m_title = txt; -+ setText( 0, txt ); -+ setup(); -+} -+ -+void KMenuItem::setToolTip(const QString& txt) -+{ -+ m_tooltip = txt; -+} -+ -+void KMenuItem::setDescription(const QString& txt) -+{ -+ m_description = txt; -+ setup(); -+} -+ -+void KMenuItem::setIcon(const QString& icon, int size) -+{ -+ m_icon = icon; -+ QListViewItem::setPixmap(0, KGlobal::iconLoader()->loadIcon(icon, KIcon::Panel, size )); -+} -+ -+void KMenuItem::setHasChildren( bool flag ) -+{ -+ m_has_children = flag; -+ repaint(); -+} -+ -+void KMenuItem::setup() -+{ -+ // if someone configured a larger generalFont than 10pt, he might have a _real_ problem with 7pt -+ // the 7pt could be read out of konquerorrc I guess -+ float min_font_size = 7. * QMAX(1., KGlobalSettings::generalFont().pointSizeFloat() / 10.); -+ -+ const int expected_height = 38; -+ description_font_size = QMAX( pointSize( expected_height * .3, listView() ) + KickerSettings::kickoffFontPointSizeOffset(), min_font_size ) ; -+ title_font_size = QMAX( pointSize( expected_height * .25, listView() ) + KickerSettings::kickoffFontPointSizeOffset(), min_font_size + 1 ); -+ -+ //kdDebug() << description_font_size << " " << title_font_size << " " << pointSize( expected_height * .25, listView() ) << endl; -+ QListViewItem::setup(); -+ setHeight( (int)QMAX( expected_height, pixelSize( title_font_size + description_font_size * 2.3, listView()))); -+} -+ -+void KMenuItem::paintCell(QPainter* p, const QColorGroup & cg, int column, int width, int align) -+{ -+ ItemView *listview = static_cast<ItemView*>( listView() ); -+ int bottom = listView()->itemRect( this ).bottom(); -+ int diff = bottom - listView()->viewport()->height(); -+ -+ KPixmap pm; -+ pm.resize( width, height() ); -+ QPainter pp( &pm ); -+ paintCellInter( &pp, cg, column, width, align ); -+ pp.end(); -+ -+ if ( diff > 0 && diff <= height() ) // cut off -+ { -+ pm.resize( width, height() - diff ); -+ KPixmapEffect::blend( pm, float( diff ) / height(), -+ cg.color( QColorGroup::Background ), -+ KPixmapEffect::VerticalGradient ); -+ p->drawPixmap( 0, 0, pm ); -+ if ( listview->m_lastOne != this ) -+ { -+ listview->m_lastOne = this; -+ listview->m_old_contentY = -1; -+ } -+ } -+ else -+ { -+ p->drawPixmap( 0, 0, pm ); -+ if ( this == listview->m_lastOne ) { -+ if ( bottom < 0 ) -+ listview->m_lastOne = static_cast<KMenuItem*>( itemAbove() ); -+ else -+ listview->m_lastOne = static_cast<KMenuItem*>( itemBelow() ); -+ listview->m_old_contentY = -1; -+ repaint(); -+ } -+ } -+} -+ -+void KMenuItem::makeGradient( KPixmap &off, const QColor &c ) -+{ -+ KPixmap blend; -+ blend.resize( off.width() / 3, off.height() ); -+ bitBlt( &blend, 0, 0, &off, off.width() - blend.width(), 0, blend.width(), blend.height() ); -+ KPixmapEffect::blend( blend, 0.2, c, KPixmapEffect::HorizontalGradient ); -+ QPainter p( &off ); -+ p.drawPixmap( off.width() - blend.width(), 0, blend ); -+ p.end(); -+} -+ -+void KMenuItem::paintCellInter(QPainter* p, const QColorGroup & cg, int column, int width, int align) -+{ -+ const bool reverseLayout = QApplication::reverseLayout(); -+ -+ const BackgroundMode bgmode = listView()->viewport()->backgroundMode(); -+ const QColorGroup::ColorRole crole = QPalette::backgroundRoleFromMode( bgmode ); -+ QColor backg = cg.color( crole ); -+ -+ if ( isSelected() ) -+ backg = cg.color( QColorGroup::Highlight ); -+ p->fillRect( 0, 0, width, height(), backg ); -+ -+ QFontMetrics fm( p->fontMetrics() ); -+ -+ int pixsize = 32; -+ if ( height() < 36 ) -+ pixsize = 16; -+ const int left_margin = 30; -+ const int margin = 3; -+ -+// p->drawText( 2, 2, left_margin - 2, height(), align, QString::number( childCount () ) ); -+ -+ const QPixmap * pix = pixmap( column ); -+ -+ if ( pix ) -+ { -+ QPixmap pix32 = *pix; -+ -+ if ( pix->width() > pixsize ) -+ { -+ QImage i = pix->convertToImage().smoothScale( pixsize, pixsize ); -+ pix32.convertFromImage( i ); -+ } -+ if ( reverseLayout ) -+ p->drawPixmap( width - ( (pixsize - pix32.width()) / 2 + left_margin ) - pix32.width(), -+ ( height() - pix32.height() ) / 2, pix32 ); -+ else -+ p->drawPixmap( (pixsize - pix32.width()) / 2 + left_margin, -+ ( height() - pix32.height() ) / 2, pix32 ); -+ } -+ -+ if ( m_title.isEmpty() ) -+ return; -+ -+ int r = left_margin + pixsize + margin * 2; -+ -+ QFont f1 = p->font(); -+ f1.setPointSizeFloat( title_font_size ); -+ f1.setWeight( QFont::Normal ); // QFont::DemiBold == 63 -+ -+ QFont f2 = p->font(); -+ f2.setPointSizeFloat( description_font_size ); -+ f2.setWeight( QFont::Light ); -+ -+ int f1h = QFontMetrics( f1 ).height(); -+ int f2h = QFontMetrics( f2 ).height(); -+ -+ const int text_margin = 2; -+ int spacing = ( height() - f1h - f2h - text_margin ) / 2; -+ if ( m_description.isEmpty() ) -+ spacing = ( height() - f1h ) / 2; -+ -+ int right_triangle_size = pixelSize( 7, listView() ); -+ -+ int right_margin = listView()->verticalScrollBar()->width(); -+ if ( m_has_children ) -+ right_margin += right_triangle_size * 2; -+ -+ KPixmap off; -+ QPainter pp; -+ -+ off.resize( width-text_margin-r-right_margin, height() ); -+ pp.begin( &off ); -+ pp.fillRect( 0, 0, off.width(), off.height(), backg ); -+ -+ if (isSelected()) -+ pp.setPen( cg.color( QColorGroup::HighlightedText ) ); -+ else -+ pp.setPen( cg.color( QColorGroup::Text ) ); -+ -+ pp.setFont( f1 ); -+ pp.drawText( 0, 0, off.width(), off.height(), align, m_title ); -+ pp.end(); -+ if ( QFontMetrics( f1 ).width( m_title ) > off.width() ) -+ { -+ makeGradient( off, backg ); -+ if ( !m_description.isEmpty() ) -+ setToolTip( m_title + "<br><br>" + m_description ); -+ else -+ setToolTip( m_title ); -+ } -+ if ( reverseLayout ) -+ p->drawPixmap( width - off.width() - r, spacing, off ); -+ else -+ p->drawPixmap( r, spacing, off ); -+ -+ if ( !m_description.isEmpty() ) -+ { -+ pp.begin( &off ); -+ pp.fillRect( 0, 0, off.width(), off.height(), backg ); -+ -+ QColor myColor = cg.color( QColorGroup::Text ).light( 200 ); -+ if ( qGray( myColor.rgb() ) == 0 ) -+ myColor = QColor( 100, 100, 110 ); -+ pp.setPen( myColor ); -+ pp.setPen( isSelected() ? cg.color( QColorGroup::Mid ) : myColor ); -+ pp.setFont( f2 ); -+ pp.drawText( 0, 0, off.width(), off.height(), align, m_description ); -+ pp.end(); -+ if ( QFontMetrics( f2 ).width( m_description ) > off.width() ) -+ { -+ makeGradient( off, backg ); -+ setToolTip( m_title + "<br><br>" + m_description ); -+ } -+ if ( reverseLayout ) -+ p->drawPixmap( width - off.width() - r, spacing + text_margin + f1h, off ); -+ else -+ p->drawPixmap( r, spacing + text_margin + f1h, off ); -+ } -+ -+ if ( m_has_children ) -+ { -+ QImage i = right_triangle.convertToImage().smoothScale( right_triangle_size, -+ right_triangle_size ); -+ QPixmap tri; -+ tri.convertFromImage( i ); -+ -+ if ( reverseLayout ) -+ p->drawPixmap( right_margin - tri.width(), ( height() - f1h ) / 2, tri ); -+ else -+ p->drawPixmap( listView()->width() - right_margin, ( height() - f1h ) / 2, tri ); -+ } -+ -+ if ( m_old_width != width ) -+ { -+ // the listview caches paint events -+ m_old_width = width; -+ repaint(); -+ } -+} -+ -+// -------------------------------------------------------------------------- -+ -+KMenuItemSeparator::KMenuItemSeparator(int nId, QListView* parent) -+ : KMenuItem(nId, parent), lv(parent), cached_width( 0 ) -+{ -+ setEnabled(false); -+ left_margin = 15; -+} -+ -+void KMenuItemSeparator::setup() -+{ -+ KMenuItem::setup(); -+ -+ QFont f = QFont(); -+ QFontMetrics fm(f); -+ f.setPointSize( 8 + KickerSettings::kickoffFontPointSizeOffset() ); -+ if ( itemAbove() && !text( 0 ).isEmpty() ) -+ setHeight( (int)QMAX( 34., fm.height() * 1.4) ); -+ else -+ setHeight( (int)QMAX( 26., fm.height() * 1.4 ) ); -+} -+ -+void KMenuItemSeparator::setLink( const QString &text, const QString &url ) -+{ -+ m_link_text = text; -+ m_link_url = url; -+ m_link_rect = QRect(); -+} -+ -+bool KMenuItemSeparator::hitsLink( const QPoint &pos ) -+{ -+ return m_link_rect.contains( pos ); -+} -+ -+void KMenuItemSeparator::preparePixmap( int width ) -+{ -+ if ( cached_width != width ) -+ { -+ pixmap.load( locate("data", "kicker/pics/menu_separator.png" ) ); -+ QImage i = pixmap.convertToImage().smoothScale( width - 15 - left_margin, pixmap.height() ); -+ pixmap.convertFromImage( i ); -+ cached_width = width; -+ } -+} -+ -+void KMenuItemSeparator::paintCell(QPainter* p, const QColorGroup & cg, int column, int width, int align) -+{ -+ preparePixmap(width); -+ -+ const int h = height(); -+ -+ if (text(0).isEmpty()) { -+ KMenuItem::paintCell(p, cg, column, width, align); -+ p->drawPixmap( 15 , h/2, pixmap ); -+ } -+ else { -+ const BackgroundMode bgmode = lv->viewport()->backgroundMode(); -+ const QColorGroup::ColorRole crole = QPalette::backgroundRoleFromMode( bgmode ); -+ p->fillRect( 0, 0, width, h, cg.brush( crole ) ); -+ -+ int margin = 0; -+ if ( itemAbove() ) { -+ p->drawPixmap( 15 , h/4, pixmap ); -+ margin = h / 4; -+ } -+ QFont f = listView()->font(); -+ f.setWeight( QFont::Normal ); -+ f.setPointSize( 8 + KickerSettings::kickoffFontPointSizeOffset() ); -+ p->setFont( f ); -+ QColor myColor = cg.color( QColorGroup::Text ).light( 200 ); -+ if ( qGray( myColor.rgb() ) == 0 ) -+ myColor = QColor( 100, 100, 110 ); -+ p->setPen( myColor ); -+ int twidth = p->fontMetrics().width(text(0)); -+ int lwidth = 0; -+ int swidth = 0; -+ int fwidth = 0; -+ -+ if ( !m_link_text.isEmpty() ) -+ { -+ swidth = p->fontMetrics().width( " (" ); -+ lwidth = p->fontMetrics().width(m_link_text ); -+ fwidth = p->fontMetrics().width( ")" ); -+ } -+ int pos = int(lv->width() * 0.9 - twidth - swidth - lwidth - fwidth); -+ p->drawText( pos, margin + 5, -+ width, h - ( margin +5 ), AlignTop, text(0) ); -+ if ( !m_link_text.isEmpty() ) -+ { -+ pos += twidth; -+ p->drawText( pos, margin + 5, -+ width, h - ( margin +5 ), AlignTop, " (" ); -+ pos += swidth; -+ p->setPen( cg.color( QColorGroup::Link ) ); -+ f.setUnderline( true ); -+ p->setFont( f ); -+ p->drawText( pos, margin + 5, -+ width, h - ( margin +5 ), AlignTop, m_link_text ); -+ m_link_rect = QRect( pos, margin + 5, lwidth, p->fontMetrics().height() ); -+ pos += lwidth; -+ f.setUnderline( false ); -+ p->setFont( f ); -+ p->drawText( pos, margin + 5, -+ width, h - ( margin +5 ), AlignTop, ")" ); -+ } -+ } -+} -+ -+KMenuItemHeader::KMenuItemHeader(int nId, const QString& relPath, QListView* parent) -+ : KMenuItemSeparator(nId, parent) -+{ -+ setEnabled( false ); -+ QString path; -+ if (relPath.startsWith( "new/" /*"kicker:/new/"*/ )) { -+ paths.append( "kicker:/goup/" ); -+ texts.append( i18n("New Applications") ); -+ icons.append( "clock" ); -+ } -+ else if (relPath == "kicker:/restart/") { -+ texts.append( i18n("Restart Computer") ); -+ } -+ else if (relPath == "kicker:/switchuser/") { -+ texts.append( i18n("Switch User") ); -+ } -+ else { -+ KServiceGroup::Ptr subMenuRoot = KServiceGroup::group(relPath); -+ QStringList items = QStringList::split( '/', relPath ); -+ for ( QStringList::ConstIterator it = items.begin(); it != items.end(); ++it ) -+ { -+ path += *it + "/"; -+ paths.append( "kicker:/goup/" + path ); -+ KServiceGroup::Ptr subMenuRoot = KServiceGroup::group(path); -+ QString groupCaption = subMenuRoot->caption(); -+ texts.append( groupCaption ); -+ icons.append( subMenuRoot->icon() ); -+ } -+ } -+ -+ setPath( "kicker:/goup/" + path ); // the last wins for now -+ left_margin = 10; -+} -+ -+void KMenuItemHeader::setup() -+{ -+ KMenuItem::setup(); -+ -+ QFontMetrics fm( listView()->font() ); -+ setHeight( QMAX( int( texts.count() * fm.height() + ( texts.count() + 1 ) * 2 + 10 ), height()) ); -+ // nada -+} -+ -+void KMenuItemHeader::paintCell(QPainter* p, const QColorGroup & cg, int , int width, int align ) -+{ -+ preparePixmap(width); -+ -+ const BackgroundMode bgmode = listView()->viewport()->backgroundMode(); -+ const QColorGroup::ColorRole crole = QPalette::backgroundRoleFromMode( bgmode ); -+ -+ QBrush br = cg.brush( crole ); -+ if ( isSelected() ) { -+ br = cg.brush( QColorGroup::Highlight ); -+ p->fillRect( 0, 0, width, height() - 3, br ); -+ } else { -+ p->fillRect( 0, 0, width, height(), br ); -+ } -+ -+ QFontMetrics fm( p->fontMetrics() ); -+ const int left_margin = 10; -+ -+ const int margin = 3; -+ -+ int r = left_margin + margin * 2; -+ -+ const int min_font_size = 7; -+ int title_font_pixelSize = qRound( pixelSize( QMAX( pointSize( 12, listView() ) + KickerSettings::kickoffFontPointSizeOffset(), min_font_size + 1 ), listView() ) ); -+ -+ QFont f1 = p->font(); -+ f1.setPixelSize( title_font_pixelSize ); -+ p->setFont( f1 ); -+ int f1h = QFontMetrics( f1 ).height(); -+ -+ p->setPen( cg.color( QColorGroup::Text ) ); -+ -+ const int text_margin = 2; -+ int spacing = ( height() - texts.count() * f1h - QMAX( texts.count() - 1, 0 ) * text_margin ) / 2; -+ -+ for ( uint i = 0; i < texts.count(); ++i ) -+ { -+ if (i==texts.count()-1) { -+ f1.setWeight( QFont::DemiBold ); -+ p->setFont( f1 ); -+ f1h = QFontMetrics( f1 ).height(); -+ } -+ -+ p->drawText( r, spacing, width-text_margin-r, height(), align, texts[i] ); -+ spacing += text_margin + f1h; -+ r += title_font_pixelSize; -+ } -+ -+ p->drawPixmap( left_margin , height() - 2, pixmap ); -+} -+ -+KMenuSpacer::KMenuSpacer(int nId, QListView* parent) -+ : KMenuItem(nId, parent) -+{ -+ setEnabled(false); -+} -+ -+void KMenuSpacer::setup() -+{ -+ // nada -+} -+ -+void KMenuSpacer::paintCell(QPainter* p, const QColorGroup & cg, int , int width, int ) -+{ -+ const BackgroundMode bgmode = listView()->viewport()->backgroundMode(); -+ const QColorGroup::ColorRole crole = QPalette::backgroundRoleFromMode( bgmode ); -+ QBrush br = cg.brush( crole ); -+ -+ p->fillRect( 0, 0, width, height(), br ); -+} -+ -+void KMenuSpacer::setHeight( int i ) -+{ -+ KMenuItem::setHeight( i ); -+} -+ -+class ItemViewTip : public QToolTip -+{ -+public: -+ ItemViewTip( QWidget *parent, QListView *lv ); -+ -+ void maybeTip( const QPoint &pos ); -+ -+private: -+ QListView *view; -+ -+}; -+ -+ItemViewTip::ItemViewTip( QWidget *parent, QListView *lv ) -+ : QToolTip( parent ), view( lv ) -+{ -+} -+ -+void ItemViewTip::maybeTip( const QPoint &pos ) -+{ -+ KMenuItem *item = dynamic_cast<KMenuItem*>( view->itemAt( pos ) ); -+ QPoint contentsPos = view->viewportToContents( pos ); -+ if ( !item ) -+ return; -+ -+ if ( item->toolTip().isNull() ) -+ return; -+ -+ QRect r = view->itemRect( item ); -+ int headerPos = view->header()->sectionPos( 0 ); -+ r.setLeft( headerPos ); -+ r.setRight( headerPos + view->header()->sectionSize( 0 ) ); -+ tip( r, item->toolTip() ); -+} -+ -+// -------------------------------------------------------------------------- -+ -+ItemView::ItemView(QWidget* parent, const char* name) -+ : KListView(parent, name), m_spacer( 0 ), -+ m_mouseMoveSelects(true), m_iconSize(32) -+{ -+ setHScrollBarMode( QScrollView::AlwaysOff ); -+ setFrameStyle( QFrame::NoFrame ); -+ setSelectionMode(QListView::Single); -+ addColumn(""); -+ header()->setStretchEnabled(1, 0); -+ //setColumnWidthMode(0, QListView::Maximum); -+ header()->hide(); -+ setMouseTracking(true); -+ setItemMargin(0); -+ setSorting(-1); -+ setTreeStepSize(38); -+ setFocusPolicy(QWidget::NoFocus); -+ -+ m_lastOne = 0; -+ m_old_contentY = -1; -+ -+ connect(this, SIGNAL(mouseButtonClicked( int, QListViewItem*, const QPoint &, int )), -+ SLOT(slotItemClicked(int, QListViewItem*, const QPoint &, int))); -+ -+ connect(this, SIGNAL(returnPressed(QListViewItem*)), SLOT(slotItemClicked(QListViewItem*))); -+ connect(this, SIGNAL(spacePressed(QListViewItem*)), SLOT(slotItemClicked(QListViewItem*))); -+ -+ new ItemViewTip( viewport(), this ); -+} -+ -+KMenuItemHeader *ItemView::insertHeader(int id, const QString &relpath) -+{ -+ KMenuItemHeader *newItem = new KMenuItemHeader(id, relpath, this ); -+ moveItemToIndex(newItem, 1); -+ setBackPath( "kicker:/goup/" + relpath ); // the last wins for now -+ -+ return newItem; -+} -+ -+KMenuItem* ItemView::findItem(int nId) -+{ -+ for (QListViewItemIterator it(this); it.current(); ++it) -+ { -+ if(static_cast<KMenuItem*>(it.current())->id() == nId) -+ return static_cast<KMenuItem*>(it.current()); -+ } -+ -+ return 0L; -+} -+ -+bool ItemView::focusNextPrevChild(bool /*next*/) -+{ -+ return false; -+} -+ -+KMenuItem* ItemView::itemAtIndex(int nIndex) -+{ -+ if(nIndex <= 0) -+ return 0L; -+ -+ if(nIndex >= childCount()) -+ return static_cast<KMenuItem*>(lastItem()); -+ -+ int i = 1; -+ QListViewItemIterator it(this); -+ for (;it.current(); ++i, ++it) { -+ if(i == nIndex) -+ return static_cast<KMenuItem*>(it.current()); -+ } -+ -+ return static_cast<KMenuItem*>(lastItem()); -+} -+ -+KMenuItem* ItemView::insertItem( const QString& icon, const QString& text, const QString& description, const -+ QString& path, int nId, int nIndex, KMenuItem *parent) -+{ -+ KMenuItem* newItem = findItem(nId); -+ -+ if(!newItem && parent) -+ newItem = new KMenuItem(nId, parent ); -+ else if ( !newItem ) -+ newItem = new KMenuItem(nId, this ); -+ -+ newItem->setIcon(icon, m_iconSize); -+ newItem->setTitle(text); -+ newItem->setDescription(description); -+ newItem->setPath(path); -+ -+ if (nIndex==-1) -+ nIndex=childCount(); -+ -+ moveItemToIndex(newItem, nIndex); -+ -+ return newItem; -+} -+ -+KMenuItem* ItemView::insertItem( const QString& icon, const QString& text, const QString& description, -+ int nId, int nIndex, KMenuItem *parent) -+{ -+ return insertItem( icon, text, description, QString::null, nId, nIndex, parent); -+} -+ -+int ItemView::setItemEnabled(int id, bool enabled) -+{ -+ KMenuItem* item = findItem(id); -+ -+ if(item) -+ item->setEnabled(enabled); -+ -+ return 0; -+} -+ -+KMenuItemSeparator *ItemView::insertSeparator(int nId, const QString& text, int nIndex) -+{ -+ KMenuItemSeparator *newItem = new KMenuItemSeparator(nId, this); -+ -+ newItem->setText(0, text); -+ -+ if (nIndex==-1) -+ nIndex=childCount(); -+ -+ moveItemToIndex(newItem, nIndex); -+ return newItem; -+} -+ -+void ItemView::moveItemToIndex(KMenuItem* item, int nIndex) -+{ -+ -+ if (nIndex <= 0) { -+ takeItem(item); -+ KListView::insertItem(item); -+ } -+ else { -+ item->moveItem(itemAtIndex(nIndex)); -+ } -+} -+ -+void ItemView::slotMoveContent() -+{ -+ if ( !m_spacer ) -+ return; -+ -+ int item_height = 0; -+ QListViewItemIterator it( this ); -+ while ( it.current() ) { -+ if ( !dynamic_cast<KMenuSpacer*>( it.current() ) && !it.current()->parent() && it.current()->isVisible() ) { -+ it.current()->invalidateHeight(); -+ item_height += it.current()->totalHeight(); -+ } -+ ++it; -+ } -+ -+ if ( height() > item_height ) -+ m_spacer->setHeight( height() - item_height ); -+ else -+ m_spacer->setHeight( 0 ); -+} -+ -+KMenuItem *ItemView::insertMenuItem(KService::Ptr& s, int nId, int nIndex, KMenuItem* parentItem, -+ const QString& aliasname, const QString & label, const QString & categoryIcon ) -+{ -+ if (!s) -+ return 0; -+ -+ QString serviceName = aliasname.isEmpty() ? s->name() : aliasname; -+ -+ kdDebug() << "insertMenuItem " << nId << " " << nIndex << " " << s->name() << endl; -+ KMenuItem* newItem = 0; //findItem(nId); -+ if(!newItem) -+ newItem = parentItem ? new KMenuItem(nId, parentItem) : new KMenuItem(nId, this); -+ -+ newItem->setIcon(s->icon()=="unknown" ? categoryIcon : s->icon(), m_iconSize); -+ if ((KickerSettings::DescriptionAndName || KickerSettings::menuEntryFormat() -+ == KickerSettings::DescriptionOnly) && !s->genericName().isEmpty()) { -+ newItem->setTitle(s->genericName()); -+ newItem->setDescription(label.isEmpty() ? serviceName : label); -+ } -+ else { -+ newItem->setTitle(label.isEmpty() ? serviceName : label); -+ newItem->setDescription(s->genericName()); -+ } -+ newItem->setService(s); -+ -+ if (nIndex==-2) -+ return newItem; -+ -+ if (nIndex==-1) -+ nIndex=childCount(); -+ -+ moveItemToIndex(newItem, nIndex); -+ -+ return newItem; -+} -+ -+KMenuItem* ItemView::insertDocumentItem(const QString& s, int nId, int nIndex, const QStringList* /*suppressGenericNames*/, -+ const QString& /*aliasname*/) -+{ -+ KMenuItem* newItem = findItem(nId); -+ -+ if(!newItem) -+ newItem = new KMenuItem(nId, this); -+ -+ KMimeType::Ptr mt = KMimeType::findByURL( s ); -+ newItem->setIcon(KMimeType::iconForURL( s ), m_iconSize); -+ newItem->setTitle(s); -+ newItem->setDescription(mt->comment()); -+ newItem->setPath(s); -+ -+ if (nIndex==-1) -+ nIndex=childCount(); -+ -+ moveItemToIndex(newItem, nIndex); -+ -+ return newItem; -+} -+ -+KMenuItem* ItemView::insertRecentlyItem(const QString& s, int nId, int nIndex) -+{ -+ KDesktopFile f(s, true /* read only */); -+ -+ KMenuItem* newItem = findItem(nId); -+ -+ if(!newItem) -+ newItem = new KMenuItem(nId, this); -+ -+ newItem->setIcon(f.readIcon(), m_iconSize); -+ -+ // work around upstream fixed bug -+ QString name=f.readName(); -+ if (name.isEmpty()) -+ name=f.readURL(); -+ -+ newItem->setTitle(name); -+ -+ QString comment = f.readComment(); -+ if (comment.isEmpty()) { -+ KURL url(f.readURL()); -+ if (!url.host().isEmpty()) -+ comment = i18n("Host: %1").arg(url.host()); -+ } -+ -+ newItem->setDescription(comment); -+ newItem->setPath(s); -+ -+ if (nIndex==-1) -+ nIndex=childCount(); -+ -+ moveItemToIndex(newItem, nIndex); -+ -+ return newItem; -+} -+ -+int ItemView::insertItem(PopupMenuTitle*, int, int) -+{ -+ return 0; -+} -+ -+KMenuItem* ItemView::insertSubItem(const QString& icon, const QString& caption, const QString& description, const QString& path, KMenuItem* parentItem) -+{ -+#warning FIXME -+ KMenuItem* newItem = parentItem ? new KMenuItem(-1, parentItem) : new KMenuItem(-1, this); -+ newItem->setTitle(caption); -+ newItem->setDescription(description); -+ newItem->setIcon(icon, m_iconSize); -+ newItem->setPath(path); -+ -+ return newItem; -+} -+ -+ -+ -+void ItemView::slotItemClicked(int button, QListViewItem * item, const QPoint & /*pos*/, int /*c*/ ) -+{ -+ if (button==1) -+ slotItemClicked(item); -+} -+ -+void ItemView::slotItemClicked(QListViewItem* item) -+{ -+ KMenuItem* kitem = dynamic_cast<KMenuItem*>(item); -+ if ( !kitem ) -+ return; -+ -+ if(kitem->service()) { -+ emit startService(kitem->service()); -+ } -+ else if(!kitem->path().isEmpty()) { -+ emit startURL(kitem->path()); -+ } -+} -+ -+void ItemView::contentsMousePressEvent ( QMouseEvent * e ) -+{ -+ KListView::contentsMousePressEvent( e ); -+ -+ QPoint vp = contentsToViewport(e->pos()); -+ KMenuItemSeparator *si = dynamic_cast<KMenuItemSeparator*>( itemAt( vp ) ); -+ if ( si ) -+ { -+ if ( si->hitsLink( vp - itemRect(si).topLeft() ) ) -+ emit startURL( si->linkUrl() ); -+ } -+} -+ -+void ItemView::contentsMouseMoveEvent(QMouseEvent *e) -+{ -+ QPoint vp = contentsToViewport(e->pos()); -+ QListViewItem * i = itemAt( vp ); -+ -+ bool link_cursor = false; -+ KMenuItemSeparator *si = dynamic_cast<KMenuItemSeparator*>( i ); -+ if ( si ) -+ link_cursor = si->hitsLink( vp - itemRect(si).topLeft() ); -+ -+ if (i && !i->isSelectable() && !link_cursor) { -+ unsetCursor(); -+ viewport()->unsetCursor(); -+ return; -+ } -+ -+ KListView::contentsMouseMoveEvent(e); -+ -+ if (m_mouseMoveSelects) { -+ if(i && i->isEnabled() && !i->isSelected() && -+ // FIXME: This is wrong if you drag over the items. -+ (e->state() & (LeftButton|MidButton|RightButton)) == 0) -+ KListView::setSelected(i, true); -+ else if (!i && selectedItem()) -+ KListView::setSelected(selectedItem(), false); -+ } -+ -+ if ( link_cursor ) -+ setCursor( Qt::PointingHandCursor ); -+ else -+ unsetCursor(); -+ -+} -+ -+void ItemView::leaveEvent(QEvent* e) -+{ -+ KListView::leaveEvent(e); -+ -+ clearSelection(); -+} -+ -+void ItemView::resizeEvent ( QResizeEvent * e ) -+{ -+ KListView::resizeEvent( e ); -+// if ( m_lastOne ) -+// int diff = itemRect( m_lastOne ).bottom() - viewport()->height(); -+} -+ -+void ItemView::viewportPaintEvent ( QPaintEvent * pe ) -+{ -+ //kdDebug() << "viewportPaintEvent " << pe->rect() << " " << contentsY () << " " << m_old_contentY << endl; -+ KListView::viewportPaintEvent( pe ); -+ -+ if ( m_lastOne && m_old_contentY != contentsY() ) { -+ m_old_contentY = contentsY(); -+ m_lastOne->repaint(); -+ } -+} -+ -+void ItemView::clear() -+{ -+ KListView::clear(); -+ m_lastOne = 0; -+ m_old_contentY = -1; -+ m_back_url = QString::null; -+} -+ -+void ItemView::contentsWheelEvent(QWheelEvent *e) -+{ -+ KListView::contentsWheelEvent(e); -+ -+ QPoint vp = contentsToViewport(e->pos()); -+ QListViewItem * i = itemAt( vp ); -+ -+ if(i && i->isEnabled() && !i->isSelected() && -+ // FIXME: This is wrong if you drag over the items. -+ (e->state() & (LeftButton|MidButton|RightButton)) == 0) -+ KListView::setSelected(i, true); -+ else if (!i && selectedItem()) -+ KListView::setSelected(selectedItem(), false); -+} -+ -+QDragObject * ItemView::dragObject() -+{ -+ KMultipleDrag* o = 0; -+ QListViewItem *item = itemAt( viewport()->mapFromGlobal(QCursor::pos()) ); -+ if ( item ) { -+ KMenuItem* kitem = static_cast<KMenuItem*>(item); -+ -+ if (dynamic_cast<KMenuItemHeader*>(item)) -+ return 0; -+ -+ o = new KMultipleDrag(viewport()); -+ QPixmap pix = KGlobal::iconLoader()->loadIcon( kitem->icon(), KIcon::Panel, m_iconSize); -+ QPixmap add = KGlobal::iconLoader()->loadIcon( "add", KIcon::Small ); -+ -+ QPainter p( &pix ); -+ p.drawPixmap(pix.height()-add.height(), pix.width()-add.width(), add); -+ p.end(); -+ -+ QBitmap mask; -+ -+ if (pix.mask()) -+ mask = *pix.mask(); -+ else { -+ mask.resize(pix.size()); -+ mask.fill(Qt::color1); -+ } -+ -+ bitBlt( &mask, pix.width()-add.width(), pix.height()-add.height(), add.mask(), 0, 0, add.width(), add.height(), OrROP ); -+ pix.setMask( mask ); -+ o->setPixmap(pix); -+ -+ if(kitem->service()) { -+ // If the path to the desktop file is relative, try to get the full -+ // path from KStdDirs. -+ QString path = kitem->service()->desktopEntryPath(); -+ path = locate("apps", path); -+ o->addDragObject(new KURLDrag(KURL::List(KURL(path)), 0)); -+ } -+ else if (kitem->path().startsWith("kicker:/new") || kitem->path().startsWith("system:/") -+ || kitem->path().startsWith("kicker:/switchuser_") || kitem->path().startsWith("kicker:/restart_")) { -+ delete o; -+ return 0; -+ } -+ else if (kitem->hasChildren()) { -+ o->addDragObject(new KURLDrag(KURL::List(KURL("programs:/"+kitem->menuPath())), 0)); -+ return o; -+ } -+ else if(!kitem->path().isEmpty() && !kitem->path().startsWith("kicker:/") && !kitem->path().startsWith("kaddressbook:/")) { -+ QString uri = kitem->path(); -+ -+ if (uri.startsWith(locateLocal("data", QString::fromLatin1("RecentDocuments/")))) { -+ KDesktopFile df(uri,true); -+ uri=df.readURL(); -+ } -+ -+ o->addDragObject(new KURLDrag(KURL::List(KURL(uri)), 0)); -+ } -+ -+ o->addDragObject(new KMenuItemDrag(*kitem,this)); -+ } -+ return o; -+} -+ -+int ItemView::goodHeight() -+{ -+ int item_height = 0; -+ QListViewItemIterator it( this ); -+ while ( it.current() ) { -+ if ( !dynamic_cast<KMenuSpacer*>( it.current() ) && !it.current()->parent() && it.current()->isVisible() ) { -+ item_height += it.current()->height(); -+ } -+ ++it; -+ } -+ -+ return item_height; -+} -+ -+ -+KMenuItemDrag::KMenuItemDrag(KMenuItem& item, QWidget *dragSource) -+ : QDragObject(dragSource, 0) -+{ -+ QBuffer buff(a); -+ buff.open(IO_WriteOnly); -+ QDataStream s(&buff); -+ -+ s << item.id() << (item.service() ? item.service()->storageId() : QString::null) -+ << item.title() << item.description() << item.icon() << item.path(); -+} -+ -+KMenuItemDrag::~KMenuItemDrag() -+{ -+} -+ -+const char * KMenuItemDrag::format(int i) const -+{ -+ if (i == 0) -+ return "application/kmenuitem"; -+ -+ return 0; -+} -+ -+QByteArray KMenuItemDrag::encodedData(const char* mimeType) const -+{ -+ if (QString("application/kmenuitem") == mimeType) -+ return a; -+ -+ return QByteArray(); -+} -+ -+bool KMenuItemDrag::canDecode(const QMimeSource * e) -+{ -+ if (e->provides( "application/kmenuitem" ) ) -+ return true; -+ -+ return false; -+} -+ -+bool ItemView::acceptDrag (QDropEvent* event) const -+{ -+ if ( !acceptDrops() ) -+ return false; -+ -+ if (KMenuItemDrag::canDecode(event)) -+ return true; -+ -+ if (QTextDrag::canDecode(event)) { -+ QString text; -+ QTextDrag::decode(event,text); -+ return !text.startsWith("programs:/"); -+ } -+ -+ return itemsMovable(); -+} -+ -+bool KMenuItemDrag::decode(const QMimeSource* e, KMenuItemInfo& item) -+{ -+ QByteArray a = e->encodedData("application/kmenuitem"); -+ -+ if (a.isEmpty()) { -+ QStringList l; -+ bool ret = QUriDrag::decodeToUnicodeUris( e, l ); -+ if ( ret ) -+ { -+ for ( QStringList::ConstIterator it = l.begin(); it != l.end(); ++it ) -+ { -+ QString url = *it; -+ kdDebug () << "Url " << url << endl; -+ item.m_path = KURL( url ).path(); -+ if ( KDesktopFile::isDesktopFile( item.m_path ) ) -+ { -+ KDesktopFile df( item.m_path, true ); -+ item.m_description = df.readGenericName(); -+ item.m_icon = df.readIcon(); -+ item.m_title = df.readName(); -+ } -+ else -+ { -+ item.m_title = item.m_path; -+ item.m_icon = KMimeType::iconForURL( url ); -+ item.m_title = item.m_path.section( '/', -1, -1 ); -+ int last_slash = url.findRev ('/', -1); -+ if (last_slash == 0) -+ item.m_description = i18n("Directory: /)"); -+ else -+ item.m_description = i18n("Directory: ") + url.section ('/', -2, -2); -+ } -+ -+ return true; -+ } -+ } -+ return false; -+ } -+ -+ QBuffer buff(a); -+ buff.open(IO_ReadOnly); -+ QDataStream s(&buff); -+ -+ KMenuItemInfo i; -+ QString storageId; -+ s >> i.m_id >> storageId >> i.m_title >> i.m_description >> i.m_icon >> i.m_path; -+ -+ i.m_s = storageId.isEmpty() ? 0 : KService::serviceByStorageId(storageId); -+ item = i; -+ -+ return true; -+} -+ -+FavoritesItemView::FavoritesItemView(QWidget* parent, const char* name) -+ : ItemView(parent, name) -+{ -+} -+ -+bool FavoritesItemView::acceptDrag (QDropEvent* event) const -+{ -+ if (event->source()==this->viewport()) -+ return true; -+ -+ if (KMenuItemDrag::canDecode(event)) { -+ KMenuItemInfo item; -+ KMenuItemDrag::decode(event,item); -+ QStringList favs = KickerSettings::favorites(); -+ -+ if (item.m_s) -+ return favs.find(item.m_s->storageId())==favs.end(); -+ else { -+ QStringList::Iterator it; -+ -+ QString uri = item.m_path; -+ -+ if (uri.startsWith(locateLocal("data", QString::fromLatin1("RecentDocuments/")))) { -+ KDesktopFile df(uri,true); -+ uri=df.readURL(); -+ } -+ -+ for (it = favs.begin(); it != favs.end(); ++it) { -+ if ((*it)[0]=='/') { -+ KDesktopFile df((*it),true); -+ if (df.readURL().replace("file://",QString::null)==uri) -+ break; -+ } -+ } -+ return it==favs.end(); -+ } -+ } -+ -+ if (QTextDrag::canDecode(event)) { -+ QString text; -+ QTextDrag::decode(event,text); -+ QStringList favs = KickerSettings::favorites(); -+ -+ if (text.endsWith(".desktop")) { -+ KService::Ptr p = KService::serviceByDesktopPath(text.replace("file://",QString::null)); -+ return (p && favs.find(p->storageId())==favs.end()); -+ } -+ else { -+ QStringList::Iterator it; -+ for (it = favs.begin(); it != favs.end(); ++it) { -+ if ((*it)[0]=='/') { -+ KDesktopFile df((*it),true); -+ if (df.readURL().replace("file://",QString::null)==text) -+ break; -+ } -+ } -+ return it==favs.end(); -+ } -+ } -+ -+ return itemsMovable(); -+} -+ -+#include "itemview.moc" -+ -+// vim:cindent:sw=4: ---- kicker/ui/media_watcher.cpp (Revision 0) -+++ kicker/ui/media_watcher.cpp (Revision 849791) -@@ -0,0 +1,57 @@ -+/***************************************************************** -+ -+Copyright (c) 2006 Stephan Kulow <coolo@novell.com> -+ -+Permission is hereby granted, free of charge, to any person obtaining a copy -+of this software and associated documentation files (the "Software"), to deal -+in the Software without restriction, including without limitation the rights -+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+copies of the Software, and to permit persons to whom the Software is -+furnished to do so, subject to the following conditions: -+ -+The above copyright notice and this permission notice shall be included in -+all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+******************************************************************/ -+ -+#include "media_watcher.h" -+#include <kapplication.h> -+#include <kdebug.h> -+#include <dcopclient.h> -+#include <dcopref.h> -+ -+MediaWatcher::MediaWatcher( QObject *parent ) : -+ QObject( parent ), DCOPObject("mediawatcher") -+{ -+ connectDCOPSignal( "kded", "mediamanager", "mediumAdded(QString,bool)", -+ "slotMediumAdded(QString,bool)", true ); -+ connectDCOPSignal( "kded", "mediamanager", "mediumRemoved(QString,bool)", -+ "slotMediumAdded(QString,bool)", true ); -+ connectDCOPSignal( "kded", "mediamanager", "mediumChanged(QString,bool)", -+ "slotMediumAdded(QString,bool)", true ); -+ -+ updateDevices(); -+} -+ -+void MediaWatcher::updateDevices() -+{ -+ DCOPRef nsd( "kded", "mediamanager" ); -+ nsd.setDCOPClient( kapp->dcopClient() ); -+ m_devices = nsd.call( "fullList" ); -+} -+ -+void MediaWatcher::slotMediumAdded( QString item, bool a ) -+{ -+ updateDevices(); -+ -+ emit mediumChanged(); -+} -+ -+#include "media_watcher.moc" - -Eigenschaftsänderungen: kicker/ui -___________________________________________________________________ -Geändert: svn:ignore - - nonKDEButtonSettings.h -appletitem.h -appletview.cpp -nonKDEButtonSettings.cpp -k_mnu.kidl -appletview.h -appletitem.cpp -k_mnu_skel.cpp -.deps -.libs -Makefile -Makefile.in -*.moc - - + nonKDEButtonSettings.h -appletitem.h -appletview.cpp -nonKDEButtonSettings.cpp -k_mnu.kidl -appletview.h -appletitem.cpp -k_mnu_skel.cpp -.deps -.libs -Makefile -Makefile.in -*.moc -kmenuitembase.cpp -media_watcher.kidl -kmenubase.cpp -kmenuitembase.h -kmenubase.h -media_watcher_skel.cpp - - ---- kicker/buttons/knewbutton.cpp (Revision 0) -+++ kicker/buttons/knewbutton.cpp (Revision 849791) -@@ -0,0 +1,455 @@ -+/***************************************************************** -+ -+Copyright (c) 2006 Stephan Binner <binner@kde.org> -+ Stephan Kulow <coolo@kde.org> -+ Dirk Mueller <mueller@kde.org> -+ -+Permission is hereby granted, free of charge, to any person obtaining a copy -+of this software and associated documentation files (the "Software"), to deal -+in the Software without restriction, including without limitation the rights -+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+copies of the Software, and to permit persons to whom the Software is -+furnished to do so, subject to the following conditions: -+ -+The above copyright notice and this permission notice shall be included in -+all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+******************************************************************/ -+ -+#include <cassert> -+#include <cmath> -+ -+#include <qtooltip.h> -+#include <qpainter.h> -+#include <qcursor.h> -+#include <private/qeffects_p.h> -+ -+#include <klocale.h> -+#include <kapplication.h> -+#include <kstandarddirs.h> -+#include <kiconloader.h> -+#include <kdebug.h> -+ -+#include "kickerSettings.h" -+ -+#include "config.h" -+#include "global.h" -+ -+#include "menumanager.h" -+#include "k_mnu_stub.h" -+#include "k_new_mnu.h" -+ -+#include "knewbutton.h" -+#include "knewbutton.moc" -+ -+KNewButton *KNewButton::m_self = 0; -+ -+KNewButton::KNewButton( QWidget* parent ) -+ : KButton( parent ), -+ m_oldPos(0,0) -+{ -+ Q_ASSERT( !m_self ); -+ m_self = this; -+ m_hoverTimer = -1; -+ m_openTimer = -1; -+ m_active = false; -+ m_mouseInside = false; -+ m_drag = false; -+ -+ setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignRight)); -+ setAcceptDrops(true); -+ setIcon("kmenu-suse"); -+ setDrawArrow(false); -+ -+ m_movie = new QMovie(locate("data", "kicker/pics/kmenu_basic.mng")); -+ m_movie->connectUpdate(this, SLOT(updateMovie())); -+ m_movie->connectStatus(this, SLOT(slotStatus(int))); -+ m_movie->connectResize(this, SLOT(slotSetSize(const QSize&))); -+ -+ QApplication::desktop()->screen()->installEventFilter(this); -+ setMouseTracking(true); -+} -+ -+KNewButton::~KNewButton() -+{ -+ if ( m_self == this ) -+ m_self = 0; -+ setMouseTracking(false); -+ delete m_movie; -+} -+ -+void KNewButton::slotStatus(int status) -+{ -+ if(status == QMovie::EndOfLoop) -+ slotStopAnimation(); -+} -+ -+QColor KNewButton::borderColor() const -+{ -+ QImage img = m_active_pixmap.convertToImage(); -+ -+ for (int i = 0; i < img.width(); ++i) { -+ QRgb rgb = img.pixel(orientation() == Qt::Horizontal ? img.width() - i - 1 : -+ i, 2); -+ -+ if (qGreen(rgb) > 0x50) -+ return rgb; -+ } -+ -+ return img.pixel( orientation() == Qt::Horizontal ? img.width() - 2 : 2, 2); -+} -+ -+void KNewButton::show() -+{ -+ KButton::show(); -+ -+ if (KickerSettings::firstRun()) { -+ QTimer::singleShot(500,this,SLOT(slotExecMenu())); -+ KickerSettings::setFirstRun(false); -+ KickerSettings::writeConfig(); -+ } -+} -+ -+void KNewButton::updateMovie() -+{ -+ m_oldPos = QPoint( -1, -1 ); -+ drawEye(); -+ -+ if (!m_active && m_movie->running()) -+ m_movie->pause(); -+} -+ -+void KNewButton::setPopupDirection(KPanelApplet::Direction d) -+{ -+ KButton::setPopupDirection(d); -+ -+ delete m_movie; -+ -+ switch (d) { -+ case KPanelApplet::Left: -+ setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignLeft)); -+ m_movie = new QMovie(locate("data", "kicker/pics/kmenu_vertical.mng")); -+ break; -+ case KPanelApplet::Right: -+ setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignRight)); -+ m_movie = new QMovie(locate("data", "kicker/pics/kmenu_vertical.mng")); -+ break; -+ case KPanelApplet::Up: -+ setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignHCenter)); -+ m_movie = new QMovie(locate("data", "kicker/pics/kmenu_basic.mng")); -+ break; -+ case KPanelApplet::Down: -+ setIconAlignment((Qt::AlignmentFlags)(AlignBottom|AlignHCenter)); -+ m_movie = new QMovie(locate("data", "kicker/pics/kmenu_flipped.mng")); -+ } -+ -+ m_movie->connectUpdate(this, SLOT(updateMovie())); -+ m_movie->connectStatus(this, SLOT(slotStatus(int))); -+ m_movie->connectResize(this, SLOT(slotSetSize(const QSize&))); -+} -+ -+void KNewButton::slotSetSize(const QSize& s) -+{ -+ m_iconSize = s; -+} -+ -+double KNewButton::buttonScaleFactor(const QSize& s) const -+{ -+ double sf = 1.0; -+ -+ switch (popupDirection()) { -+ case KPanelApplet::Left: -+ case KPanelApplet::Right: -+// sf = kMin(double(s.width()) / m_iconSize.height(), double(s.height()) / m_iconSize.width()); -+// break; -+ case KPanelApplet::Up: -+ case KPanelApplet::Down: -+ sf = kMin(double(s.width()) / m_iconSize.width(), double(s.height()) / m_iconSize.height()); -+ break; -+ } -+ -+ if (sf > 0.8) sf = 1.0; -+ return sf; -+} -+ -+int KNewButton::widthForHeight(int height) const -+{ -+ int r = m_iconSize.width() * buttonScaleFactor(QSize(m_iconSize.width(), height)); -+ -+ if (!m_movie->running() && height != m_active_pixmap.height()) -+ { -+ KNewButton* that = const_cast<KNewButton*>(this); -+ QTimer::singleShot(0, that, SLOT(slotStopAnimation())); -+ } -+ -+ return r; -+} -+ -+int KNewButton::preferredDimension(int panelDim) const -+{ -+ return kMax(m_icon.width(), m_icon.height()); -+} -+ -+int KNewButton::heightForWidth(int width) const -+{ -+ int r = m_iconSize.width() * buttonScaleFactor(QSize(width, m_iconSize.height())); -+ if (!m_movie->running() && width != m_active_pixmap.width()) -+ { -+ KNewButton* that = const_cast<KNewButton*>(this); -+ QTimer::singleShot(0, that, SLOT(slotStopAnimation())); -+ } -+ return r; -+} -+ -+bool KNewButton::eventFilter(QObject *o, QEvent *e) -+{ -+ if (e->type() == QEvent::MouseButtonRelease || -+ e->type() == QEvent::MouseButtonPress || -+ e->type() == QEvent::MouseButtonDblClick ) -+ { -+ QMouseEvent *me = static_cast<QMouseEvent *>(e); -+ if (rect().contains(mapFromGlobal(me->globalPos()))) -+ { -+ if (m_pressedDuringPopup && m_popup && m_openTimer != -1 -+ && (me->button() & Qt::LeftButton) ) -+ return true; -+ } -+ } -+ -+ if (KickerSettings::kickoffDrawGeekoEye() && e->type() == QEvent::MouseMove) -+ { -+ QMouseEvent *me = static_cast<QMouseEvent *>(e); -+ if ((me->state() & MouseButtonMask) == NoButton) -+ drawEye(); -+ } -+ -+ return KButton::eventFilter(o, e); -+} -+ -+void KNewButton::drawEye() -+{ -+#define eye_x 62 -+#define eye_y 13 -+ QPoint mouse = QCursor::pos(); -+ QPoint me = mapToGlobal(QPoint(eye_x, eye_y)); -+ double a = atan2(mouse.y() - me.y(), mouse.x() - me.x()); -+ int dx = int(2.1 * cos(a)); -+ int dy = int(2.1 * sin(a)); -+ -+ QPoint newpos(eye_x+dx,eye_y+dy); -+ if (newpos!=m_oldPos) { -+ m_oldPos = newpos; -+ QPixmap pixmap = m_active_pixmap; -+ -+ double sf = 1.0; -+ -+ if(!m_movie->framePixmap().isNull()) -+ { -+ pixmap = m_movie->framePixmap(); -+ pixmap.detach(); -+ m_iconSize = pixmap.size(); -+ sf = buttonScaleFactor(size()); -+ -+ if (KickerSettings::kickoffDrawGeekoEye()) { -+ QPainter p(&pixmap); -+ p.setPen(white); -+ p.setBrush(white); -+ // p.setPen(QColor(110,185,55)); -+ p.drawRect(eye_x+dx, eye_y+dy, 2, 2); -+ p. end(); -+ } -+ } -+ -+ QWMatrix matrix; -+ switch (popupDirection()) { -+ case KPanelApplet::Left: -+ matrix.scale(sf, -sf); -+ matrix.rotate(90); -+ break; -+ case KPanelApplet::Up: -+ matrix.scale(sf, sf); -+ break; -+ case KPanelApplet::Right: -+ matrix.scale(sf, -sf); -+ matrix.rotate(90); -+ break; -+ case KPanelApplet::Down: -+ matrix.scale(sf, sf); -+ break; -+ } -+ m_active_pixmap = pixmap.xForm(matrix); -+ -+ repaint(false); -+ } -+#undef eye_x -+#undef eye_y -+} -+ -+void KNewButton::enterEvent(QEvent* e) -+{ -+ KButton::enterEvent(e); -+ -+ QSize s(size()); -+ s *= 0.25; -+ s = s.expandedTo(QSize(6,6)); -+ -+ switch (popupDirection()) { -+ case KPanelApplet::Left: -+ m_sloppyRegion = QRect(rect().topRight() - QPoint(s.width()-1, 0), s); -+ break; -+ case KPanelApplet::Right: -+ m_sloppyRegion = QRect(rect().topLeft(), s); -+ break; -+ case KPanelApplet::Up: -+ m_sloppyRegion = QRect(rect().bottomLeft() - QPoint(0, s.height()-1), s); -+ break; -+ case KPanelApplet::Down: -+ m_sloppyRegion = QRect(rect().topLeft(), s); -+ } -+ -+ m_active = true; -+ m_movie->unpause(); -+ m_movie->restart(); -+} -+ -+void KNewButton::rewindMovie() -+{ -+ m_oldPos = QPoint( -1, -1 ); -+ m_movie->unpause(); -+} -+ -+void KNewButton::dragEnterEvent(QDragEnterEvent* /*e*/) -+{ -+ if (m_hoverTimer != -1) -+ killTimer(m_hoverTimer); -+ -+ m_hoverTimer = startTimer(QApplication::startDragTime()); -+ m_mouseInside = true; -+ m_drag = true; -+} -+ -+void KNewButton::dragLeaveEvent(QDragLeaveEvent* /*e*/) -+{ -+ m_mouseInside = false; -+ m_drag = false; -+} -+ -+void KNewButton::leaveEvent(QEvent* e) -+{ -+ m_mouseInside = false; -+ if (m_hoverTimer != -1) -+ killTimer(m_hoverTimer); -+ m_hoverTimer = -1; -+ -+ KButton::leaveEvent(e); -+} -+ -+void KNewButton::mouseMoveEvent(QMouseEvent* e) -+{ -+ KButton::mouseMoveEvent(e); -+ -+ m_mouseInside = m_sloppyRegion.contains(e->pos()); -+ -+ if ( m_sloppyRegion.contains(e->pos())) -+ { -+ if (m_hoverTimer == -1 && KickerSettings::openOnHover()) -+ m_hoverTimer = startTimer(kMax(200,QApplication::doubleClickInterval()/2)); -+ } -+ else if (m_hoverTimer != -1) -+ { -+ killTimer(m_hoverTimer); -+ m_hoverTimer = -1; -+ } -+} -+ -+void KNewButton::slotStopAnimation() -+{ -+ m_active = false; -+ m_movie->pause(); -+ m_movie->restart(); -+ QTimer::singleShot(200, this, SLOT(rewindMovie())); -+} -+ -+const QPixmap& KNewButton::labelIcon() const -+{ -+ return m_active_pixmap; -+} -+ -+void KNewButton::slotExecMenu() -+{ -+ if (m_openTimer != -1) -+ killTimer(m_openTimer); -+ -+ m_openTimer = startTimer(QApplication::doubleClickInterval() * 3); -+ -+ if (m_active) -+ { -+ m_active = false; -+ m_movie->pause(); -+ m_movie->restart(); -+ } -+ -+ KButton::slotExecMenu(); -+ -+ assert(!KickerTip::tippingEnabled()); -+ assert(dynamic_cast<KMenu*>(m_popup)); -+ -+ disconnect(dynamic_cast<KMenu*>(m_popup), SIGNAL(aboutToHide()), this, -+ SLOT(slotStopAnimation())); -+ connect(dynamic_cast<KMenu*>(m_popup), SIGNAL(aboutToHide()), -+ SLOT(slotStopAnimation())); -+ -+ m_popup->move(KickerLib::popupPosition(popupDirection(), m_popup, this)); -+ // I wish KMenu would properly done itself when it closes. But it doesn't. -+ -+ bool useEffect = true; // could be QApplication::isEffectEnabled() -+ useEffect = false; // too many Qt bugs to be useful -+ if (m_drag) -+ useEffect = false; -+ -+ m_drag = false; // once is enough -+ -+ if (useEffect) -+ { -+ switch (popupDirection()) { -+ case KPanelApplet::Left: -+ qScrollEffect(m_popup, QEffects::LeftScroll); -+ break; -+ case KPanelApplet::Up: -+ qScrollEffect(m_popup, QEffects::UpScroll); -+ break; -+ case KPanelApplet::Right: -+ qScrollEffect(m_popup, QEffects::RightScroll); -+ break; -+ case KPanelApplet::Down: -+ qScrollEffect(m_popup, QEffects::DownScroll); -+ break; -+ } -+ } -+ else -+ static_cast<KMenu*>(m_popup)->show(); -+} -+ -+void KNewButton::timerEvent(QTimerEvent* e) -+{ -+ if (e->timerId() == m_hoverTimer) -+ { -+ if (m_mouseInside && !isDown()) -+ showMenu(); -+ -+ killTimer(m_hoverTimer); -+ m_hoverTimer = -1; -+ } -+ if (e->timerId() == m_openTimer) -+ { -+ killTimer(m_openTimer); -+ m_openTimer = -1; -+ } -+} ---- kicker/buttons/knewbutton.h (Revision 0) -+++ kicker/buttons/knewbutton.h (Revision 849791) -@@ -0,0 +1,98 @@ -+/***************************************************************** -+ -+Copyright (c) 2006 Stephan Binner <binner@kde.org> -+ Stephan Kulow <coolo@kde.org> -+ Dirk Mueller <mueller@kde.org> -+ -+Permission is hereby granted, free of charge, to any person obtaining a copy -+of this software and associated documentation files (the "Software"), to deal -+in the Software without restriction, including without limitation the rights -+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+copies of the Software, and to permit persons to whom the Software is -+furnished to do so, subject to the following conditions: -+ -+The above copyright notice and this permission notice shall be included in -+all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+******************************************************************/ -+ -+#ifndef __knewbutton_h__ -+#define __knewbutton_h__ -+ -+#include "kbutton.h" -+ -+#include <qmovie.h> -+#include <qpoint.h> -+ -+/** -+ * Button that contains the PanelKMenu and client menu manager. -+ */ -+class KNewButton : public KButton -+{ -+ Q_OBJECT -+ -+public: -+ KNewButton( QWidget *parent ); -+ ~KNewButton(); -+ -+ static KNewButton *self() { return m_self; } -+ -+ void loadConfig( const KConfigGroup& config ); -+ -+ virtual const QPixmap& labelIcon() const; -+ -+ virtual int widthForHeight(int height) const; -+ virtual int preferredDimension(int panelDim) const; -+ virtual int heightForWidth(int width) const; -+ -+ QColor borderColor() const; -+ -+ virtual void setPopupDirection(KPanelApplet::Direction d); -+ -+private slots: -+ void slotStatus(int); -+ void slotSetSize(const QSize&); -+ void slotStopAnimation(); -+ void rewindMovie(); -+ void updateMovie(); -+ -+protected: -+ virtual void show(); -+ virtual void slotExecMenu(); -+ virtual QString tileName() { return "KMenu"; } -+ virtual QString defaultIcon() const { return "go"; } -+ -+ virtual void enterEvent(QEvent* e); -+ virtual void leaveEvent(QEvent* e); -+ virtual void mouseMoveEvent(QMouseEvent* e); -+ virtual void dragEnterEvent(QDragEnterEvent*); -+ virtual void dragLeaveEvent(QDragLeaveEvent*); -+ virtual bool eventFilter(QObject *, QEvent *); -+ void timerEvent(QTimerEvent*); -+ -+private: -+ void drawEye(); -+ double buttonScaleFactor(const QSize& s) const; -+ -+ QMovie* m_movie; -+ QPixmap m_active_pixmap; -+ QPoint m_oldPos; -+ QSize m_iconSize; -+ QRect m_sloppyRegion; -+ int m_hoverTimer; -+ int m_openTimer; -+ bool m_active; -+ bool m_mouseInside; -+ bool m_drag; -+ -+ static KNewButton *m_self; -+}; -+ -+#endif ---- kicker/buttons/browserbutton.cpp (Revision 849788) -+++ kicker/buttons/browserbutton.cpp (Revision 849791) -@@ -65,7 +65,7 @@ - topMenu = new PanelBrowserMenu( path ); - setPopup(topMenu); - -- _menuTimer = new QTimer( this ); -+ _menuTimer = new QTimer( this, "_menuTimer" ); - connect( _menuTimer, SIGNAL(timeout()), SLOT(slotDelayedPopup()) ); - - QToolTip::add(this, i18n("Browse: %1").arg(path)); ---- kicker/buttons/kbutton.cpp (Revision 849788) -+++ kicker/buttons/kbutton.cpp (Revision 849791) -@@ -33,6 +33,7 @@ - - #include "menumanager.h" - #include "k_mnu.h" -+#include "k_mnu_stub.h" - - #include "kbutton.h" - #include "kbutton.moc" -@@ -43,7 +44,7 @@ - QToolTip::add(this, i18n("Applications, tasks and desktop sessions")); - setTitle(i18n("K Menu")); - -- setPopup(MenuManager::the()->kmenu()); -+ setPopup(MenuManager::the()->kmenu()->widget()); - MenuManager::the()->registerKButton(this); - setIcon("kmenu"); - ---- kicker/buttons/Makefile.am (Revision 849788) -+++ kicker/buttons/Makefile.am (Revision 849791) -@@ -1,10 +1,10 @@ - INCLUDES = -I$(srcdir)/../core -I$(srcdir)/../../libkicker -I../../libkicker \ -- -I$(srcdir)/../ui -I$(top_srcdir)/libkonq $(all_includes) -+ -I../ui -I$(srcdir)/../ui -I$(top_srcdir)/libkonq $(all_includes) - - noinst_LTLIBRARIES = libkicker_buttons.la - - libkicker_buttons_la_SOURCES = servicebutton.cpp bookmarksbutton.cpp \ -- browserbutton.cpp \ -+ browserbutton.cpp knewbutton.cpp \ - desktopbutton.cpp extensionbutton.cpp kbutton.cpp \ - nonkdeappbutton.cpp servicemenubutton.cpp urlbutton.cpp \ - windowlistbutton.cpp ---- applets/media/mediumbutton.cpp (Revision 849788) -+++ applets/media/mediumbutton.cpp (Revision 849791) -@@ -45,7 +45,8 @@ - #include <konq_drag.h> - - MediumButton::MediumButton(QWidget *parent, const KFileItem &fileItem) -- : PanelPopupButton(parent), mActions(this, this), mFileItem(fileItem) -+ : PanelPopupButton(parent), mActions(this, this), mFileItem(fileItem), mOpenTimer(0, -+ "MediumButton::mOpenTimer") - { - KAction *a = KStdAction::paste(this, SLOT(slotPaste()), - &mActions, "pasteto"); -@@ -74,9 +75,9 @@ - - MediumButton::~MediumButton() - { -- QPopupMenu *menu = popup(); -- setPopup(0); -- delete menu; -+ QPopupMenu *menu = static_cast<QPopupMenu*>(popup()); -+ setPopup(0); -+ delete menu; - } - - const KFileItem &MediumButton::fileItem() const -@@ -94,29 +95,29 @@ - - void MediumButton::initPopup() - { -- QPopupMenu *old_popup = popup(); -- -- KFileItemList items; -- items.append(&mFileItem); -- -- KonqPopupMenu::KonqPopupFlags kpf = -- KonqPopupMenu::ShowProperties -- | KonqPopupMenu::ShowNewWindow; -- -- KParts::BrowserExtension::PopupFlags bef = -- KParts::BrowserExtension::DefaultPopupItems; -- -- KonqPopupMenu *new_popup = new KonqPopupMenu(0L, items, -- KURL("media:/"), mActions, 0L, -- this, kpf, bef); -- KPopupTitle *title = new KPopupTitle(new_popup); -- title->setTitle(mFileItem.text()); -- -- new_popup->insertItem(title, -1, 0); -- -- setPopup(new_popup); -- -- if (old_popup!=0L) delete old_popup; -+ QPopupMenu *old_popup = static_cast<QPopupMenu*>(popup()); -+ -+ KFileItemList items; -+ items.append(&mFileItem); -+ -+ KonqPopupMenu::KonqPopupFlags kpf = -+ KonqPopupMenu::ShowProperties -+ | KonqPopupMenu::ShowNewWindow; -+ -+ KParts::BrowserExtension::PopupFlags bef = -+ KParts::BrowserExtension::DefaultPopupItems; -+ -+ KonqPopupMenu *new_popup = new KonqPopupMenu(0L, items, -+ KURL("media:/"), mActions, 0L, -+ this, kpf, bef); -+ KPopupTitle *title = new KPopupTitle(new_popup); -+ title->setTitle(mFileItem.text()); -+ -+ new_popup->insertItem(title, -1, 0); -+ -+ setPopup(new_popup); -+ -+ if (old_popup!=0L) delete old_popup; - } - - void MediumButton::refreshType() ---- applets/naughty/NaughtyProcessMonitor.cpp (Revision 849788) -+++ applets/naughty/NaughtyProcessMonitor.cpp (Revision 849791) -@@ -94,7 +94,7 @@ - d = new NaughtyProcessMonitorPrivate; - d->interval_ = interval * 1000; - d->triggerLevel_ = triggerLevel; -- d->timer_ = new QTimer(this); -+ d->timer_ = new QTimer(this, "NaughtyProcessMonitorPrivate::timer"); - connect(d->timer_, SIGNAL(timeout()), this, SLOT(slotTimeout())); - } - ---- applets/launcher/quicklauncher.cpp (Revision 849788) -+++ applets/launcher/quicklauncher.cpp (Revision 849791) -@@ -110,7 +110,7 @@ - m_configAction = new KAction(i18n("Configure Quicklauncher..."), "configure", KShortcut(), - this, SLOT(slotConfigure()), this); - -- m_saveTimer = new QTimer(this); -+ m_saveTimer = new QTimer(this, "m_saveTimer"); - connect(m_saveTimer, SIGNAL(timeout()), this, SLOT(saveConfig())); - - m_popularity = new PopularityStatistics(); ---- applets/trash/trashbutton.cpp (Revision 849788) -+++ applets/trash/trashbutton.cpp (Revision 849791) -@@ -78,7 +78,7 @@ - - void TrashButton::initPopup() - { -- QPopupMenu *old_popup = popup(); -+ QPopupMenu *old_popup = static_cast<QPopupMenu*>(popup()); - - KFileItemList items; - items.append(&mFileItem); ---- applets/systemtray/systemtrayapplet.cpp (Revision 849788) -+++ applets/systemtray/systemtrayapplet.cpp (Revision 849791) -@@ -375,7 +375,7 @@ - connect(m_expandButton, SIGNAL(clicked()), - this, SLOT(toggleExpanded())); - -- m_autoRetractTimer = new QTimer(this); -+ m_autoRetractTimer = new QTimer(this, "m_autoRetractTimer"); - connect(m_autoRetractTimer, SIGNAL(timeout()), - this, SLOT(checkAutoRetract())); - } ---- applets/clock/clock.cpp (Revision 849788) -+++ applets/clock/clock.cpp (Revision 849791) -@@ -863,8 +863,8 @@ - _calendar(0), - _disableCalendar(false), - _clock(0), -- _timer(new QTimer(this)), -- m_layoutTimer(new QTimer(this)), -+ _timer(new QTimer(this, "ClockApplet::_timer")), -+ m_layoutTimer(new QTimer(this, "m_layoutTimer")), - m_layoutDelay(0), - m_followBackgroundSetting(true), - m_dateFollowBackgroundSetting(true), ---- applets/minipager/pagerbutton.cpp (Revision 849788) -+++ applets/minipager/pagerbutton.cpp (Revision 849791) -@@ -70,6 +70,8 @@ - m_bgPixmap(0), - m_isCommon(false), - m_currentWindow(0), -+ m_updateCompressor(0, "KMiniPagerButton::updateCompressor"), -+ m_dragSwitchTimer(0, "KMiniPagerButton::dragSwitchTimer"), - m_inside(false) - { - setToggleButton(true); ---- data/kmenu_side/Makefile.am (Revision 849788) -+++ data/kmenu_side/Makefile.am (Revision 849791) -@@ -1,6 +1,5 @@ --kicker_kmenuside_pics_data_DATA = kside.png kside_tile.png -+kicker_kmenuside_pics_data_DATA = kside.png kside_tile.png -+kicker_kmenuside_pics_datadir = $(kde_datadir)/kicker/pics - --kicker_kmenuside_pics_datadir = $(kde_datadir)/kicker/pics/ -- - EXTRA_DIST = $(kicker_kmenuside_pics_data_DATA) - ---- data/Makefile.am (Revision 849788) -+++ data/Makefile.am (Revision 849791) -@@ -1 +1 @@ --SUBDIRS = icons tiles app_start_anim wallpaper kmenu_side -+SUBDIRS = icons tiles app_start_anim wallpaper kmenu_side kickoff -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/cr32-action-suspend2disk.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/search-tab-left.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/main_corner_tr.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/cr48-app-recently_used.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/search-tab-top-left.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/right_triangle.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/cr16-action-suspend2disk.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/crsc-action-suspend2ram.svgz -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/cr128-action-suspend2ram.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/cr32-action-leave.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/left_triangle.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/menu_separator.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/cr32-action-suspend2ram.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/cr48-action-leave.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/cr16-action-suspend2ram.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/search-tab-top-center.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/search-tab-center.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/cr64-action-suspend2ram.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/cr48-action-suspend2ram.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/search-gradient.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/crsc-action-leave.svgz -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/kmenu_vertical.mng -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/cr64-action-suspend2disk.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/cr48-action-suspend2disk.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/resize_handle.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/kmenu_basic.mng -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/kmenu_flipped.mng -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/search-running.mng -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/search-tab-right.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/search-tab-top-right.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - ---- data/kickoff/Makefile.am (Revision 0) -+++ data/kickoff/Makefile.am (Revision 849791) -@@ -0,0 +1,14 @@ -+kicker_kmenuside_pics_data_DATA = resize_handle.png \ -+ main_corner_tl.png main_corner_tr.png search-gradient.png \ -+ menu_separator.png search-tab-center.png search-tab-left.png \ -+ search-tab-right.png search-tab-top-center.png search-tab-top-left.png \ -+ left_triangle.png right_triangle.png \ -+ kmenu_basic.mng kmenu_flipped.mng kmenu_vertical.mng \ -+ search-tab-top-right.png search-gradient-topdown.png search-running.mng -+ -+kicker_kmenuside_pics_datadir = $(kde_datadir)/kicker/pics -+ -+EXTRA_DIST = $(kicker_kmenuside_pics_data_DATA) -+ -+kickerdir = $(kde_datadir)/kicker/icons -+kicker_ICON = leave recently_used suspend2disk suspend2ram -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/cr128-action-suspend2disk.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/crsc-action-suspend2disk.svgz -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/search-gradient-topdown.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - -Kann nicht anzeigen: Dateityp ist als binär angegeben. -svn:mime-type = application/octet-stream - -Eigenschaftsänderungen: data/kickoff/main_corner_tl.png -___________________________________________________________________ -Hinzugefügt: svn:mime-type - + application/octet-stream - - -Eigenschaftsänderungen: data/kickoff -___________________________________________________________________ -Hinzugefügt: svn:ignore - + Makefile -Makefile.in - - diff --git a/opensuse/tdebase/kio-media-errorhandling.diff b/opensuse/tdebase/kio-media-errorhandling.diff deleted file mode 100644 index fd9420f3b..000000000 --- a/opensuse/tdebase/kio-media-errorhandling.diff +++ /dev/null @@ -1,18 +0,0 @@ -Index: kioslave/media/mediaimpl.cpp -=================================================================== ---- kioslave/media/mediaimpl.cpp.orig -+++ kioslave/media/mediaimpl.cpp -@@ -274,6 +274,13 @@ bool MediaImpl::ensureMediumMounted(Medi - return m_lastErrorCode==0; - } - -+ if (medium.id().isEmpty()) -+ { -+ m_lastErrorCode = KIO::ERR_COULD_NOT_MOUNT; -+ m_lastErrorMessage = i18n("No such medium."); -+ return false; -+ } -+ - return true; - } - diff --git a/opensuse/tdebase/klipperrc.diff b/opensuse/tdebase/klipperrc.diff deleted file mode 100644 index d18b4852f..000000000 --- a/opensuse/tdebase/klipperrc.diff +++ /dev/null @@ -1,22 +0,0 @@ -Index: klipper/klipperrc.desktop -=================================================================== ---- klipper/klipperrc.desktop.orig -+++ klipper/klipperrc.desktop -@@ -232,7 +232,7 @@ Number of commands=5 - Regexp=^https?://. - - [Action_1/Command_0] --Commandline=kfmclient exec %s -+Commandline=kfmclient openURL %s - Description=Open with &Konqueror - Description[af]=Maak oop met Konqueror - Description[ar]=Ø¥ÙØªØ Ø¨Ù€Ù€ &Konqueror -@@ -1644,7 +1644,7 @@ Number of commands=5 - Regexp=^ftp://. - - [Action_6/Command_0] --Commandline=kfmclient exec %s -+Commandline=kfmclient openURL %s - Description=Open with &Konqueror - Description[af]=Maak oop met Konqueror - Description[ar]=Ø¥ÙØªØ Ø¨Ù€Ù€ &Konqueror diff --git a/opensuse/tdebase/kmenu-search-fs20050503-fixed.diff b/opensuse/tdebase/kmenu-search-fs20050503-fixed.diff deleted file mode 100644 index aa36d6a22..000000000 --- a/opensuse/tdebase/kmenu-search-fs20050503-fixed.diff +++ /dev/null @@ -1,342 +0,0 @@ -Index: kicker/kicker/ui/k_mnu.cpp -=================================================================== ---- kicker/kicker/ui/k_mnu.cpp.orig -+++ kicker/kicker/ui/k_mnu.cpp -@@ -26,9 +26,13 @@ CONNECTION WITH THE SOFTWARE OR THE USE - #include <unistd.h> - #include <dmctl.h> - -+#include <qhbox.h> - #include <qimage.h> -+#include <qlabel.h> - #include <qpainter.h> - #include <qstyle.h> -+#include <qtimer.h> -+#include <qtooltip.h> - - #include <dcopclient.h> - #include <kapplication.h> -@@ -40,9 +44,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE - #include <kglobal.h> - #include <kglobalsettings.h> - #include <kiconloader.h> -+#include <klineedit.h> - #include <klocale.h> - #include <kmessagebox.h> - #include <kstandarddirs.h> -+#include <ktoolbarbutton.h> - #include <kwin.h> - - #include "client_mnu.h" -@@ -58,9 +64,12 @@ CONNECTION WITH THE SOFTWARE OR THE USE - #include "quickbrowser_mnu.h" - #include "recentapps.h" - -+ - #include "k_mnu.h" - #include "k_mnu.moc" - -+const int PanelKMenu::searchLineID(23140 /*whatever*/); -+ - PanelKMenu::PanelKMenu() - : PanelServiceMenu(QString::null, QString::null, 0, "KMenu") - , bookmarkMenu(0) -@@ -165,6 +174,26 @@ void PanelKMenu::paletteChanged() - } - } - -+ -+/* A MenuHBox is supposed to be inserted into a menu. -+ * You can set a special widget in the hbox which will -+ * get the focus if the user moves up or down with the -+ * cursor keys -+ */ -+class MenuHBox : public QHBox { -+public: -+ MenuHBox(PanelKMenu* parent) : QHBox(parent) -+ { -+ } -+ -+ virtual void keyPressEvent(QKeyEvent *e) -+ { -+ -+ } -+private: -+ PanelKMenu *parent; -+}; -+ - void PanelKMenu::initialize() - { - // kdDebug(1210) << "PanelKMenu::initialize()" << endl; -@@ -191,13 +220,29 @@ void PanelKMenu::initialize() - // add services - PanelServiceMenu::initialize(); - -+ // Insert search field -+ QHBox* hbox = new QHBox( this ); -+ KToolBarButton *clearButton = new KToolBarButton( "locationbar_erase", 0, hbox ); -+ searchEdit = new KLineEdit(hbox); searchEdit->setClickMessage(" "+i18n("Press '/' to search...")); -+ hbox->setFocusPolicy(QWidget::StrongFocus); -+ hbox->setFocusProxy(searchEdit); -+ hbox->setSpacing( 3 ); -+ connect(clearButton, SIGNAL(clicked()), searchEdit, SLOT(clear())); -+ connect(this, SIGNAL(aboutToHide()), this, SLOT(slotClearSearch())); -+ connect(searchEdit, SIGNAL(textChanged(const QString&)), -+ this, SLOT( slotUpdateSearch( const QString&))); -+ insertItem(hbox, searchLineID, 0); -+ -+ //QToolTip::add(clearButton, i18n("Clear Search")); -+ //QToolTip::add(searchEdit, i18n("Enter the name of an application")); -+ - if (KickerSettings::showMenuTitles()) - { - int id; - id = insertItem(new PopupMenuTitle(i18n("All Applications"), font()), -1 /* id */, 0); -- setItemEnabled( id, false ); -+ setItemEnabled(id, false); - id = insertItem(new PopupMenuTitle(i18n("Actions"), font()), -1 /* id */, -1); -- setItemEnabled( id, false ); -+ setItemEnabled(id, false); - } - - // create recent menu section -@@ -737,3 +782,43 @@ void PanelKMenu::clearRecentMenuItems() - } - - -+void PanelKMenu::slotUpdateSearch(const QString& searchString) -+{ -+ kdDebug() << "Searching for " << searchString << endl; -+ setSearchString(searchString); -+} -+ -+void PanelKMenu::slotClearSearch() -+{ -+ if (searchEdit && searchEdit->text().isEmpty() == false) { -+ QTimer::singleShot(0, searchEdit, SLOT(clear())); -+ } -+} -+ -+void PanelKMenu::keyPressEvent(QKeyEvent* e) -+{ -+ // We move the focus to the search field if the -+ // user presses '/'. This is the same shortcut as -+ // konqueror is using, and afaik it's hardcoded both -+ // here and there. This sucks badly for many non-us -+ // keyboard layouts, but for the sake of consistency -+ // we follow konqueror. -+ if (!searchEdit) return KPanelMenu::keyPressEvent(e); -+ -+ if (e->key() == Qt::Key_Slash && !searchEdit->hasFocus()) { -+ if (indexOf(searchLineID) >=0 ) { -+ setActiveItem(indexOf(searchLineID)); -+ } -+ } -+ else if (e->key() == Qt::Key_Escape && searchEdit->text().isEmpty() == false) { -+ searchEdit->clear(); -+ } -+ else if (e->key() == Qt::Key_Delete && !searchEdit->hasFocus() && -+ searchEdit->text().isEmpty() == false) -+ { -+ searchEdit->clear(); -+ } -+ else { -+ KPanelMenu::keyPressEvent(e); -+ } -+} -Index: kicker/kicker/ui/k_mnu.h -=================================================================== ---- kicker/kicker/ui/k_mnu.h.orig -+++ kicker/kicker/ui/k_mnu.h -@@ -73,6 +73,8 @@ protected slots: - void slotSaveSession(); - void slotRunCommand(); - void slotEditUserContact(); -+ void slotUpdateSearch(const QString &searchtext); -+ void slotClearSearch(); - void paletteChanged(); - virtual void configChanged(); - void updateRecent(); -@@ -89,6 +91,8 @@ protected: - void doNewSession(bool lock); - void createRecentMenuItems(); - virtual void clearSubmenus(); -+ void filterMenu(PanelServiceMenu* menu, const QString &searchString); -+ void keyPressEvent(QKeyEvent* e); - - private: - QPopupMenu *sessionsMenu; -@@ -101,6 +105,8 @@ private: - KActionCollection *actionCollection; - KBookmarkOwner *bookmarkOwner; - PopupMenuList dynamicSubMenus; -+ KLineEdit *searchEdit; -+ static const int searchLineID; - }; - - #endif -Index: kicker/kicker/ui/service_mnu.cpp -=================================================================== ---- kicker/kicker/ui/service_mnu.cpp.orig -+++ kicker/kicker/ui/service_mnu.cpp -@@ -26,6 +26,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE - #include <qbitmap.h> - #include <qpixmap.h> - #include <qimage.h> -+#include <qmap.h> - - #include <dcopclient.h> - #include <kapplication.h> -@@ -100,6 +101,8 @@ void PanelServiceMenu::initialize() - clear(); - - clearSubmenus(); -+ searchSubMenuIDs.clear(); -+ searchMenuItems.clear(); - doInitialize(); - } - -@@ -296,6 +299,10 @@ void PanelServiceMenu::fillMenu(KService - - int newId = insertItem(iconset, groupCaption, m, id++); - entryMap_.insert(newId, static_cast<KSycocaEntry*>(g)); -+ // This submenu will be searched when applying a search string -+ searchSubMenuIDs[m] = newId; -+ // Also search the submenu name itself -+ searchMenuItems.insert(newId); - // We have to delete the sub menu our selves! (See Qt docs.) - subMenus.append(m); - } -@@ -308,6 +315,7 @@ void PanelServiceMenu::fillMenu(KService - } - - KService::Ptr s(static_cast<KService *>(e)); -+ searchMenuItems.insert(id); - insertMenuItem(s, id++, -1, &suppressGenericNames, QString::null, specialTitle[s->name()], categoryIcon[s->name()] ); - } - else if (e->isType(KST_KServiceSeparator)) -@@ -900,6 +908,8 @@ void PanelServiceMenu::slotClear() - delete *it; - } - subMenus.clear(); -+ searchSubMenuIDs.clear(); -+ searchMenuItems.clear(); - } - - void PanelServiceMenu::selectFirstItem() -@@ -924,3 +934,72 @@ void PanelServiceMenu::updateRecentlyUse - RecentlyLaunchedApps::the().m_bNeedToUpdate = true; - } - -+void PanelServiceMenu::setSearchString(const QString &searchString) -+{ -+ // We must initialize the menu, because it might have not been opened before -+ initialize(); -+ -+ bool foundSomething = false; -+ std::set<int> nonemptyMenus; -+ std::set<int>::const_iterator menuItemIt(searchMenuItems.begin()); -+ // Apply the filter on this menu -+ for (; menuItemIt != searchMenuItems.end(); ++menuItemIt) { -+ int id = *menuItemIt; -+ KService* s = dynamic_cast< KService* >( static_cast< KSycocaEntry* >( entryMap_[ id ])); -+ QString menuText = text(id); -+ if (menuText.contains(searchString, false) > 0 -+ || ( s != NULL && ( s->name().contains(searchString, false) > 0 -+ || s->exec().contains(searchString, false) > 0 -+ || s->comment().contains(searchString, false) > 0 -+ || s->genericName().contains(searchString, false) > 0 -+ || s->exec().contains(searchString, false) > 0 ) -+ )) { -+ setItemEnabled(id, true); -+ foundSomething = true; -+ nonemptyMenus.insert(id); -+ } -+ else { -+ setItemEnabled(id, false); -+ } -+ } -+ // Apply the filter on this menu -+ /*for (int i=count()-1; i>=0; --i) { -+ int id = idAt(i); -+ QString menuText = text(id); -+ if (menuText.contains(searchString, false) > 0) { -+ setItemEnabled(id, true); -+ foundSomething = true; -+ nonemptyMenus.insert(id); -+ } -+ else { -+ setItemEnabled(id, false); -+ } -+ }*/ -+ -+ PanelServiceMenuMap::iterator it(searchSubMenuIDs.begin()); -+ // Apply the search filter on submenus -+ for (; it != searchSubMenuIDs.end(); ++it) { -+ it.key()->setSearchString(searchString); -+ if (nonemptyMenus.find(it.data()) != nonemptyMenus.end()) { -+ // if the current menu is a match already, we don't -+ // block access to the contained items -+ setItemEnabled(it.data(), true); -+ it.key()->setSearchString(QString()); -+ foundSomething = true; -+ } -+ else if (it.key()->hasSearchResults()) { -+ setItemEnabled(it.data(), true); -+ foundSomething = true; -+ } -+ else { -+ setItemEnabled(it.data(), false); -+ } -+ } -+ -+ hasSearchResults_ = foundSomething; -+} -+ -+bool PanelServiceMenu::hasSearchResults() -+{ -+ return hasSearchResults_; -+} -Index: kicker/kicker/ui/service_mnu.h -=================================================================== ---- kicker/kicker/ui/service_mnu.h.orig -+++ kicker/kicker/ui/service_mnu.h -@@ -26,6 +26,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE - - #include <qmap.h> - #include <qvaluevector.h> -+#include <set> - - #include <ksycocaentry.h> - #include <kservice.h> -@@ -41,8 +42,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE - * @author Rik Hemsley <rik@kde.org> - */ - -+class KLineEdit; - typedef QMap<int, KSycocaEntry::Ptr> EntryMap; - typedef QValueVector<QPopupMenu*> PopupMenuList; -+class PanelServiceMenu; -+typedef QMap<PanelServiceMenu*,int> PanelServiceMenuMap; - - class KDE_EXPORT PanelServiceMenu : public KPanelMenu - { -@@ -63,6 +67,8 @@ public: - virtual void showMenu(); - bool highlightMenuItem( const QString &menuId ); - void selectFirstItem(); -+ void setSearchString(const QString& searchString); -+ bool hasSearchResults(); - - private: - void fillMenu( KServiceGroup::Ptr &_root, KServiceGroup::List &_list, -@@ -115,6 +121,9 @@ protected: - bool addmenumode_; - QPoint startPos_; - PopupMenuList subMenus; -+ PanelServiceMenuMap searchSubMenuIDs; -+ bool hasSearchResults_; -+ std::set<int> searchMenuItems; - - private slots: - void slotContextMenu(int); diff --git a/opensuse/tdebase/kmenu-search-slowdown-fix.diff b/opensuse/tdebase/kmenu-search-slowdown-fix.diff deleted file mode 100644 index 83c771db2..000000000 --- a/opensuse/tdebase/kmenu-search-slowdown-fix.diff +++ /dev/null @@ -1,129 +0,0 @@ -Index: kicker/kicker/ui/k_mnu.cpp -=================================================================== ---- kicker/kicker/ui/k_mnu.cpp.orig -+++ kicker/kicker/ui/k_mnu.cpp -@@ -771,6 +771,7 @@ void PanelKMenu::updateRecent() - insertSeparator(RecentlyLaunchedApps::the().m_nNumMenuItems); - } - } -+ iconsLoaded_ = false; - } - - void PanelKMenu::clearRecentMenuItems() -Index: kicker/kicker/ui/service_mnu.cpp -=================================================================== ---- kicker/kicker/ui/service_mnu.cpp.orig -+++ kicker/kicker/ui/service_mnu.cpp -@@ -63,13 +63,20 @@ PanelServiceMenu::PanelServiceMenu(const - insertInlineHeader_( insertInlineHeader ), - clearOnClose_(false), - addmenumode_(addmenumode), -- popupMenu_(0) -+ popupMenu_(0), -+ iconsLoaded_(false) - { - excludeNoDisplay_=true; - - connect(KSycoca::self(), SIGNAL(databaseChanged()), - SLOT(slotClearOnClose())); - connect(this, SIGNAL(aboutToHide()), this, SLOT(slotClose())); -+ -+ const int iconSize = KickerSettings::menuEntryHeight(); -+ QPixmap pix(iconSize,iconSize); -+ QBitmap map(iconSize,iconSize,true); -+ pix.setMask(map); -+ emptyiconset = QIconSet(pix,pix); - } - - PanelServiceMenu::~PanelServiceMenu() -@@ -103,6 +110,7 @@ void PanelServiceMenu::initialize() - clearSubmenus(); - searchSubMenuIDs.clear(); - searchMenuItems.clear(); -+ iconsLoaded_ = false; - doInitialize(); - } - -@@ -289,15 +297,13 @@ void PanelServiceMenu::fillMenu(KService - newSubMenu(g->name(), g->relPath(), this, g->name().utf8(), inlineHeaderName); - m->setCaption(groupCaption); - -- QIconSet iconset = KickerLib::menuIconSet(g->icon()); -- - if (separatorNeeded) - { - insertSeparator(); - separatorNeeded = false; - } - -- int newId = insertItem(iconset, groupCaption, m, id++); -+ int newId = insertItem(emptyiconset,groupCaption, m, id++); - entryMap_.insert(newId, static_cast<KSycocaEntry*>(g)); - // This submenu will be searched when applying a search string - searchSubMenuIDs[m] = newId; -@@ -392,6 +398,12 @@ void PanelServiceMenu::doInitialize() - - void PanelServiceMenu::configChanged() - { -+ const int iconSize = KickerSettings::menuEntryHeight(); -+ QPixmap pix(iconSize,iconSize); -+ QBitmap map(iconSize,iconSize,true); -+ pix.setMask(map); -+ emptyiconset = QIconSet(pix,pix); -+ - deinitialize(); - } - -@@ -456,9 +468,9 @@ void PanelServiceMenu::insertMenuItem(KS - - int newId; - if ( label.isEmpty() ) -- newId = insertItem(KickerLib::menuIconSet(s->icon()), serviceName, nId, nIndex); -+ newId = insertItem(emptyiconset, serviceName, nId, nIndex); - else -- newId = insertItem(KickerLib::menuIconSet(s->icon()), label, nId, nIndex); -+ newId = insertItem(emptyiconset, label, nId, nIndex); - entryMap_.insert(newId, static_cast<KSycocaEntry*>(s)); - } - -@@ -1003,3 +1015,23 @@ bool PanelServiceMenu::hasSearchResults( - { - return hasSearchResults_; - } -+ -+void PanelServiceMenu::slotAboutToShow() -+{ -+ KPanelMenu::slotAboutToShow(); -+ -+ if (!iconsLoaded_) { -+ EntryMap::Iterator mapIt; -+ for ( mapIt = entryMap_.begin(); mapIt != entryMap_.end(); ++mapIt ) { -+ KService *s = dynamic_cast<KService *>(static_cast<KSycocaEntry*>(mapIt.data())); -+ if (s) -+ changeItem(mapIt.key(),KickerLib::menuIconSet(s->icon()),text(mapIt.key())); -+ else { -+ KServiceGroup *g = dynamic_cast<KServiceGroup *>(static_cast<KSycocaEntry*>(mapIt.data())); -+ if (g) -+ changeItem(mapIt.key(),KickerLib::menuIconSet(g->icon()),text(mapIt.key())); -+ } -+ } -+ iconsLoaded_ = true; -+ } -+} -Index: kicker/kicker/ui/service_mnu.h -=================================================================== ---- kicker/kicker/ui/service_mnu.h.orig -+++ kicker/kicker/ui/service_mnu.h -@@ -124,9 +124,12 @@ protected: - PanelServiceMenuMap searchSubMenuIDs; - bool hasSearchResults_; - std::set<int> searchMenuItems; -+ QIconSet emptyiconset; -+ bool iconsLoaded_; - - private slots: - void slotContextMenu(int); -+ void slotAboutToShow(); - - private: - enum ContextMenuEntry { AddItemToPanel, EditItem, AddMenuToPanel, EditMenu, diff --git a/opensuse/tdebase/knetattach-show.diff b/opensuse/tdebase/knetattach-show.diff deleted file mode 100644 index 0f24370fd..000000000 --- a/opensuse/tdebase/knetattach-show.diff +++ /dev/null @@ -1,7 +0,0 @@ ---- knetattach/knetattach.desktop 2008/12/02 13:49:00 1.1 -+++ knetattach/knetattach.desktop 2008/12/02 14:06:16 -@@ -80,3 +80,4 @@ - X-KDE-StartupNotify=true - Categories=Qt;KDE;Network; - DocPath=knetattach/index.html -+OnlyShowIn=KDE; diff --git a/opensuse/tdebase/kompmgr_use_defaults.diff b/opensuse/tdebase/kompmgr_use_defaults.diff deleted file mode 100644 index 00863fc66..000000000 --- a/opensuse/tdebase/kompmgr_use_defaults.diff +++ /dev/null @@ -1,34 +0,0 @@ -Index: kwin/kcmkwin/kwinoptions/windows.cpp -=================================================================== ---- kwin/kcmkwin/kwinoptions/windows.cpp.orig -+++ kwin/kcmkwin/kwinoptions/windows.cpp -@@ -46,6 +46,7 @@ - #include <kprocess.h> - #include <qtabwidget.h> - -+#include <stdlib.h> - #include <X11/X.h> - #include <X11/Xlib.h> - #include <X11/Xutil.h> -@@ -1524,6 +1525,8 @@ void KTranslucencyConfig::load( void ) - movingWindowOpacity->setEnabled(movingWindowTransparency->isChecked()); - dockWindowOpacity->setEnabled(dockWindowTransparency->isChecked()); - -+ if( !QFile::exists( QDir::homeDirPath() + "/.xcompmgrrc" )) -+ system( "/bin/cp /etc/opt/kde3/share/config/xcompmgrrc $HOME/.xcompmgrrc" ); - KConfig conf_(QDir::homeDirPath() + "/.xcompmgrrc"); - conf_.setGroup("xcompmgr"); - -Index: kwin/kompmgr/kompmgr.c -=================================================================== ---- kwin/kompmgr/kompmgr.c.orig -+++ kwin/kompmgr/kompmgr.c -@@ -2431,6 +2431,8 @@ loadConfig(char *filename){ - - strcat(filename, home); - strcat(filename, configfile); -+ if( access( filename, R_OK ) != 0 ) -+ system( "/bin/cp /etc/opt/kde3/share/config/xcompmgrrc $HOME/.xcompmgrrc" ); - } - - printf("trying '%s' as configfile\n\n", filename); diff --git a/opensuse/tdebase/konq-combo-editor.diff b/opensuse/tdebase/konq-combo-editor.diff deleted file mode 100644 index 8a205fb9f..000000000 --- a/opensuse/tdebase/konq-combo-editor.diff +++ /dev/null @@ -1,42 +0,0 @@ -Index: konqueror/konq_combo.h -=================================================================== ---- konqueror/konq_combo.h.orig -+++ konqueror/konq_combo.h -@@ -87,6 +87,7 @@ signals: - - private slots: - void slotCleared(); -+ void slotRemoved( const QString& item ); - void slotSetIcon( int index ); - void slotActivated( const QString& text ); - -Index: konqueror/konq_combo.cc -=================================================================== ---- konqueror/konq_combo.cc.orig -+++ konqueror/konq_combo.cc -@@ -128,6 +128,9 @@ KonqCombo::KonqCombo( QWidget *parent, c - connect( this, SIGNAL(activated( const QString& )), - SLOT(slotActivated( const QString& )) ); - -+ setHistoryEditorEnabled( true ); -+ connect( this, SIGNAL(removed( const QString&) ), SLOT(slotRemoved( const QString& )) ); -+ - if ( !kapp->dcopClient()->isAttached() ) - kapp->dcopClient()->attach(); - } -@@ -506,6 +509,15 @@ void KonqCombo::slotCleared() - kapp->dcopClient()->send( "konqueror*", "KonquerorIface", "comboCleared(QCString)", data); - } - -+void KonqCombo::slotRemoved( const QString& item ) -+{ -+ QByteArray data; -+ QDataStream s( data, IO_WriteOnly ); -+ s << item << kapp->dcopClient()->defaultObject(); -+ kapp->dcopClient()->send( "konqueror*", "KonquerorIface", -+ "removeFromCombo(QString,QCString)", data); -+} -+ - void KonqCombo::removeURL( const QString& url ) - { - setUpdatesEnabled( false ); diff --git a/opensuse/tdebase/konsole-schema-update.diff b/opensuse/tdebase/konsole-schema-update.diff deleted file mode 100644 index dbba940dd..000000000 --- a/opensuse/tdebase/konsole-schema-update.diff +++ /dev/null @@ -1,33 +0,0 @@ -Index: konsole/other/BlackOnWhite.schema -=================================================================== ---- konsole/other/BlackOnWhite.schema.orig -+++ konsole/other/BlackOnWhite.schema -@@ -18,11 +18,11 @@ color 1 255 255 255 1 0 # regular b - - color 2 0 0 0 0 0 # regular color 0 Black - color 3 178 24 24 0 0 # regular color 1 Red --color 4 24 178 24 0 0 # regular color 2 Green -+color 4 0 128 0 0 0 # regular color 2 Green - color 5 178 104 24 0 0 # regular color 3 Yellow - color 6 24 24 178 0 0 # regular color 4 Blue --color 7 178 24 178 0 0 # regular color 5 Magenta --color 8 24 178 178 0 0 # regular color 6 Cyan -+color 7 128 0 128 0 0 # regular color 5 Magenta -+color 8 16 128 128 0 0 # regular color 6 Cyan - color 9 178 178 178 0 0 # regular color 7 White - - # intensive colors -@@ -34,9 +34,9 @@ color 11 255 255 255 1 0 # intensive b - - color 12 104 104 104 0 0 # intensive color 0 - color 13 255 84 84 0 0 # intensive color 1 --color 14 84 255 84 0 0 # intensive color 2 --color 15 255 255 84 0 0 # intensive color 3 -+color 14 0 178 0 0 0 # intensive color 2 -+color 15 192 193 64 0 0 # intensive color 3 - color 16 84 84 255 0 0 # intensive color 4 --color 17 255 84 255 0 0 # intensive color 5 --color 18 84 255 255 0 0 # intensive color 6 -+color 17 178 0 178 0 0 # intensive color 5 -+color 18 55 178 178 0 0 # intensive color 6 - color 19 255 255 255 0 0 # intensive color 7 diff --git a/opensuse/tdebase/konsole_keytab.diff b/opensuse/tdebase/konsole_keytab.diff deleted file mode 100644 index 18698e2b2..000000000 --- a/opensuse/tdebase/konsole_keytab.diff +++ /dev/null @@ -1,17 +0,0 @@ -Index: konsole/other/x11r5.keytab -=================================================================== ---- konsole/other/x11r5.keytab.orig -+++ konsole/other/x11r5.keytab -@@ -32,10 +32,10 @@ key Left -Shift : "\EOD" - - key Enter : "\r" - --key Home : "\E[1~" -+key Home : "\E[H" - key Insert-Shift : "\E[2~" - key Delete : "\E[3~" --key End : "\E[4~" -+key End : "\E[F" - key Prior -Shift : "\E[5~" - key Next -Shift : "\E[6~" - diff --git a/opensuse/tdebase/kpamgreeter.diff b/opensuse/tdebase/kpamgreeter.diff deleted file mode 100644 index ff8241623..000000000 --- a/opensuse/tdebase/kpamgreeter.diff +++ /dev/null @@ -1,852 +0,0 @@ -Index: kdm/backend/client.c -=================================================================== ---- kdm/backend/client.c.orig -+++ kdm/backend/client.c -@@ -547,6 +547,9 @@ Verify( GConvFunc gconv, int rootok ) - } else - psrv = PAMService; - pdata.usecur = TRUE; -+ } else if (!strcmp( curtype, "pam" )) { -+ psrv = PAMService; -+ pdata.usecur = FALSE; - } else { - sprintf( psrvb, "%.31s-%.31s", PAMService, curtype ); - psrv = psrvb; -@@ -616,7 +619,7 @@ Verify( GConvFunc gconv, int rootok ) - free( msg ); - V_RET_FAIL( 0 ); - } -- } else if (!strcmp( curtype, "generic" )) { -+ } else if (!strcmp( curtype, "generic" ) || !strcmp(curtype, "pam")) { - if (!gconv( GCONV_USER, 0 )) - return 0; - for (curret = 0;;) { -Index: kdm/kfrontend/themer/kdmlabel.h -=================================================================== ---- kdm/kfrontend/themer/kdmlabel.h.orig -+++ kdm/kfrontend/themer/kdmlabel.h -@@ -50,6 +50,7 @@ protected: - // handle switching between normal / active / prelight configurations - virtual void statusChanged(); - -+public: - struct LabelStruct { - QString text; - bool isTimer; -Index: kdmlib/kgreet_pam.cpp -=================================================================== ---- /dev/null -+++ kdmlib/kgreet_pam.cpp -@@ -0,0 +1,668 @@ -+/* -+ -+Conversation widget for kdm greeter -+ -+Copyright (C) 2008 Dirk Mueller <mueller@kde.org> -+ -+based on classic kdm greeter: -+ -+ Copyright (C) 1997, 1998, 2000 Steffen Hansen <hansen@kde.org> -+ Copyright (C) 2000-2003 Oswald Buddenhagen <ossi@kde.org> -+ -+ -+This program is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License as published by -+the Free Software Foundation; either version 2 of the License, or -+(at your option) any later version. -+ -+This program is distributed in the hope that it will be useful, -+but WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+GNU General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ -+*/ -+ -+#include "kgreet_pam.h" -+#include "themer/kdmthemer.h" -+#include "themer/kdmlabel.h" -+ -+#include <klocale.h> -+#include <klineedit.h> -+#include <kpassdlg.h> -+#include <kuser.h> -+ -+#include <qregexp.h> -+#include <qlayout.h> -+#include <qlabel.h> -+#include <qtimer.h> -+ -+#include <stdlib.h> -+#include <stdio.h> -+#include <stdarg.h> -+#include <syslog.h> -+ -+//#define PAM_GREETER_DEBUG -+ -+class KDMPasswordEdit : public KPasswordEdit { -+public: -+ KDMPasswordEdit( QWidget *parent ) : KPasswordEdit( parent, 0 ) {} -+ KDMPasswordEdit( KPasswordEdit::EchoModes echoMode, QWidget *parent ) : KPasswordEdit( echoMode, parent, 0 ) {} -+protected: -+ virtual void contextMenuEvent( QContextMenuEvent * ) {} -+}; -+ -+static FILE* log; -+static void debug(const char* fmt, ...) -+{ -+ va_list lst; -+ va_start(lst, fmt); -+ -+#ifdef PAM_GREETER_DEBUG -+#if 0 -+ vfprintf(log, fmt, lst); -+ fflush(log); -+#else -+ char buf[6000]; -+ sprintf(buf, "*** %s\n", fmt); -+ vsyslog(LOG_WARNING, buf, lst); -+#endif -+#endif -+ va_end(lst); -+} -+ -+static KPasswordEdit::EchoModes echoMode; -+ -+KPamGreeter::KPamGreeter( KGreeterPluginHandler *_handler, -+ KdmThemer *themer, -+ QWidget *parent, QWidget *pred, -+ const QString &_fixedEntity, -+ Function _func, Context _ctx ) : -+ QObject(), -+ KGreeterPlugin( _handler ), -+ fixedUser( _fixedEntity ), -+ func( _func ), -+ ctx( _ctx ), -+ exp( -1 ), -+ pExp( -1 ), -+ running( false ) -+{ -+ ctx = Login; -+ -+ debug("KPamGreeter constructed\n"); -+ -+ m_parentWidget = parent; -+ -+ KdmItem *user_entry = 0, *pw_entry = 0; -+ int line = 0; -+ -+ layoutItem = 0; -+ -+ if (themer && -+ (!(user_entry = themer->findNode( "user-entry" )) || -+ !(pw_entry = themer->findNode( "pw-entry" )))) -+ themer = 0; -+ -+ m_themer = themer; -+ -+ if (!themer) -+ layoutItem = new QGridLayout( 0, 0, 10 ); -+ -+ loginLabel = 0; -+ authLabel.clear(); -+ authEdit.clear(); -+ loginLabel = 0; -+ loginEdit = 0; -+ if (ctx == ExUnlock || ctx == ExChangeTok) -+ fixedUser = KUser().loginName(); -+ if (func != ChAuthTok) { -+ debug("func != ChAuthTok\n"); -+ debug("fixedUser: *%s*\n", fixedUser.latin1()); -+ -+ if (fixedUser.isEmpty()) { -+ loginEdit = new KLineEdit( parent ); -+ loginEdit->setContextMenuEnabled( false ); -+ connect( loginEdit, SIGNAL(lostFocus()), SLOT(slotLoginLostFocus()) ); -+ connect( loginEdit, SIGNAL(lostFocus()), SLOT(slotActivity()) ); -+ connect( loginEdit, SIGNAL(textChanged( const QString & )), SLOT(slotActivity()) ); -+ connect( loginEdit, SIGNAL(selectionChanged()), SLOT(slotActivity()) ); -+ if (pred) { -+ parent->setTabOrder( pred, loginEdit ); -+ pred = loginEdit; -+ } -+ if (!getLayoutItem()) { -+ loginEdit->adjustSize(); -+ user_entry->setWidget( loginEdit ); -+ } else { -+ loginLabel = new QLabel( loginEdit, i18n("Username:"), parent ); -+ getLayoutItem()->addWidget( loginLabel, line, 0 ); -+ getLayoutItem()->addWidget( loginEdit, line++, 1 ); -+ } -+ } else if (ctx != Login && ctx != Shutdown && getLayoutItem()) { -+ loginLabel = new QLabel( i18n("Username:"), parent ); -+ getLayoutItem()->addWidget( loginLabel, line, 0 ); -+ getLayoutItem()->addWidget( new QLabel( fixedUser, parent ), line++, 1 ); -+ } -+#if 0 -+ if (echoMode == -1) -+ passwdEdit = new KDMPasswordEdit( parent ); -+ else -+ passwdEdit = new KDMPasswordEdit( echoMode, -+ parent ); -+ connect( passwdEdit, SIGNAL(textChanged( const QString & )), -+ SLOT(slotActivity()) ); -+ connect( passwdEdit, SIGNAL(lostFocus()), SLOT(slotActivity()) ); -+ if (pred) { -+ parent->setTabOrder( pred, passwdEdit ); -+ pred = passwdEdit; -+ } -+ if (!getLayoutItem()) { -+ passwdEdit->adjustSize(); -+ pw_entry->setWidget( passwdEdit ); -+ } else { -+ passwdLabel = new QLabel( passwdEdit, -+ func == Authenticate ? -+ i18n("hello &Password:") : -+ i18n("Current &password:"), -+ parent ); -+ getLayoutItem()->addWidget( passwdLabel, line, 0 ); -+ getLayoutItem()->addWidget( passwdEdit, line++, 1 ); -+ } -+#endif -+ if (loginEdit) -+ loginEdit->setFocus(); -+ } -+ if (func != Authenticate) { -+ if (echoMode == -1) { -+ authEdit << new KDMPasswordEdit( echoMode, parent ); -+ authEdit << new KDMPasswordEdit( echoMode, parent ); -+ } else { -+ authEdit << new KDMPasswordEdit( parent ); -+ authEdit << new KDMPasswordEdit( parent ); -+ } -+ authLabel << new QLabel( authEdit[0], i18n("&New password:"), parent ); -+ authLabel << new QLabel( authEdit[1], i18n("Con&firm password:"), parent ); -+ if (pred) { -+ parent->setTabOrder( pred, authEdit[0] ); -+ parent->setTabOrder( authEdit[0], authEdit[1] ); -+ } -+ if (getLayoutItem()) { -+ getLayoutItem()->addWidget( authLabel[0], line, 0 ); -+ getLayoutItem()->addWidget( authEdit[0], line++, 1 ); -+ getLayoutItem()->addWidget( authLabel[1], line, 0 ); -+ getLayoutItem()->addWidget( authEdit[1], line, 1 ); -+ } -+ if (authEdit.size() >= 2) -+ authEdit[1]->setFocus(); -+ } -+} -+ -+// virtual -+KPamGreeter::~KPamGreeter() -+{ -+ debug("KPamGreeter::~KPamGreeter"); -+ abort(); -+ if (!layoutItem) { -+ delete loginEdit; -+ return; -+ } -+ QLayoutIterator it = static_cast<QLayout *>(layoutItem)->iterator(); -+ for (QLayoutItem *itm = it.current(); itm; itm = ++it) -+ delete itm->widget(); -+ delete layoutItem; -+ debug("destructor finished, good bye"); -+} -+ -+void // virtual -+KPamGreeter::loadUsers( const QStringList &users ) -+{ -+ KCompletion *userNamesCompletion = new KCompletion; -+ userNamesCompletion->setItems( users ); -+ loginEdit->setCompletionObject( userNamesCompletion ); -+ loginEdit->setAutoDeleteCompletionObject( true ); -+ loginEdit->setCompletionMode( KGlobalSettings::CompletionAuto ); -+} -+ -+void // virtual -+KPamGreeter::presetEntity( const QString &entity, int field ) -+{ -+ debug("presetEntity(%s,%d) called!\n", entity.latin1(), field); -+ loginEdit->setText( entity ); -+ if (field == 1 && authEdit.size() >= 1) -+ authEdit[0]->setFocus(); -+ else { -+ loginEdit->setFocus(); -+ loginEdit->selectAll(); -+ if (field == -1 && authEdit.size() >= 1) { -+ authEdit[0]->setText( " " ); -+ authEdit[0]->setEnabled( false ); -+ authTok = false; -+ } -+ } -+ curUser = entity; -+} -+ -+QString // virtual -+KPamGreeter::getEntity() const -+{ -+ return fixedUser.isEmpty() ? loginEdit->text() : fixedUser; -+} -+ -+void // virtual -+KPamGreeter::setUser( const QString &user ) -+{ -+ // assert( fixedUser.isEmpty() ); -+ curUser = user; -+ loginEdit->setText( user ); -+ if (authEdit.size() >= 1) { -+ authEdit[0]->setFocus(); -+ authEdit[0]->selectAll(); -+ } -+} -+ -+void // virtual -+KPamGreeter::setEnabled(bool enable) -+{ -+ // assert( !passwd1Label ); -+ // assert( func == Authenticate && ctx == Shutdown ); -+// if (loginLabel) -+// loginLabel->setEnabled( enable ); -+ authEdit[0]->setEnabled( enable ); -+ setActive( enable ); -+ if (enable) -+ authEdit[0]->setFocus(); -+ } -+ -+void // private -+KPamGreeter::returnData() -+{ -+ debug("*************** returnData called with exp %d\n", exp); -+ -+ -+ switch (exp) { -+ case 0: -+ handler->gplugReturnText( (loginEdit ? loginEdit->text() : -+ fixedUser).local8Bit(), -+ KGreeterPluginHandler::IsUser ); -+ break; -+ case 1: -+ handler->gplugReturnText( authEdit[0]->password(), -+ KGreeterPluginHandler::IsPassword | -+ KGreeterPluginHandler::IsSecret ); -+ break; -+ case 2: -+ handler->gplugReturnText( authEdit[1]->password(), -+ KGreeterPluginHandler::IsSecret ); -+ break; -+ default: // case 3: -+ handler->gplugReturnText( authEdit[2]->password(), -+ KGreeterPluginHandler::IsNewPassword | -+ KGreeterPluginHandler::IsSecret ); -+ break; -+ } -+} -+ -+bool // virtual -+KPamGreeter::textMessage( const char *text, bool err ) -+{ -+ debug(" ************** textMessage(%s, %d)\n", text, err); -+ -+ if (!authEdit.size()) -+ return false; -+ -+ if (getLayoutItem()) { -+ QLabel* label = new QLabel(QString::fromUtf8(text), m_parentWidget); -+ getLayoutItem()->addWidget(label, state+1, 0, 0); -+ } -+ -+ return true; -+} -+ -+void // virtual -+KPamGreeter::textPrompt( const char *prompt, bool echo, bool nonBlocking ) -+{ -+ debug("textPrompt called with prompt %s echo %d nonBlocking %d", prompt, echo, nonBlocking); -+ debug("state is %d, authEdit.size is %d\n", state, authEdit.size()); -+ -+ if (state == 0 && echo) { -+ if (loginLabel) -+ loginLabel->setText(QString::fromUtf8(prompt)); -+ else if (m_themer) { -+ KdmLabel *kdmlabel = static_cast<KdmLabel*>(m_themer->findNode("user-label")); -+ if (kdmlabel) { -+ //userLabel->setText(QString::fromUtf8(prompt)); -+ kdmlabel->label.text = QString::fromUtf8(prompt); -+ QTimer::singleShot(0, kdmlabel, SLOT(update())); -+ } -+ } -+ } -+ else if (state >= authEdit.size()) { -+ if (getLayoutItem()) { -+ QLabel* label = new QLabel(QString::fromUtf8(prompt), m_parentWidget); -+ getLayoutItem()->addWidget(label, state+1, 0, 0); -+ debug("added label widget to layout"); -+ } -+ else if (m_themer) { -+ debug("themer found!"); -+ KdmItem *pw_label = 0; -+ -+ KdmLabel *kdmlabel = static_cast<KdmLabel*>(m_themer->findNode("pw-label")); -+ if (kdmlabel) { -+ //userLabel->setText(QString::fromUtf8(prompt)); -+ QString str = QString::fromUtf8(prompt); -+ kdmlabel->label.text = str; -+ QTimer::singleShot(0, kdmlabel, SLOT(update())); -+ } -+ } -+ -+ KDMPasswordEdit* passwdEdit; -+ -+ if (echoMode == -1) -+ passwdEdit = new KDMPasswordEdit( m_parentWidget ); -+ else -+ passwdEdit = new KDMPasswordEdit( echoMode, m_parentWidget); -+ connect( passwdEdit, SIGNAL(textChanged( const QString & )), -+ SLOT(slotActivity()) ); -+ connect( passwdEdit, SIGNAL(lostFocus()), SLOT(slotActivity()) ); -+ authEdit << passwdEdit; -+ -+#if 1 -+ for(QValueList<KPasswordEdit*>::iterator it = authEdit.begin(); -+ it != authEdit.end(); -+ ++it) { -+ if ((*it)->isEnabled() && (*it)->text().isEmpty()) { -+ (*it)->setFocus(); -+ break; -+ } -+ } -+#endif -+ if (getLayoutItem()) -+ getLayoutItem()->addWidget(passwdEdit, state+1, 1, 0); -+ -+ if (m_themer) { -+ debug("themer found!"); -+ KdmItem *pw_entry = 0; -+ -+ pw_entry = m_themer->findNode("pw-entry"); -+ -+ if (pw_entry && passwdEdit) -+ pw_entry->setWidget(passwdEdit); -+ -+ if (0) { -+ //userLabel->setText(QString::fromUtf8(prompt)); -+ //kdmlabel->label.text = QString::fromUtf8(prompt); -+ //QTimer::singleShot(0, kdmlabel, SLOT(update())); -+ } -+ } -+ else -+ debug("no themer found!"); -+ } -+ ++state; -+ pExp = exp; -+ -+ exp = authEdit.size(); -+ debug("state %d exp: %d, has %d\n", state, exp, has); -+ -+ if (has >= exp || nonBlocking) -+ returnData(); -+} -+ -+bool // virtual -+KPamGreeter::binaryPrompt( const char *, bool ) -+{ -+ // this simply cannot happen ... :} -+ return true; -+} -+ -+void // virtual -+KPamGreeter::start() -+{ -+ debug("******* start() called\n"); -+ -+ while(authEdit.begin() != authEdit.end()) { -+ KPasswordEdit* item = *authEdit.remove(authEdit.begin()); -+ delete item; -+ } -+ -+ while(authLabel.begin() != authLabel.end()) { -+ QLabel* item = *authLabel.remove(authLabel.begin()); -+ delete item; -+ } -+ -+ authTok = !(authEdit.size() >= 2 && authEdit[1]->isEnabled()); -+ exp = has = -1; -+ state = 0; -+ running = true; -+ handler->gplugStart(); -+} -+ -+void // virtual -+KPamGreeter::suspend() -+{ -+} -+ -+void // virtual -+KPamGreeter::resume() -+{ -+} -+ -+void // virtual -+KPamGreeter::next() -+{ -+ debug("********* next() called state %d\n", state); -+ -+ if (state == 0 && running && handler) { -+ debug(" **** returned text!\n"); -+ handler->gplugReturnText( (loginEdit ? loginEdit->text() : -+ fixedUser).local8Bit(), -+ KGreeterPluginHandler::IsUser ); -+ setActive(false); -+ } -+ -+ has = 0; -+ -+ for(QValueList<KPasswordEdit*>::iterator it = authEdit.begin(); -+ it != authEdit.end(); -+ ++it) { -+ -+ has++; -+ if ((*it)->hasFocus()) { -+ ++it; -+ if (it != authEdit.end()) -+ (*it)->setFocus(); -+ break; -+ } -+ if (it == authEdit.end()) -+ has = -1; -+ } -+ -+ debug(" has %d and exp %d\n", has, exp); -+ -+#if 0 -+ // assert( running ); -+ if (loginEdit && loginEdit->hasFocus()) { -+ passwdEdit->setFocus(); // will cancel running login if necessary -+ has = 0; -+ } else if (passwdEdit && passwdEdit->hasFocus()) { -+ if (passwd1Edit) -+ passwd1Edit->setFocus(); -+ has = 1; -+ } else if (passwd1Edit) { -+ if (passwd1Edit->hasFocus()) { -+ passwd2Edit->setFocus(); -+ has = 1; // sic! -+ } else -+ has = 3; -+ } else -+ has = 1; -+ if (exp < 0) -+ handler->gplugStart(); -+#endif -+ if (has >= exp) -+ returnData(); -+} -+ -+void // virtual -+KPamGreeter::abort() -+{ -+ debug("***** abort() called\n"); -+ -+ running = false; -+ if (exp >= 0) { -+ exp = -1; -+ handler->gplugReturnText( 0, 0 ); -+ } -+} -+ -+void // virtual -+KPamGreeter::succeeded() -+{ -+ debug("**** succeeded() called\n"); -+ -+ // assert( running || timed_login ); -+ if (!authTok) -+ setActive( false ); -+ else -+ setAllActive( false ); -+ exp = -1; -+ running = false; -+} -+ -+void // virtual -+KPamGreeter::failed() -+{ -+ // assert( running || timed_login ); -+ setActive( false ); -+ setAllActive( false ); -+ exp = -1; -+ running = false; -+} -+ -+#include<assert.h> -+void // virtual -+KPamGreeter::revive() -+{ -+ // assert( !running ); -+ setAllActive( true ); -+ -+#if 1 -+ if (authEdit.size() < 1) -+ return; -+#endif -+ -+ assert(authEdit.size() >= 1); -+ if (authTok) { -+ authEdit[0]->erase(); -+ if(authEdit.size() >= 2) -+ authEdit[1]->erase(); -+ authEdit[0]->setFocus(); -+ } else { -+ authEdit[0]->erase(); -+ if (loginEdit && loginEdit->isEnabled()) -+ authEdit[0]->setEnabled( true ); -+ else { -+ setActive( true ); -+ if (loginEdit && loginEdit->text().isEmpty()) -+ loginEdit->setFocus(); -+ else -+ authEdit[0]->setFocus(); -+ } -+ } -+} -+ -+void // virtual -+KPamGreeter::clear() -+{ -+ // assert( !running && !passwd1Edit ); -+ authEdit[0]->erase(); -+ if (loginEdit) { -+ loginEdit->clear(); -+ loginEdit->setFocus(); -+ curUser = QString::null; -+ } else -+ authEdit[0]->setFocus(); -+} -+ -+ -+// private -+ -+void -+KPamGreeter::setActive( bool enable ) -+{ -+ if (loginEdit) -+ loginEdit->setEnabled( enable ); -+} -+ -+void -+KPamGreeter::setAllActive( bool enable ) -+{ -+ for(QValueList<KPasswordEdit*>::iterator it = authEdit.begin(); -+ it != authEdit.end(); -+ ++it) -+ (*it)->setEnabled( enable ); -+} -+ -+void -+KPamGreeter::slotLoginLostFocus() -+{ -+ if (!running) -+ return; -+ if (exp > 0) { -+ if (curUser == loginEdit->text()) -+ return; -+ exp = -1; -+ handler->gplugReturnText( 0, 0 ); -+ } -+ curUser = loginEdit->text(); -+ debug("curUser is %s", curUser.latin1()); -+ handler->gplugSetUser( curUser ); -+} -+ -+void -+KPamGreeter::slotActivity() -+{ -+ debug("slotActivity"); -+ -+ if (running) -+ handler->gplugActivity(); -+} -+ -+// factory -+ -+static bool init( const QString &, -+ QVariant (*getConf)( void *, const char *, const QVariant & ), -+ void *ctx ) -+{ -+ echoMode = (KPasswordEdit::EchoModes) getConf( ctx, "EchoMode", QVariant( -1 ) ).toInt(); -+ KGlobal::locale()->insertCatalogue( "kgreet_pam" ); -+ return true; -+} -+ -+static void done( void ) -+{ -+ KGlobal::locale()->removeCatalogue( "kgreet_pam" ); -+ if (log && log != stderr) -+ fclose(log); -+ log = 0; -+} -+ -+static KGreeterPlugin * -+create( KGreeterPluginHandler *handler, KdmThemer *themer, -+ QWidget *parent, QWidget *predecessor, -+ const QString &fixedEntity, -+ KGreeterPlugin::Function func, -+ KGreeterPlugin::Context ctx ) -+{ -+ return new KPamGreeter( handler, themer, parent, predecessor, fixedEntity, func, ctx ); -+} -+ -+KDE_EXPORT kgreeterplugin_info kgreeterplugin_info = { -+ I18N_NOOP("Pam conversation plugin"), "pam", -+ kgreeterplugin_info::Local | kgreeterplugin_info::Presettable, -+ init, done, create -+}; -+ -+#include "kgreet_pam.moc" -Index: kdmlib/kgreet_pam.h -=================================================================== ---- /dev/null -+++ kdmlib/kgreet_pam.h -@@ -0,0 +1,93 @@ -+/* -+ -+Conversation widget for kdm greeter -+ -+Copyright (C) 2008 Dirk Mueller <mueller@kde.org> -+ -+ -+This program is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License as published by -+the Free Software Foundation; either version 2 of the License, or -+(at your option) any later version. -+ -+This program is distributed in the hope that it will be useful, -+but WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+GNU General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ -+*/ -+ -+ -+#ifndef KGREET_CLASSIC_H -+#define KGREET_CLASSIC_H -+ -+#include "kgreeterplugin.h" -+ -+#include <qobject.h> -+#include <qlayout.h> -+ -+class KLineEdit; -+class KPasswordEdit; -+class KSimpleConfig; -+class QGridLayout; -+class QLabel; -+ -+class KPamGreeter : public QObject, public KGreeterPlugin { -+ Q_OBJECT -+ -+ public: -+ KPamGreeter( KGreeterPluginHandler *handler, -+ KdmThemer *themer, -+ QWidget *parent, QWidget *predecessor, -+ const QString &fixedEntitiy, -+ Function func, Context ctx ); -+ ~KPamGreeter(); -+ virtual void loadUsers( const QStringList &users ); -+ virtual void presetEntity( const QString &entity, int field ); -+ virtual QString getEntity() const; -+ virtual void setUser( const QString &user ); -+ virtual void setEnabled( bool on ); -+ virtual bool textMessage( const char *message, bool error ); -+ virtual void textPrompt( const char *prompt, bool echo, bool nonBlocking ); -+ virtual bool binaryPrompt( const char *prompt, bool nonBlocking ); -+ virtual void start(); -+ virtual void suspend(); -+ virtual void resume(); -+ virtual void next(); -+ virtual void abort(); -+ virtual void succeeded(); -+ virtual void failed(); -+ virtual void revive(); -+ virtual void clear(); -+ -+ QGridLayout *getLayoutItem() const { return static_cast<QGridLayout*>(layoutItem); } -+ -+ public slots: -+ void slotLoginLostFocus(); -+ void slotActivity(); -+ -+ private: -+ void setActive( bool enable ); -+ void setAllActive( bool enable ); -+ void returnData(); -+ -+ QLabel *loginLabel; -+ QValueList<QLabel*> authLabel; -+ KLineEdit *loginEdit; -+ QWidget* m_parentWidget; -+ QValueList<KPasswordEdit*> authEdit; -+ KSimpleConfig *stsFile; -+ KdmThemer *m_themer; -+ QString fixedUser, curUser; -+ Function func; -+ Context ctx; -+ int exp, pExp, has; -+ unsigned state; -+ bool running, authTok; -+}; -+ -+#endif /* KGREET_CLASSIC_H */ -Index: kdmlib/Makefile.am -=================================================================== ---- kdmlib/Makefile.am.orig -+++ kdmlib/Makefile.am -@@ -1,11 +1,15 @@ - AM_CPPFLAGS = -I$(top_srcdir)/kdm/kfrontend $(all_includes) - --kde_module_LTLIBRARIES = kgreet_classic.la kgreet_winbind.la -+kde_module_LTLIBRARIES = kgreet_classic.la kgreet_pam.la kgreet_winbind.la - - kgreet_classic_la_SOURCES = kgreet_classic.cpp - kgreet_classic_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) $(all_libraries) - kgreet_classic_la_LIBADD = $(LIB_KDEUI) - -+kgreet_pam_la_SOURCES = kgreet_pam.cpp -+kgreet_pam_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) $(all_libraries) -+kgreet_pam_la_LIBADD = $(LIB_KDEUI) -+ - kgreet_winbind_la_SOURCES = kgreet_winbind.cpp - kgreet_winbind_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) $(all_libraries) - kgreet_winbind_la_LIBADD = $(LIB_KDEUI) -Index: kcheckpass/checkpass_pam.c -=================================================================== ---- kcheckpass/checkpass_pam.c.orig -+++ kcheckpass/checkpass_pam.c -@@ -140,13 +140,16 @@ AuthReturn Authenticate(const char *call - openlog("kcheckpass", LOG_PID, LOG_AUTH); - - PAM_data.conv = conv; -- if (strcmp(method, "classic")) { -- sprintf(pservb, "%.31s-%.31s", caller, method); -- pam_service = pservb; -- } else { -+ if (!strcmp(method, "classic")) { - PAM_data.classic = 1; - pam_service = caller; - } -+ else if (!strcmp(method, "pam")) { -+ pam_service = caller; -+ } else { -+ sprintf(pservb, "%.31s-%.31s", caller, method); -+ pam_service = pservb; -+ } - pam_error = pam_start(pam_service, user, &PAM_conversation, &pamh); - if (pam_error != PAM_SUCCESS) - return AuthError; diff --git a/opensuse/tdebase/krandr-0.5.2.1.diff.bz2 b/opensuse/tdebase/krandr-0.5.2.1.diff.bz2 Binary files differdeleted file mode 100644 index 5e35b382b..000000000 --- a/opensuse/tdebase/krandr-0.5.2.1.diff.bz2 +++ /dev/null diff --git a/opensuse/tdebase/kscreensaver-random-NG.diff b/opensuse/tdebase/kscreensaver-random-NG.diff deleted file mode 100644 index 389babf13..000000000 --- a/opensuse/tdebase/kscreensaver-random-NG.diff +++ /dev/null @@ -1,189 +0,0 @@ -Index: kscreensaver/random.cpp -=================================================================== ---- kscreensaver/random.cpp.orig -+++ kscreensaver/random.cpp -@@ -1,4 +1,4 @@ --//----------------------------------------------------------------------------- -+ //----------------------------------------------------------------------------- - // - // Screen savers for KDE - // -@@ -19,6 +19,7 @@ - #include <qframe.h> - #include <qcheckbox.h> - #include <qwidget.h> -+#include <qfileinfo.h> - - #include <kapplication.h> - #include <kstandarddirs.h> -@@ -36,7 +37,7 @@ - - #define MAX_ARGS 20 - --void usage(char *name) -+static void usage(char *name) - { - puts(i18n("Usage: %1 [-setup] [args]\n" - "Starts a random screen saver.\n" -@@ -60,6 +61,43 @@ static const KCmdLineOptions options[] = - - //---------------------------------------------------------------------------- - -+#ifdef HAVE_GLXCHOOSEVISUAL -+#include <GL/glx.h> -+#endif -+ -+//------------------------------------- -+bool hasDirectRendering () { -+ Display *dpy = QApplication::desktop()->x11Display(); -+ -+#ifdef HAVE_GLXCHOOSEVISUAL -+ int attribSingle[] = { -+ GLX_RGBA, -+ GLX_RED_SIZE, 1, -+ GLX_GREEN_SIZE, 1, -+ GLX_BLUE_SIZE, 1, -+ None -+ }; -+ XVisualInfo* visinfo = glXChooseVisual ( -+ dpy, QApplication::desktop()->primaryScreen(), attribSingle -+ ); -+ if (visinfo) { -+ GLXContext ctx = glXCreateContext ( dpy, visinfo, NULL, True ); -+ if (glXIsDirect(dpy, ctx)) { -+ glXDestroyContext (dpy,ctx); -+ return true; -+ } -+ glXDestroyContext (dpy,ctx); -+ return false; -+ } else { -+ return false; -+ } -+#else -+#error no GL? -+ return false; -+#endif -+ -+} -+ - int main(int argc, char *argv[]) - { - KLocale::setMainCatalogue("kscreensaver"); -@@ -103,55 +141,63 @@ int main(int argc, char *argv[]) - - KConfig type("krandom.kssrc"); - type.setGroup("Settings"); -- bool opengl = type.readBoolEntry("OpenGL"); -+ bool opengl = type.readBoolEntry("OpenGL", hasDirectRendering()); -+ kdDebug() << "hasOPEN " << opengl << endl; - bool manipulatescreen = type.readBoolEntry("ManipulateScreen"); - bool fortune = !KStandardDirs::findExe("fortune").isEmpty(); -+ QStringList defaults = type.readListEntry( "Defaults" ); -+ QMap<QString, int> def_numbers; -+ for ( QStringList::ConstIterator it = defaults.begin(); it != defaults.end(); ++it ) { -+ int index = ( *it ).find( ':' ); -+ if ( index == -1 ) -+ def_numbers[*it] = 1; -+ else -+ def_numbers[( *it ).left( index )] = ( *it ).mid( index + 1 ).toInt(); -+ } - - for (uint i = 0; i < tempSaverFileList.count(); i++) - { -- kdDebug() << "Looking at " << tempSaverFileList[i] << endl; -+ int howoften = 1; -+ if ( defaults.count() != 0 ) { -+ QFileInfo fi( tempSaverFileList[i] ); -+ if ( def_numbers.contains( fi.fileName() ) ) -+ howoften = def_numbers[fi.fileName()]; -+ else -+ howoften = 0; -+ } -+ - KDesktopFile saver(tempSaverFileList[i], true); -- if(!saver.tryExec()) -- continue; -- kdDebug() << "read X-KDE-Type" << endl; -+ if (!saver.tryExec()) -+ continue; - QString saverType = saver.readEntry("X-KDE-Type"); -- -- if (saverType.isEmpty()) // no X-KDE-Type defined so must be OK -- { -- saverFileList.append(tempSaverFileList[i]); -- } -- else -- { -+ if (!saverType.isEmpty()) // no X-KDE-Type defined so must be OK -+ { - QStringList saverTypes = QStringList::split(";", saverType); - for (QStringList::ConstIterator it = saverTypes.begin(); it != saverTypes.end(); ++it ) - { -- kdDebug() << "saverTypes is "<< *it << endl; - if (*it == "ManipulateScreen") - { -- if (manipulatescreen) -- { -- saverFileList.append(tempSaverFileList[i]); -- } -+ if (!manipulatescreen) -+ howoften = 0; - } - else - if (*it == "OpenGL") - { -- if (opengl) -- { -- saverFileList.append(tempSaverFileList[i]); -- } -+ if (!opengl) -+ howoften = 0; - } - if (*it == "Fortune") - { -- if (fortune) -- { -- saverFileList.append(tempSaverFileList[i]); -- } -+ if (!fortune) -+ howoften = 0; - } - - } - } -+ for ( int j = 0; j < howoften; ++j ) -+ saverFileList.append(tempSaverFileList[i]); - } -+ kdDebug() << "final " << saverFileList << endl; - - KRandomSequence rnd; - int indx = rnd.getLong(saverFileList.count()); -@@ -229,7 +275,7 @@ KRandomSetup::KRandomSetup( QWidget *par - - KConfig config("krandom.kssrc"); - config.setGroup("Settings"); -- openGL->setChecked(config.readBoolEntry("OpenGL", true)); -+ openGL->setChecked(config.readBoolEntry("OpenGL", hasDirectRendering())); - manipulateScreen->setChecked(config.readBoolEntry("ManipulateScreen", true)); - } - -Index: kscreensaver/Makefile.am -=================================================================== ---- kscreensaver/Makefile.am.orig -+++ kscreensaver/Makefile.am -@@ -3,13 +3,13 @@ - - AM_CPPFLAGS = -UQT_NO_ASCII_CAST - --INCLUDES = $(all_includes) -+INCLUDES = $(GLINC) $(all_includes) - AM_LDFLAGS = $(all_libraries) $(KDE_RPATH) - - bin_PROGRAMS = krandom.kss kblankscrn.kss - - krandom_kss_SOURCES = random.cpp --krandom_kss_LDADD = $(LIB_KDEUI) -lm -+krandom_kss_LDADD = $(LIB_KDEUI) $(GLLIB) -lm - - kblankscrn_kss_SOURCES = blankscrn.cpp - kblankscrn_kss_LDADD = $(LIB_KDEUI) -lkscreensaver -lm diff --git a/opensuse/tdebase/ksmserver-defaulttohalt.diff b/opensuse/tdebase/ksmserver-defaulttohalt.diff deleted file mode 100644 index 71a8a5037..000000000 --- a/opensuse/tdebase/ksmserver-defaulttohalt.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: ksmserver/shutdowndlg.cpp -=================================================================== ---- ksmserver/shutdowndlg.cpp.orig -+++ ksmserver/shutdowndlg.cpp -@@ -222,7 +222,7 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* - btnHalt->setFont( btnFont ); - buttonlay->addWidget( btnHalt ); - connect(btnHalt, SIGNAL(clicked()), SLOT(slotHalt())); -- if ( sdtype == KApplication::ShutdownTypeHalt ) -+ if ( sdtype == KApplication::ShutdownTypeHalt || getenv("KDM_AUTOLOGIN") ) - btnHalt->setFocus(); - - // Reboot diff --git a/opensuse/tdebase/ksmserver-kdeinit.diff b/opensuse/tdebase/ksmserver-kdeinit.diff deleted file mode 100644 index a21b92dc8..000000000 --- a/opensuse/tdebase/ksmserver-kdeinit.diff +++ /dev/null @@ -1,67 +0,0 @@ ---- ksmserver/server.h.sav 2009-07-23 11:44:55.000000000 +0200 -+++ ksmserver/server.h 2009-07-23 11:47:52.000000000 +0200 -@@ -145,7 +145,8 @@ private: - - KProcess* startApplication( QStringList command, - const QString& clientMachine = QString::null, -- const QString& userId = QString::null ); -+ const QString& userId = QString::null, -+ bool wm = false ); - void executeCommand( const QStringList& command ); - - bool isWM( const KSMClient* client ) const; ---- ksmserver/startup.cpp.sav 2009-07-23 11:44:54.000000000 +0200 -+++ ksmserver/startup.cpp 2009-07-23 11:45:49.000000000 +0200 -@@ -168,7 +168,7 @@ void KSMServer::launchWM( const QValueLi - // when we have a window manager, we start it first and give - // it some time before launching other processes. Results in a - // visually more appealing startup. -- wmProcess = startApplication( wmStartCommands[ 0 ] ); -+ wmProcess = startApplication( wmStartCommands[ 0 ], QString(), QString(), true ); - connect( wmProcess, SIGNAL( processExited( KProcess* )), SLOT( wmProcessChange())); - // there can be possibly more wm's (because of forking for multihead), - // but in such case care only about the process of the first one ---- ksmserver/server.cpp.sav 2009-07-23 11:51:33.000000000 +0200 -+++ ksmserver/server.cpp 2009-07-23 11:49:02.000000000 +0200 -@@ -101,7 +101,7 @@ KSMServer* KSMServer::self() - * to restart applications. - */ - KProcess* KSMServer::startApplication( QStringList command, const QString& clientMachine, -- const QString& userId ) -+ const QString& userId, bool wm ) - { - if ( command.isEmpty() ) - return NULL; -@@ -118,12 +118,26 @@ KProcess* KSMServer::startApplication( Q - command.prepend( clientMachine ); - command.prepend( xonCommand ); // "xon" by default - } -- KProcess* process = new KProcess( this ); -- *process << command; -- // make it auto-delete -- connect( process, SIGNAL( processExited( KProcess* )), process, SLOT( deleteLater())); -- process->start(); -- return process; -+// TODO this function actually should not use KProcess at all and use klauncher (kdeinit) instead. -+// Klauncher should also have support for tracking whether the launched process is still alive -+// or not, so this should be redone. For now, use KProcess for wm's, as they need to be tracked, -+// klauncher for the rest where ksmserver doesn't care. -+ if( wm ) { -+ KProcess* process = new KProcess( this ); -+ *process << command; -+ // make it auto-delete -+ connect( process, SIGNAL( processExited( KProcess* )), process, SLOT( deleteLater())); -+ process->start(); -+ return process; -+ } else { -+ int n = command.count(); -+ QCString app = command[0].latin1(); -+ QValueList<QCString> argList; -+ for ( int i=1; i < n; i++) -+ argList.append( QCString(command[i].latin1())); -+ DCOPRef( launcher ).send( "exec_blind", app, DCOPArg( argList, "QValueList<QCString>" ) ); -+ return NULL; -+ } - } - - /*! Utility function to execute a command on the local machine. Used diff --git a/opensuse/tdebase/ksmserver-suspend.diff b/opensuse/tdebase/ksmserver-suspend.diff deleted file mode 100644 index ef7a88036..000000000 --- a/opensuse/tdebase/ksmserver-suspend.diff +++ /dev/null @@ -1,233 +0,0 @@ -Index: ksmserver/Makefile.am -=================================================================== ---- ksmserver/Makefile.am.orig -+++ ksmserver/Makefile.am -@@ -17,7 +17,7 @@ - - SUBDIRS = . - --INCLUDES= -I$(top_srcdir)/kdmlib $(all_includes) -+INCLUDES= -I$(top_srcdir)/kdmlib $(all_includes) $(DBUS_INCS) - - bin_PROGRAMS = - lib_LTLIBRARIES = -@@ -31,7 +31,7 @@ ksmserver_la_SOURCES = main.cpp server.c - KSMServerInterface.skel server.skel - - ksmserver_la_LDFLAGS = $(all_libraries) -avoid-version -module --ksmserver_la_LIBADD = ../kdmlib/libdmctl.la $(LIB_KDEUI) -+ksmserver_la_LIBADD = ../kdmlib/libdmctl.la $(LIB_KDEUI) -llazy $(DBUS_LIBS) - - picsdir = $(kde_datadir)/ksmserver/pics - pics_DATA = shutdownkonq.png -@@ -44,7 +44,7 @@ updatedir = $(kde_datadir)/kconf_update - EXTRA_PROGRAMS = testsh - testsh_SOURCES = test.cpp - testsh_LDFLAGS = $(all_libraries) $(KDE_RPATH) --testsh_LDADD = $(LIB_KDEUI) shutdowndlg.lo ../kdmlib/libdmctl.la -+testsh_LDADD = $(LIB_KDEUI) shutdowndlg.lo ../kdmlib/libdmctl.la -llazy $(DBUS_LIBS) - - messages: - $(XGETTEXT) *.cpp -o $(podir)/ksmserver.pot -Index: ksmserver/shutdowndlg.cpp -=================================================================== ---- ksmserver/shutdowndlg.cpp.orig -+++ ksmserver/shutdowndlg.cpp -@@ -38,17 +38,23 @@ Copyright (C) 2000 Matthias Ettrich <ett - #include <kpixmapeffect.h> - #include <kdialog.h> - #include <kseparator.h> -+#include <kmessagebox.h> - - #include <sys/types.h> - #include <sys/utsname.h> - #include <unistd.h> - #include <stdlib.h> - #include <dmctl.h> -+#include <liblazy.h> - - #include <X11/Xlib.h> - - #include "shutdowndlg.moc" - -+#define DBUS_HAL_INTERFACE "org.freedesktop.Hal" -+#define DBUS_HAL_SYSTEM_POWER_INTERFACE "org.freedesktop.Hal.Device.SystemPowerManagement" -+#define HAL_UDI_COMPUTER "/org/freedesktop/Hal/devices/computer" -+ - static const int max_faded = 2300; - static const int slice = 20; - -@@ -215,8 +221,8 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* - connect(btnLogout, SIGNAL(clicked()), SLOT(slotLogout())); - - if (maysd) { -- -- // Shutdown -+ -+ // Shutdown - KPushButton* btnHalt = new KPushButton( KGuiItem( i18n("&Turn Off Computer"), "exit"), frame ); - QToolTip::add( btnHalt, i18n( "<qt><h3>Turn Off Computer</h3><p>Log out of the current session and turn off the computer</p></qt>" ) ); - btnHalt->setFont( btnFont ); -@@ -251,13 +257,58 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* - else - targets->insertItem( label, index ); - } -- -+ - btnReboot->setPopup(targets); - connect( targets, SIGNAL(activated(int)), SLOT(slotReboot(int)) ); - } else - QToolTip::add( btnReboot, i18n( "<qt><h3>Restart Computer</h3><p>Log out of the current session and restart the computer</p></qt>" ) ); -- } - -+ int supported = -1; -+ liblazy_hal_get_property_bool(HAL_UDI_COMPUTER, "power_management.can_suspend", &supported); -+ if (supported == 1) -+ suspend_ram = true; -+ else -+ suspend_ram = false; -+ liblazy_hal_get_property_bool(HAL_UDI_COMPUTER, "power_management.can_standby", &supported); -+ if (supported == 1) -+ standby = true; -+ else -+ standby = false; -+ liblazy_hal_get_property_bool(HAL_UDI_COMPUTER, "power_management.can_hibernate", &supported); -+ if (supported == 1) -+ suspend_disk = true; -+ else -+ suspend_disk = false; -+ -+ if (liblazy_hal_is_caller_privileged("org.freedesktop.hal.power-management.hibernate") != 1) -+ suspend_disk = false; -+ if (liblazy_hal_is_caller_privileged("org.freedesktop.hal.power-management.suspend") != 1) -+ suspend_ram = false; -+ if (liblazy_hal_is_caller_privileged("org.freedesktop.hal.power-management.standby") != 1) -+ standby = false; -+ -+ int sum = standby + suspend_ram + suspend_disk; -+ if ( sum ) { -+ QButton *btnSuspend; -+ if (sum > 1) { -+ btnSuspend = new KSMDelayedPushButton( KGuiItem( i18n("&Suspend Computer"), "player_pause"), frame ); -+ QPopupMenu *suspends = new QPopupMenu(frame); -+ if (suspend_disk) -+ suspends->insertItem(i18n("Suspend to Disk"), 1); -+ if (suspend_ram) -+ suspends->insertItem(i18n("Suspend to RAM"), 2); -+ if (standby) -+ suspends->insertItem(i18n("Standby"), 3); -+ connect(suspends, SIGNAL(activated(int)), SLOT(slotSuspend(int))); -+ static_cast<KSMDelayedPushButton*>(btnSuspend)->setPopup(suspends); -+ } else { -+ btnSuspend = new KPushButton( KGuiItem( i18n("&Suspend Computer"), "player_pause"), frame ); -+ } -+ btnSuspend->setFont( btnFont ); -+ buttonlay->addWidget( btnSuspend ); -+ connect(btnSuspend, SIGNAL(clicked()), SLOT(slotSuspend())); -+ } -+ } - buttonlay->addStretch( 1 ); - - // Separator -@@ -270,6 +321,80 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* - - } - -+void KSMShutdownDlg::slotSuspend() -+{ -+ int error = 0; -+ int wake = 0; -+ DBusMessage *reply; -+ -+ if (suspend_disk) -+ error = liblazy_dbus_system_send_method_call(DBUS_HAL_INTERFACE, -+ HAL_UDI_COMPUTER, -+ DBUS_HAL_SYSTEM_POWER_INTERFACE, -+ "Hibernate", -+ &reply, -+ DBUS_TYPE_INVALID); -+ else if (suspend_ram) -+ error = liblazy_dbus_system_send_method_call(DBUS_HAL_INTERFACE, -+ HAL_UDI_COMPUTER, -+ DBUS_HAL_SYSTEM_POWER_INTERFACE, -+ "Suspend", -+ &reply, -+ DBUS_TYPE_INT32, -+ &wake, -+ DBUS_TYPE_INVALID); -+ else -+ error = liblazy_dbus_system_send_method_call(DBUS_HAL_INTERFACE, -+ HAL_UDI_COMPUTER, -+ DBUS_HAL_SYSTEM_POWER_INTERFACE, -+ "Standby", -+ &reply, -+ DBUS_TYPE_INVALID); -+ -+ if (error) -+ KMessageBox::error(this, i18n("Suspend failed")); -+ -+ // possibly after resume :) -+ reject(); -+} -+ -+void KSMShutdownDlg::slotSuspend(int id) -+{ -+ int error = 0; -+ int wake = 0; -+ DBusMessage *reply; -+ -+ if (suspend_disk && id == 1) { -+ error = liblazy_dbus_system_send_method_call(DBUS_HAL_INTERFACE, -+ HAL_UDI_COMPUTER, -+ DBUS_HAL_SYSTEM_POWER_INTERFACE, -+ "Hibernate", -+ &reply, -+ DBUS_TYPE_INVALID); -+ } else if (suspend_ram && id == 2) -+ error = liblazy_dbus_system_send_method_call(DBUS_HAL_INTERFACE, -+ HAL_UDI_COMPUTER, -+ DBUS_HAL_SYSTEM_POWER_INTERFACE, -+ "Suspend", -+ &reply, -+ DBUS_TYPE_INT32, -+ &wake, -+ DBUS_TYPE_INVALID); -+ else if (standby && id == 3) -+ error = liblazy_dbus_system_send_method_call(DBUS_HAL_INTERFACE, -+ HAL_UDI_COMPUTER, -+ DBUS_HAL_SYSTEM_POWER_INTERFACE, -+ "Standby", -+ &reply, -+ DBUS_TYPE_INVALID); -+ else -+ return; -+ if (error) -+ KMessageBox::error(this, i18n("Suspend failed")); -+ -+ // possibly after resume :) -+ reject(); -+} - - void KSMShutdownDlg::slotLogout() - { -Index: ksmserver/shutdowndlg.h -=================================================================== ---- ksmserver/shutdowndlg.h.orig -+++ ksmserver/shutdowndlg.h -@@ -60,6 +60,8 @@ public slots: - void slotHalt(); - void slotReboot(); - void slotReboot(int); -+ void slotSuspend(); -+ void slotSuspend(int); - - protected: - ~KSMShutdownDlg() {}; -@@ -70,6 +72,7 @@ private: - QString m_bootOption; - QPopupMenu *targets; - QStringList rebootOptions; -+ bool suspend_disk, suspend_ram, standby; - }; - - class KSMDelayedPushButton : public KPushButton diff --git a/opensuse/tdebase/ksmserver-timed.diff b/opensuse/tdebase/ksmserver-timed.diff deleted file mode 100644 index 89f4a7004..000000000 --- a/opensuse/tdebase/ksmserver-timed.diff +++ /dev/null @@ -1,700 +0,0 @@ -Index: ksmserver/KSMServerInterface.h -=================================================================== ---- ksmserver/KSMServerInterface.h.orig -+++ ksmserver/KSMServerInterface.h -@@ -22,6 +22,8 @@ k_dcop: - - virtual void suspendStartup( QCString ) = 0; - virtual void resumeStartup( QCString ) = 0; -+ -+ virtual void logoutTimed( int, int, QString ) = 0; - }; - - #endif -Index: ksmserver/Makefile.am -=================================================================== ---- ksmserver/Makefile.am.orig -+++ ksmserver/Makefile.am -@@ -28,7 +28,7 @@ ksmserver_la_METASOURCES = AUTO - # Order is important for --enable-final! - ksmserver_la_SOURCES = main.cpp server.cpp shutdowndlg.cpp \ - legacy.cpp startup.cpp shutdown.cpp client.cpp \ -- KSMServerInterface.skel server.skel -+ KSMServerInterface.skel server.skel timed.ui - - ksmserver_la_LDFLAGS = $(all_libraries) -avoid-version -module - ksmserver_la_LIBADD = ../kdmlib/libdmctl.la $(LIB_KDEUI) -llazy $(DBUS_LIBS) -@@ -42,7 +42,7 @@ updatedir = $(kde_datadir)/kconf_update - - - EXTRA_PROGRAMS = testsh --testsh_SOURCES = test.cpp -+testsh_SOURCES = test.cpp timed.ui - testsh_LDFLAGS = $(all_libraries) $(KDE_RPATH) - testsh_LDADD = $(LIB_KDEUI) shutdowndlg.lo ../kdmlib/libdmctl.la -llazy $(DBUS_LIBS) - -Index: ksmserver/server.h -=================================================================== ---- ksmserver/server.h.orig -+++ ksmserver/server.h -@@ -85,6 +85,7 @@ public: - // public API - void restoreSession( QString sessionName ); - void startDefaultSession(); -+ - void shutdown( KApplication::ShutdownConfirm confirm, - KApplication::ShutdownType sdtype, - KApplication::ShutdownMode sdmode ); -@@ -92,6 +93,11 @@ public: - virtual void suspendStartup( QCString app ); - virtual void resumeStartup( QCString app ); - -+ bool checkStatus( bool &logoutConfirmed, bool &maysd, -+ KApplication::ShutdownConfirm confirm, -+ KApplication::ShutdownType sdtype, -+ KApplication::ShutdownMode sdmode ); -+ - public slots: - void cleanUp(); - -@@ -142,6 +148,11 @@ private: - bool defaultSession() const; // empty session - void setupXIOErrorHandler(); - -+ void shutdownInternal( KApplication::ShutdownConfirm confirm, -+ KApplication::ShutdownType sdtype, -+ KApplication::ShutdownMode sdmode, -+ QString bootOption = QString::null ); -+ - void performLegacySessionSave(); - void storeLegacySession( KConfig* config ); - void restoreLegacySession( KConfig* config ); -@@ -157,6 +168,7 @@ private: - - // public dcop interface - void logout( int, int, int ); -+ virtual void logoutTimed( int, int, QString ); - QStringList sessionList(); - QString currentSession(); - void saveCurrentSession(); -Index: ksmserver/shutdown.cpp -=================================================================== ---- ksmserver/shutdown.cpp.orig -+++ ksmserver/shutdown.cpp -@@ -93,14 +93,16 @@ void KSMServer::logout( int confirm, int - (KApplication::ShutdownMode)sdmode ); - } - --void KSMServer::shutdown( KApplication::ShutdownConfirm confirm, -- KApplication::ShutdownType sdtype, KApplication::ShutdownMode sdmode ) -+bool KSMServer::checkStatus( bool &logoutConfirmed, bool &maysd, -+ KApplication::ShutdownConfirm confirm, -+ KApplication::ShutdownType sdtype, -+ KApplication::ShutdownMode sdmode ) - { - pendingShutdown.stop(); - if( dialogActive ) -- return; -+ return false; - if( state >= Shutdown ) // already performing shutdown -- return; -+ return false; - if( state != Idle ) // performing startup - { - // perform shutdown as soon as startup is finished, in order to avoid saving partial session -@@ -111,25 +113,44 @@ void KSMServer::shutdown( KApplication:: - pendingShutdown_sdtype = sdtype; - pendingShutdown_sdmode = sdmode; - } -- return; -+ return false; - } - - KConfig *config = KGlobal::config(); - config->reparseConfiguration(); // config may have changed in the KControl module - - config->setGroup("General" ); -- bool logoutConfirmed = -+ logoutConfirmed = - (confirm == KApplication::ShutdownConfirmYes) ? false : -- (confirm == KApplication::ShutdownConfirmNo) ? true : -- !config->readBoolEntry( "confirmLogout", true ); -- bool maysd = false; -+ (confirm == KApplication::ShutdownConfirmNo) ? true : -+ !config->readBoolEntry( "confirmLogout", true ); -+ maysd = false; - if (config->readBoolEntry( "offerShutdown", true ) && DM().canShutdown()) - maysd = true; - if (!maysd) { - if (sdtype != KApplication::ShutdownTypeNone && - sdtype != KApplication::ShutdownTypeDefault && - logoutConfirmed) -- return; /* unsupported fast shutdown */ -+ return false; /* unsupported fast shutdown */ -+ } -+ -+ return true; -+} -+ -+void KSMServer::shutdownInternal( KApplication::ShutdownConfirm confirm, -+ KApplication::ShutdownType sdtype, -+ KApplication::ShutdownMode sdmode, -+ QString bopt ) -+{ -+ bool maysd = false; -+ bool logoutConfirmed = false; -+ if ( !checkStatus( logoutConfirmed, maysd, confirm, sdtype, sdmode ) ) -+ return; -+ -+ KConfig *config = KGlobal::config(); -+ -+ config->setGroup("General" ); -+ if (!maysd) { - sdtype = KApplication::ShutdownTypeNone; - } else if (sdtype == KApplication::ShutdownTypeDefault) - sdtype = (KApplication::ShutdownType) -@@ -138,7 +159,6 @@ void KSMServer::shutdown( KApplication:: - sdmode = KApplication::ShutdownModeInteractive; - - dialogActive = true; -- QString bopt; - if ( !logoutConfirmed ) { - KSMShutdownFeedback::start(); // make the screen gray - logoutConfirmed = -@@ -204,6 +224,42 @@ void KSMServer::shutdown( KApplication:: - dialogActive = false; - } - -+void KSMServer::shutdown( KApplication::ShutdownConfirm confirm, -+ KApplication::ShutdownType sdtype, KApplication::ShutdownMode sdmode ) -+{ -+ shutdownInternal( confirm, sdtype, sdmode ); -+} -+ -+#include <kmessagebox.h> -+ -+void KSMServer::logoutTimed( int sdtype, int sdmode, QString bootOption ) -+{ -+ int confirmDelay; -+ -+ KConfig* config = KGlobal::config(); -+ config->setGroup( "General" ); -+ -+ if ( sdtype == KApplication::ShutdownTypeHalt ) -+ confirmDelay = config->readNumEntry( "confirmShutdownDelay", 31 ); -+ else if ( sdtype == KApplication::ShutdownTypeReboot ) -+ confirmDelay = config->readNumEntry( "confirmRebootDelay", 31 ); -+ else -+ confirmDelay = config->readNumEntry( "confirmLogoutDelay", 31 ); -+ -+ bool result = true; -+ if (confirmDelay) { -+ KSMShutdownFeedback::start(); // make the screen gray -+ result = KSMDelayedMessageBox::showTicker( (KApplication::ShutdownType)sdtype, bootOption, confirmDelay ); -+ KSMShutdownFeedback::stop(); // make the screen become normal again -+ } -+ -+ if ( result ) -+ shutdownInternal( KApplication::ShutdownConfirmNo, -+ (KApplication::ShutdownType)sdtype, -+ (KApplication::ShutdownMode)sdmode, -+ bootOption ); -+} -+ - void KSMServer::pendingShutdownTimeout() - { - shutdown( pendingShutdown_confirm, pendingShutdown_sdtype, pendingShutdown_sdmode ); -Index: ksmserver/shutdowndlg.cpp -=================================================================== ---- ksmserver/shutdowndlg.cpp.orig -+++ ksmserver/shutdowndlg.cpp -@@ -25,6 +25,7 @@ Copyright (C) 2000 Matthias Ettrich <ett - #include <qimage.h> - - #include <klocale.h> -+#include <kconfig.h> - #include <kapplication.h> - #include <kdebug.h> - #include <kpushbutton.h> -@@ -488,3 +489,67 @@ void KSMDelayedPushButton::slotTimeout() - popt->stop(); - setDown(false); - } -+ -+KSMDelayedMessageBox::KSMDelayedMessageBox( KApplication::ShutdownType sdtype, const QString &bootOption, int confirmDelay ) -+ : TimedLogoutDlg( 0, 0, true, WType_Popup ), m_remaining(confirmDelay) -+{ -+ if ( sdtype == KApplication::ShutdownTypeHalt ) -+ { -+ m_title->setText( i18n( "Would you like to turn off your computer?" ) ); -+ m_template = i18n( "This computer will turn off automatically\n" -+ "after %1 seconds." ); -+ m_logo->setPixmap( BarIcon( "exit", 48 ) ); -+ } else if ( sdtype == KApplication::ShutdownTypeReboot ) -+ { -+ if (bootOption.isEmpty()) -+ m_title->setText( i18n( "Would you like to reboot your computer?" ) ); -+ else -+ m_title->setText( i18n( "Would you like to reboot to \"%1\"?" ).arg(bootOption) ); -+ m_template = i18n( "This computer will reboot automatically\n" -+ "after %1 seconds." ); -+ m_logo->setPixmap( BarIcon( "reload", 48 ) ); -+ } else { -+ m_title->setText( i18n( "Would you like to end your current session?" ) ); -+ m_template = i18n( "This session will end\n" -+ "after %1 seconds automatically." ); -+ m_logo->setPixmap( BarIcon( "previous", 48 ) ); -+ } -+ -+ updateText(); -+ adjustSize(); -+ if ( double( height() ) / width() < 0.25 ) -+ { -+ setFixedHeight( qRound( width() * 0.3 ) ); -+ adjustSize(); -+ } -+ QTimer *timer = new QTimer( this ); -+ timer->start( 1000 ); -+ connect( timer, SIGNAL( timeout() ), SLOT( updateText() ) ); -+ KDialog::centerOnScreen(this); -+} -+ -+void KSMDelayedMessageBox::updateText() -+{ -+ m_remaining--; -+ if ( m_remaining == 0 ) -+ { -+ accept(); -+ return; -+ } -+ m_text->setText( m_template.arg( m_remaining ) ); -+} -+ -+bool KSMDelayedMessageBox::showTicker( KApplication::ShutdownType sdtype, const QString &bootOption, int confirmDelay ) -+{ -+ kapp->enableStyles(); -+ KSMDelayedMessageBox msg( sdtype, bootOption, confirmDelay ); -+ QSize sh = msg.sizeHint(); -+ QRect rect = KGlobalSettings::desktopGeometry(QCursor::pos()); -+ -+ msg.move(rect.x() + (rect.width() - sh.width())/2, -+ rect.y() + (rect.height() - sh.height())/2); -+ bool result = msg.exec(); -+ -+ kapp->disableStyles(); -+ return result; -+} -Index: ksmserver/shutdowndlg.h -=================================================================== ---- ksmserver/shutdowndlg.h.orig -+++ ksmserver/shutdowndlg.h -@@ -17,6 +17,7 @@ class QVButtonGroup; - class QPopupMenu; - class QTimer; - -+#include "timed.h" - #include <kapplication.h> - - // The (singleton) widget that makes the desktop gray. -@@ -94,4 +95,22 @@ private: - QTimer *popt; - }; - -+class QLabel; -+ -+class KSMDelayedMessageBox : public TimedLogoutDlg -+{ -+ Q_OBJECT -+ -+public: -+ KSMDelayedMessageBox( KApplication::ShutdownType sdtype, const QString &bootOption, int confirmDelay ); -+ static bool showTicker( KApplication::ShutdownType sdtype, const QString &bootOption, int confirmDelay ); -+ -+protected slots: -+ void updateText(); -+ -+private: -+ QString m_template; -+ int m_remaining; -+}; -+ - #endif -Index: ksmserver/test.cpp -=================================================================== ---- ksmserver/test.cpp.orig -+++ ksmserver/test.cpp -@@ -14,11 +14,16 @@ main(int argc, char *argv[]) - a.iconLoader()->addAppDir("ksmserver"); - KSMShutdownFeedback::start(); - -+ // ShutdownTypeNone == Logout == 0 -+ // ShutdownTypeReboot == 1 -+ // ShutdownTypeHalt == 2 - KApplication::ShutdownType sdtype = KApplication::ShutdownTypeNone; - QString bopt; -+ KSMDelayedMessageBox::showTicker( sdtype ); -+ /* - (void)KSMShutdownDlg::confirmShutdown( true, - sdtype, -- bopt ); -+ bopt );*/ - /* (void)KSMShutdownDlg::confirmShutdown( false, - sdtype, - bopt ); */ -Index: ksmserver/timed.ui -=================================================================== ---- /dev/null -+++ ksmserver/timed.ui -@@ -0,0 +1,352 @@ -+<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> -+<class>TimedLogoutDlg</class> -+<widget class="QDialog"> -+ <property name="name"> -+ <cstring>TimedLogoutDlg</cstring> -+ </property> -+ <property name="geometry"> -+ <rect> -+ <x>0</x> -+ <y>0</y> -+ <width>381</width> -+ <height>131</height> -+ </rect> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>5</hsizetype> -+ <vsizetype>5</vsizetype> -+ <horstretch>0</horstretch> -+ <verstretch>0</verstretch> -+ </sizepolicy> -+ </property> -+ <property name="caption"> -+ <string>Confirmation</string> -+ </property> -+ <vbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <property name="margin"> -+ <number>0</number> -+ </property> -+ <property name="spacing"> -+ <number>0</number> -+ </property> -+ <widget class="QFrame"> -+ <property name="name"> -+ <cstring>frame3</cstring> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>5</hsizetype> -+ <vsizetype>5</vsizetype> -+ <horstretch>0</horstretch> -+ <verstretch>0</verstretch> -+ </sizepolicy> -+ </property> -+ <property name="frameShape"> -+ <enum>StyledPanel</enum> -+ </property> -+ <property name="frameShadow"> -+ <enum>Raised</enum> -+ </property> -+ <property name="lineWidth"> -+ <number>2</number> -+ </property> -+ <property name="margin"> -+ <number>0</number> -+ </property> -+ <property name="midLineWidth"> -+ <number>0</number> -+ </property> -+ <hbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <widget class="QLayoutWidget"> -+ <property name="name"> -+ <cstring>layout10</cstring> -+ </property> -+ <vbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <property name="margin"> -+ <number>0</number> -+ </property> -+ <property name="spacing"> -+ <number>0</number> -+ </property> -+ <widget class="QLayoutWidget"> -+ <property name="name"> -+ <cstring>layout8</cstring> -+ </property> -+ <hbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <widget class="QLayoutWidget"> -+ <property name="name"> -+ <cstring>layout6</cstring> -+ </property> -+ <vbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <property name="margin"> -+ <number>0</number> -+ </property> -+ <property name="spacing"> -+ <number>0</number> -+ </property> -+ <spacer> -+ <property name="name"> -+ <cstring>spacer3_2</cstring> -+ </property> -+ <property name="orientation"> -+ <enum>Vertical</enum> -+ </property> -+ <property name="sizeType"> -+ <enum>MinimumExpanding</enum> -+ </property> -+ <property name="sizeHint"> -+ <size> -+ <width>20</width> -+ <height>2</height> -+ </size> -+ </property> -+ </spacer> -+ <widget class="QLabel"> -+ <property name="name"> -+ <cstring>m_logo</cstring> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>1</hsizetype> -+ <vsizetype>1</vsizetype> -+ <horstretch>0</horstretch> -+ <verstretch>0</verstretch> -+ </sizepolicy> -+ </property> -+ <property name="minimumSize"> -+ <size> -+ <width>48</width> -+ <height>48</height> -+ </size> -+ </property> -+ <property name="scaledContents"> -+ <bool>true</bool> -+ </property> -+ </widget> -+ <spacer> -+ <property name="name"> -+ <cstring>spacer3</cstring> -+ </property> -+ <property name="orientation"> -+ <enum>Vertical</enum> -+ </property> -+ <property name="sizeType"> -+ <enum>MinimumExpanding</enum> -+ </property> -+ <property name="sizeHint"> -+ <size> -+ <width>20</width> -+ <height>2</height> -+ </size> -+ </property> -+ </spacer> -+ </vbox> -+ </widget> -+ <widget class="QLayoutWidget"> -+ <property name="name"> -+ <cstring>layout7</cstring> -+ </property> -+ <vbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <property name="margin"> -+ <number>7</number> -+ </property> -+ <widget class="QLabel"> -+ <property name="name"> -+ <cstring>m_title</cstring> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>7</hsizetype> -+ <vsizetype>0</vsizetype> -+ <horstretch>0</horstretch> -+ <verstretch>0</verstretch> -+ </sizepolicy> -+ </property> -+ <property name="font"> -+ <font> -+ <bold>1</bold> -+ </font> -+ </property> -+ <property name="text"> -+ <string>Would you like to shutdown your computer?</string> -+ </property> -+ <property name="textFormat"> -+ <enum>PlainText</enum> -+ </property> -+ <property name="alignment"> -+ <set>AlignVCenter|AlignLeft</set> -+ </property> -+ </widget> -+ <widget class="QLabel"> -+ <property name="name"> -+ <cstring>m_text</cstring> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>7</hsizetype> -+ <vsizetype>5</vsizetype> -+ <horstretch>0</horstretch> -+ <verstretch>0</verstretch> -+ </sizepolicy> -+ </property> -+ <property name="text"> -+ <string>If you do not act, your computer will shutdown -+after X automatically.</string> -+ </property> -+ <property name="textFormat"> -+ <enum>RichText</enum> -+ </property> -+ <property name="alignment"> -+ <set>WordBreak|AlignVCenter</set> -+ </property> -+ </widget> -+ <spacer> -+ <property name="name"> -+ <cstring>spacer4</cstring> -+ </property> -+ <property name="orientation"> -+ <enum>Vertical</enum> -+ </property> -+ <property name="sizeType"> -+ <enum>Preferred</enum> -+ </property> -+ <property name="sizeHint"> -+ <size> -+ <width>30</width> -+ <height>0</height> -+ </size> -+ </property> -+ </spacer> -+ </vbox> -+ </widget> -+ </hbox> -+ </widget> -+ <widget class="QLayoutWidget"> -+ <property name="name"> -+ <cstring>layout9</cstring> -+ </property> -+ <hbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <spacer> -+ <property name="name"> -+ <cstring>spacer2</cstring> -+ </property> -+ <property name="orientation"> -+ <enum>Horizontal</enum> -+ </property> -+ <property name="sizeType"> -+ <enum>Expanding</enum> -+ </property> -+ <property name="sizeHint"> -+ <size> -+ <width>90</width> -+ <height>20</height> -+ </size> -+ </property> -+ </spacer> -+ <widget class="QPushButton"> -+ <property name="name"> -+ <cstring>pushButton1</cstring> -+ </property> -+ <property name="text"> -+ <string>Confirm</string> -+ </property> -+ <property name="on"> -+ <bool>false</bool> -+ </property> -+ </widget> -+ <spacer> -+ <property name="name"> -+ <cstring>spacer2_2</cstring> -+ </property> -+ <property name="orientation"> -+ <enum>Horizontal</enum> -+ </property> -+ <property name="sizeType"> -+ <enum>Expanding</enum> -+ </property> -+ <property name="sizeHint"> -+ <size> -+ <width>90</width> -+ <height>20</height> -+ </size> -+ </property> -+ </spacer> -+ <widget class="QPushButton"> -+ <property name="name"> -+ <cstring>pushButton2</cstring> -+ </property> -+ <property name="sizePolicy"> -+ <sizepolicy> -+ <hsizetype>1</hsizetype> -+ <vsizetype>5</vsizetype> -+ <horstretch>0</horstretch> -+ <verstretch>0</verstretch> -+ </sizepolicy> -+ </property> -+ <property name="text"> -+ <string>Cancel</string> -+ </property> -+ </widget> -+ <spacer> -+ <property name="name"> -+ <cstring>spacer2_2_2</cstring> -+ </property> -+ <property name="orientation"> -+ <enum>Horizontal</enum> -+ </property> -+ <property name="sizeType"> -+ <enum>Expanding</enum> -+ </property> -+ <property name="sizeHint"> -+ <size> -+ <width>90</width> -+ <height>20</height> -+ </size> -+ </property> -+ </spacer> -+ </hbox> -+ </widget> -+ </vbox> -+ </widget> -+ </hbox> -+ </widget> -+ </vbox> -+</widget> -+<connections> -+ <connection> -+ <sender>pushButton1</sender> -+ <signal>clicked()</signal> -+ <receiver>TimedLogoutDlg</receiver> -+ <slot>accept()</slot> -+ </connection> -+ <connection> -+ <sender>pushButton2</sender> -+ <signal>clicked()</signal> -+ <receiver>TimedLogoutDlg</receiver> -+ <slot>reject()</slot> -+ </connection> -+</connections> -+<layoutdefaults spacing="6" margin="11"/> -+</UI> diff --git a/opensuse/tdebase/ksmserver-tooltips.diff b/opensuse/tdebase/ksmserver-tooltips.diff deleted file mode 100644 index c847907af..000000000 --- a/opensuse/tdebase/ksmserver-tooltips.diff +++ /dev/null @@ -1,38 +0,0 @@ -Index: ksmserver/shutdowndlg.cpp -=================================================================== ---- ksmserver/shutdowndlg.cpp.orig -+++ ksmserver/shutdowndlg.cpp -@@ -126,6 +126,7 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* - - // End session - KPushButton* btnLogout = new KPushButton( KGuiItem( i18n("&End Current Session"), "undo"), frame ); -+ QToolTip::add( btnLogout, i18n( "<qt><h3>End Current Session</h3><p>Log out of the current session to login with a different user</p></qt>" ) ); - QFont btnFont = btnLogout->font(); - buttonlay->addWidget( btnLogout ); - connect(btnLogout, SIGNAL(clicked()), SLOT(slotLogout())); -@@ -134,6 +135,7 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* - - // Shutdown - KPushButton* btnHalt = new KPushButton( KGuiItem( i18n("&Turn Off Computer"), "exit"), frame ); -+ QToolTip::add( btnHalt, i18n( "<qt><h3>Turn Off Computer</h3><p>Log out of the current session and turn off the computer</p></qt>" ) ); - btnHalt->setFont( btnFont ); - buttonlay->addWidget( btnHalt ); - connect(btnHalt, SIGNAL(clicked()), SLOT(slotHalt())); -@@ -142,6 +144,7 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* - - // Reboot - KSMDelayedPushButton* btnReboot = new KSMDelayedPushButton( KGuiItem( i18n("&Restart Computer"), "reload"), frame ); -+ QToolTip::add( btnReboot, i18n( "<qt><h3>Restart Computer</h3><p>Log out of the current session and restart the computer</p><p>Hold the mouse button or the space bar for a short while to get a list of options what to boot</p></qt>" ) ); - btnReboot->setFont( btnFont ); - buttonlay->addWidget( btnReboot ); - -@@ -168,7 +171,8 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* - - btnReboot->setPopup(targets); - connect( targets, SIGNAL(activated(int)), SLOT(slotReboot(int)) ); -- } -+ } else -+ QToolTip::add( btnReboot, i18n( "<qt><h3>Restart Computer</h3><p>Log out of the current session and restart the computer</p></qt>" ) ); - } - - buttonlay->addStretch( 1 ); diff --git a/opensuse/tdebase/ksplashml.patch b/opensuse/tdebase/ksplashml.patch deleted file mode 100644 index 5d3ca0cf7..000000000 --- a/opensuse/tdebase/ksplashml.patch +++ /dev/null @@ -1,19 +0,0 @@ -Index: ksplashml/kcmksplash/installer.cpp -=================================================================== ---- ksplashml/kcmksplash/installer.cpp.orig -+++ ksplashml/kcmksplash/installer.cpp -@@ -474,6 +474,14 @@ void SplashInstaller::slotTest() - KMessageBox::error(this,i18n("Unable to start ksplashsimple.")); - return; - } -+ if( themeName.startsWith( "ksplashx-" )) -+ { -+ KProcess proc; -+ proc << "ksplashx" << themeName.mid( 9 ) << "--test"; -+ if (!proc.start(KProcess::Block)) -+ KMessageBox::error(this,i18n("Unable to start ksplashx.")); -+ return; -+ } - KProcess proc; - proc << "ksplash" << "--test" << "--theme" << themeName; - if (!proc.start(KProcess::Block)) diff --git a/opensuse/tdebase/ksysguard-slp-ratelimit.diff b/opensuse/tdebase/ksysguard-slp-ratelimit.diff deleted file mode 100644 index 7859ed096..000000000 --- a/opensuse/tdebase/ksysguard-slp-ratelimit.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- ksysguard/gui/ksysguard.cc -+++ ksysguard/gui/ksysguard.cc -@@ -407,7 +407,11 @@ - } - - #if HAVE_SLP -- rescanSLP(); -+ static int rate; -+ if (++rate > 100) { -+ rate = 0; -+ rescanSLP(); -+ } - #endif - } - diff --git a/opensuse/tdebase/ksysguardd-openslp.diff b/opensuse/tdebase/ksysguardd-openslp.diff deleted file mode 100644 index 4cb0e3795..000000000 --- a/opensuse/tdebase/ksysguardd-openslp.diff +++ /dev/null @@ -1,288 +0,0 @@ ---- ksysguard/configure.in.in -+++ ksysguard/configure.in.in -@@ -45,5 +45,34 @@ - AC_SUBST(LIBHOSTS) - AC_SUBST(LIBSENSORS) - -+# check for SLP -+dnl define the configure option that disables slp -+AC_ARG_ENABLE(slp, [ --disable-slp don't require libslp (ksysguard do not find daemons) ], with_slp=$enableval, with_slp=yes) -+if test "$with_slp" = "yes"; then -+AC_MSG_CHECKING(for SLP support) -+save_slptest_LIBS="$LIBS" -+save_slptest_LDFLAGS="$LDFLAGS" -+save_slptest_CPPFLAGS="$CPPFLAGS" -+LDFLAGS="$all_libraries $LDFLAGS" -+CPPFLAGS="$CPPFLAGS $all_includes" -+LIBS="-lslp" -+AC_TRY_LINK( [ -+ #include <slp.h> -+ ],[ -+ SLPOpen(0, SLP_FALSE, (SLPHandle*) 0); -+ ],[ -+ AC_DEFINE(HAVE_SLP,1,[Define if SLP is available]) -+ LIB_SLP="-lslp" -+ AC_MSG_RESULT(yes) -+ ],[ -+ AC_MSG_RESULT(no) -+ LIB_SLP="" -+]) -+CPPFLAGS=$save_slptest_CPPFLAGS -+LDFLAGS=$save_slptest_LDFLAGS -+LIBS=$save_slptest_LIBS -+fi -+AC_SUBST(LIB_SLP) -+ - dnl Check for dell laptop support - AM_CONDITIONAL(supports_i8k, test -f /proc/i8k) ---- ksysguard/example/ksysguarddrc -+++ ksysguard/example/ksysguarddrc -@@ -1,5 +1,8 @@ - # /etc/ksysguardd.conf - -+# refresh SLP registration -+SLPrefresh=1800 -+ - # LogFiles: the list of all available logfiles - LogFiles=messages:/var/log/messages,kern:/var/log/kern.log,daemon:/var/log/daemon.log - ---- ksysguard/gui/Makefile.am -+++ ksysguard/gui/Makefile.am -@@ -31,7 +31,7 @@ - ksysguard_LDADD = \ - ksgrd/libksgrd.la \ - SensorDisplayLib/libsensordisplays.la \ -- $(LIB_KDEUI) $(LIB_KIO) $(LIB_KDNSSD) -+ $(LIB_KDEUI) $(LIB_KIO) $(LIB_KDNSSD) $(LIB_SLP) - ksysguard_LDFLAGS = $(all_libraries) $(KDE_RPATH) - - kpm_SOURCES = kpm.c ---- ksysguard/gui/ksysguard.cc -+++ ksysguard/gui/ksysguard.cc -@@ -34,6 +34,8 @@ - #include <stdlib.h> - #include <unistd.h> - -+#include <qregexp.h> -+ - #include <kaboutdata.h> - #include <kaction.h> - #include <kapplication.h> -@@ -280,6 +282,46 @@ - mSplitter->setSizes( sizes ); - } - -+#if HAVE_SLP -+ -+SLPBoolean MySLPSrvURLCallback( SLPHandle phslp, -+ const char* srvurl, -+ unsigned short lifetime, -+ SLPError errcode, -+ void* cookie ) -+{ -+ QRegExp r("^service:ksysguardd.kde://(\\w+):(.*)$"); -+ -+ if ( r.search(srvurl) >= 0 ){ -+ QString host( r.cap(1) ); -+ int port = r.cap(2).toInt() ; -+ -+ if ( !host.isEmpty() && port > 0 ) -+ KSGRD::SensorMgr->engage( host, "", "", port ); -+ }; -+ return SLP_TRUE; -+} -+ -+void TopLevel::rescanSLP( bool enableErrorPopup ) -+{ -+ SLPHandle phslp; -+ SLPError result; -+ result = SLPOpen( NULL, SLP_FALSE, &phslp); -+ if (result != SLP_OK) -+ qWarning( "SLPOpen failed" ); // TODO: KMessagebox -+ else { -+ result = SLPFindSrvs( phslp, -+ "service:ksysguardd.kde", -+ "", // TODO: Scope selector -+ "", // all services -+ MySLPSrvURLCallback, -+ this ); -+ if (result != SLP_OK) -+ qWarning( "unable to register SLP service" ); // TODO: KMessageBox -+ } -+} -+#endif -+ - void TopLevel::initStatusBar() - { - KSGRD::SensorMgr->engage( "localhost", "", "ksysguardd" ); -@@ -363,6 +405,10 @@ - KSGRD::SensorMgr->sendRequest( "localhost", "mem/swap/used", - (KSGRD::SensorClient*)this, 4 ); - } -+ -+#if HAVE_SLP -+ rescanSLP(); -+#endif - } - - bool TopLevel::queryClose() ---- ksysguard/gui/ksysguard.h -+++ ksysguard/gui/ksysguard.h -@@ -24,6 +24,8 @@ - #ifndef KSG_KSYSGUARD_H - #define KSG_KSYSGUARD_H - -+#include <config.h> -+ - #include <qevent.h> - - #include <dcopclient.h> -@@ -34,6 +36,10 @@ - - #include <ksgrd/SensorClient.h> - -+#if HAVE_SLP -+#include <slp.h> -+#endif -+ - class KRecentFilesAction; - class KToggleAction; - -@@ -77,6 +83,9 @@ - virtual void customEvent( QCustomEvent* ); - virtual void timerEvent( QTimerEvent* ); - virtual bool queryClose(); -+#if HAVE_SLP -+ virtual void rescanSLP( bool enableErrorPopup = FALSE ); -+#endif - - protected slots: - void connectHost(); ---- ksysguard/ksysguardd/Makefile.am -+++ ksysguard/ksysguardd/Makefile.am -@@ -31,5 +31,5 @@ - bin_PROGRAMS = ksysguardd - - ksysguardd_SOURCES = Command.c conf.c ksysguardd.c PWUIDCache.c --ksysguardd_LDFLAGS = $(all_libraries) -+ksysguardd_LDFLAGS = $(all_libraries) $(LIB_SLP) - ksysguardd_LDADD = $(top_builddir)/ksysguard/ksysguardd/$(UNAME)/libksysguardd.a ../CContLib/libccont.a -lkdefakes_nonpic $(LIBHOSTS) $(LIB_DNSSD) $(LIB_KINFO) ---- ksysguard/ksysguardd/conf.c -+++ ksysguard/ksysguardd/conf.c -@@ -56,6 +56,7 @@ - char *begin, *token, *tmp; - ConfigLogFile *confLog; - -+ confSLPrefresh = 0; - LogFileList = new_ctnr(); - SensorList = new_ctnr(); - -@@ -93,6 +94,10 @@ - if ( line[ strlen( line ) - 1 ] == '\n' ) - line[ strlen( line ) - 1 ] = '\0'; - -+ if ( !strncmp( line, "SLPrefresh=", 11 ) ) { -+ confSLPrefresh = atoi( line + 11 ); -+ }; -+ - if ( !strncmp( line, "RegisterDomain",14) && (begin = strchr( line, '=' )) ) RegisterDomain=strdup(begin+1); - - if ( !strncmp( line, "LogFiles", 8 ) && (begin = strchr( line, '=' )) ) { ---- ksysguard/ksysguardd/conf.h -+++ ksysguard/ksysguardd/conf.h -@@ -30,6 +30,8 @@ - - extern char* RegisterDomain; - -+short confSLPrefresh; -+ - void parseConfigFile( const char *filename ); - void freeConfigFile(); - ---- ksysguard/ksysguardd/ksysguardd.c -+++ ksysguard/ksysguardd/ksysguardd.c -@@ -43,6 +43,10 @@ - #ifdef HAVE_DNSSD - #include <dns_sd.h> - #endif -+#if HAVE_SLP -+#include <slp.h> -+#endif -+ - #include "modules.h" - - #include "ksysguardd.h" -@@ -348,6 +352,62 @@ - #endif - - -+#if HAVE_SLP -+void mySLPRegReport(SLPHandle hslp, SLPError errcode, void *cookie) -+{ -+ if (errcode) -+ log_error( "SLP (de)registration error" ); -+} -+ -+void register_slp(); -+ -+void refresh_slp() -+{ -+ register_slp(); -+} -+ -+void register_slp() -+{ -+ SLPHandle phslp; -+ SLPError result; -+ int slp_timeout = confSLPrefresh; -+ struct sigaction act, oact; -+ -+ if ( slp_timeout < 120 ) /* do not bomb the slp server with wrong config */ -+ slp_timeout = 120 ; -+ if ( slp_timeout > SLP_LIFETIME_MAXIMUM ) -+ slp_timeout = SLP_LIFETIME_MAXIMUM; -+ -+ result = SLPOpen( NULL, SLP_FALSE, &phslp); -+ if (result != SLP_OK) -+ log_error( "SLPOpen failed" ); -+ else { -+ char hostname[1024]; -+ char SLPServiceUrl[2048]; -+ gethostname( hostname, 1023 ); -+ snprintf( SLPServiceUrl, 1023, "service:ksysguardd.kde://%s:%i", hostname, SocketPort ); -+ -+ result = SLPReg( phslp, -+ SLPServiceUrl, -+ slp_timeout, -+ 0, -+ "", -+ SLP_TRUE, -+ mySLPRegReport, -+ 0 ); -+ -+ if (result != SLP_OK) -+ log_error( "unable to register SLP service" ); -+ SLPClose( phslp ); -+ -+ act.sa_handler = refresh_slp; -+ if (0 != sigaction(SIGALRM, &act, &oact)) -+ log_error("Error establishing signal handler for SLP"); -+ alarm(slp_timeout - 15); -+ } -+} -+#endif -+ - int createServerSocket() - { - int i = 1; -@@ -402,6 +462,10 @@ - ServiceSocket = DNSServiceRefSockFD(Ref); - #endif - -+#if HAVE_SLP -+ if ( BindToAllInterfaces ) -+ register_slp(); -+#endif - return newSocket; - } - diff --git a/opensuse/tdebase/ksysguardd.init b/opensuse/tdebase/ksysguardd.init deleted file mode 100644 index 3be2cba3b..000000000 --- a/opensuse/tdebase/ksysguardd.init +++ /dev/null @@ -1,80 +0,0 @@ -#! /bin/sh -# Copyright (c) 1995-2001 SuSE GmbH Nuernberg, Germany. -# -# Author: adrian@suse.de -# -# /etc/init.d/ksysguardd -# and its symbolic link -# /usr/sbin/rcksysguardd -# -### BEGIN INIT INFO -# Provides: ksysguardd -# Required-Start: $time $named -# Should-Start: $syslog slpd -# Required-Stop: $null -# Default-Start: 3 5 -# Default-Stop: 0 1 2 4 6 -# Description: remote monitor daemon for ksysguard -# Short-Description: remote monitor daemon for ksysguard -### END INIT INFO - -. /etc/rc.status -test -e /etc/rc.config && source /etc/rc.config - -# Determine the base and follow a runlevel link name. -base=${0##*/} -link=${base#*[SK][0-9][0-9]} - -# Force execution if not called by a runlevel directory. -test -x /usr/bin/ksysguardd || exit 0 - -rc_reset -case "$1" in - start) - echo -n "Starting remote monitor daemon for ksysguard " - - /usr/bin/ksysguardd -d -i >/dev/null - rc_status -v - ;; - stop) - if [ -e /var/run/ksysguardd.pid ]; then - echo -n "Shutting down remote monitor daemon for ksysguard " - killproc -p /var/run/ksysguardd.pid -TERM /usr/bin/ksysguardd - rc_status -v - fi - ;; - try-restart|condrestart) - if test "$1" = "condrestart"; then - echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}" - fi - $0 status - if test $? = 0; then - $0 restart - else - rc_reset # Not running is not a failure. - fi - # Remember status and be quiet - rc_status - ;; - restart|force-reload) - ## If first returns OK call the second, if first or - ## second command fails, set echo return value. - $0 stop; sleep 1 && $0 start - rc_status - ;; - reload) - $0 stop && $0 start - rc_status - ;; - status) - echo -n "Checking for remote monitor daemon for ksysguard " - - checkproc -p /var/run/ksysguardd.pid /usr/bin/ksysguardd - rc_status -v - ;; - *) - echo "Usage: $0 {start|stop|status|restart|reload|try-restart|force-reload}" - exit 1 - ;; -esac -rc_exit diff --git a/opensuse/tdebase/ksysguardd.reg b/opensuse/tdebase/ksysguardd.reg deleted file mode 100644 index 889cb252f..000000000 --- a/opensuse/tdebase/ksysguardd.reg +++ /dev/null @@ -1,12 +0,0 @@ -############################################################################# -# -# OpenSLP registration file -# -# register ksysguard daemon -# -############################################################################# - -service:ksysguardd.kde://$HOSTNAME:3112,en,65535 -watch-port-udp=3112 -description=KDE ksysguard daemon - diff --git a/opensuse/tdebase/kwinbindings.diff b/opensuse/tdebase/kwinbindings.diff deleted file mode 100644 index 51069e5b3..000000000 --- a/opensuse/tdebase/kwinbindings.diff +++ /dev/null @@ -1,43 +0,0 @@ -Index: kwin/kwinbindings.cpp -=================================================================== ---- kwin/kwinbindings.cpp.orig -+++ kwin/kwinbindings.cpp -@@ -119,22 +119,22 @@ - DEF( I18N_NOOP("Switch to Desktop 2"), CTRL+Qt::Key_F2, WIN+Qt::Key_F2, slotSwitchToDesktop(int) ); - DEF( I18N_NOOP("Switch to Desktop 3"), CTRL+Qt::Key_F3, WIN+Qt::Key_F3, slotSwitchToDesktop(int) ); - DEF( I18N_NOOP("Switch to Desktop 4"), CTRL+Qt::Key_F4, WIN+Qt::Key_F4, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 5"), CTRL+Qt::Key_F5, WIN+Qt::Key_F5, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 6"), CTRL+Qt::Key_F6, WIN+Qt::Key_F6, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 7"), CTRL+Qt::Key_F7, WIN+Qt::Key_F7, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 8"), CTRL+Qt::Key_F8, WIN+Qt::Key_F8, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 9"), CTRL+Qt::Key_F9, WIN+Qt::Key_F9, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 10"), CTRL+Qt::Key_F10, WIN+Qt::Key_F10, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 11"), CTRL+Qt::Key_F11, 0, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 12"), CTRL+Qt::Key_F12, 0, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 13"), CTRL+SHIFT+Qt::Key_F1, 0, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 14"), CTRL+SHIFT+Qt::Key_F2, 0, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 15"), CTRL+SHIFT+Qt::Key_F3, 0, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 16"), CTRL+SHIFT+Qt::Key_F4, 0, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 17"), CTRL+SHIFT+Qt::Key_F5, 0, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 18"), CTRL+SHIFT+Qt::Key_F6, 0, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 19"), CTRL+SHIFT+Qt::Key_F7, 0, slotSwitchToDesktop(int) ); -- DEF( I18N_NOOP("Switch to Desktop 20"), CTRL+SHIFT+Qt::Key_F8, 0, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 5"), 0, WIN+Qt::Key_F5, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 6"), 0, WIN+Qt::Key_F6, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 7"), 0, WIN+Qt::Key_F7, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 8"), 0, WIN+Qt::Key_F8, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 9"), 0, WIN+Qt::Key_F9, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 10"), 0, WIN+Qt::Key_F10, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 11"), 0, 0, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 12"), 0, 0, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 13"), 0, 0, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 14"), 0, 0, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 15"), 0, 0, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 16"), 0, 0, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 17"), 0, 0, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 18"), 0, 0, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 19"), 0, 0, slotSwitchToDesktop(int) ); -+ DEF( I18N_NOOP("Switch to Desktop 20"), 0, 0, slotSwitchToDesktop(int) ); - DEF( I18N_NOOP("Switch to Next Desktop"), 0, 0, slotSwitchDesktopNext() ); - DEF( I18N_NOOP("Switch to Previous Desktop"), 0, 0, slotSwitchDesktopPrevious() ); - DEF( I18N_NOOP("Switch One Desktop to the Right"), 0, 0, slotSwitchDesktopRight() ); diff --git a/opensuse/tdebase/kxkb-include-latin-layout.diff b/opensuse/tdebase/kxkb-include-latin-layout.diff deleted file mode 100644 index a0b09a3c5..000000000 --- a/opensuse/tdebase/kxkb-include-latin-layout.diff +++ /dev/null @@ -1,14 +0,0 @@ -Index: kxkb/kcmlayout.cpp -=================================================================== ---- kxkb/kcmlayout.cpp.orig -+++ kxkb/kcmlayout.cpp -@@ -352,6 +352,9 @@ void LayoutConfig::add() - // Create a copy of the sel widget, as one might add the same layout more - // than one time, with different variants. - QListViewItem* toadd = copyLVI(sel, widget->listLayoutsDst); -+ -+ // Turn on "Include Latin layout" for new language by default (bnc:204402) -+ toadd->setText(LAYOUT_COLUMN_INCLUDE, "us"); - - widget->listLayoutsDst->insertItem(toadd); - if( widget->listLayoutsDst->childCount() > 1 ) diff --git a/opensuse/tdebase/less_verbal_kdesu.patch b/opensuse/tdebase/less_verbal_kdesu.patch deleted file mode 100644 index fd5375836..000000000 --- a/opensuse/tdebase/less_verbal_kdesu.patch +++ /dev/null @@ -1,26 +0,0 @@ -Index: kdesu/kdesu/sudlg.cpp -=================================================================== ---- kdesu/kdesu/sudlg.cpp.orig -+++ kdesu/kdesu/sudlg.cpp -@@ -29,18 +29,10 @@ KDEsuDialog::KDEsuDialog(QCString user, - setCaption(i18n("Run as %1").arg(user)); - - QString prompt; -- if (superUserCommand == "sudo" && m_User == "root") { -- prompt = i18n("Please enter your password." ); -+ if (m_User == "root") { -+ prompt = i18n("Please enter the Administrator (root) password to continue."); - } else { -- if (m_User == "root") { -- prompt = i18n("The action you requested needs root privileges. " -- "Please enter root's password below or click " -- "Ignore to continue with your current privileges."); -- } else { -- prompt = i18n("The action you requested needs additional privileges. " -- "Please enter the password for \"%1\" below or click " -- "Ignore to continue with your current privileges.").arg(m_User); -- } -+ prompt = i18n("Please enter password for \"%1\" to continue.").arg(m_User); - } - setPrompt(prompt); - diff --git a/opensuse/tdebase/libkonq-kdemm.diff b/opensuse/tdebase/libkonq-kdemm.diff deleted file mode 100644 index 6eb45eab4..000000000 --- a/opensuse/tdebase/libkonq-kdemm.diff +++ /dev/null @@ -1,117 +0,0 @@ -Index: libkonq/Makefile.am -=================================================================== ---- libkonq/Makefile.am.orig -+++ libkonq/Makefile.am -@@ -53,14 +53,10 @@ include_HEADERS = konq_popupmenu.h knewm - konq_faviconmgr.h konq_xmlguiclient.h konqbookmarkmanager.h konq_filetip.h - - --if include_ARTS --ARTS_MODULE = konq_sound.la --endif -- --kde_module_LTLIBRARIES = $(ARTS_MODULE) -+kde_module_LTLIBRARIES = konq_sound.la - konq_sound_la_SOURCES = konq_sound.cc - konq_sound_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN) --konq_sound_la_LIBADD = -lsoundserver_idl -lartskde -+konq_sound_la_LIBADD = -lkdemm - - noinst_HEADERS = konq_sound.h - -Index: libkonq/konq_sound.cc -=================================================================== ---- libkonq/konq_sound.cc.orig -+++ libkonq/konq_sound.cc -@@ -16,10 +16,9 @@ - Boston, MA 02110-1301, USA. - */ - --#include <kartsdispatcher.h> - #include <kdebug.h> --#include <kplayobjectfactory.h> --#include <soundserver.h> -+#include <kdemm/simpleplayer.h> -+#include <kdemm/factory.h> - - #include "konq_sound.h" - -@@ -39,71 +38,38 @@ public: - private: - QStringList m_mimeTypes; - -- KArtsDispatcher m_dispatcher; -- Arts::SoundServerV2 m_soundServer; -- KDE::PlayObjectFactory *m_factory; -- KDE::PlayObject *m_player; -+ KDE::Multimedia::SimplePlayer m_player; - }; - - KonqSoundPlayerImpl::KonqSoundPlayerImpl() -- : m_player(0) - { -- m_soundServer = Arts::Reference("global:Arts_SoundServerV2"); -- m_factory = new KDE::PlayObjectFactory(m_soundServer); - } - - KonqSoundPlayerImpl::~KonqSoundPlayerImpl() - { -- delete m_player; -- delete m_factory; - } - - const QStringList &KonqSoundPlayerImpl::mimeTypes() - { -- if (m_mimeTypes.isEmpty()) -- { -- Arts::TraderQuery query; -- vector<Arts::TraderOffer> *offers = query.query(); -- -- for (vector<Arts::TraderOffer>::iterator it = offers->begin(); -- it != offers->end(); ++it) -- { -- vector<string> *prop = (*it).getProperty("MimeType"); -- for (vector<string>::iterator mt = prop->begin(); -- mt != prop->end(); ++mt) -- if ((*mt).length()) // && (*mt).find("video/") == string::npos) -- m_mimeTypes << (*mt).c_str(); -- delete prop; -- } -- delete offers; -- } -+ if( m_mimeTypes.isEmpty() ) -+ m_mimeTypes = KDE::Multimedia::Factory::self()->playableMimeTypes(); -+ - return m_mimeTypes; - } - - void KonqSoundPlayerImpl::play(const QString &fileName) - { -- if (m_soundServer.isNull()) -- return; -- -- delete m_player; -- if ((m_player = m_factory->createPlayObject(fileName, true))) -- { -- if (m_player->isNull()) -- stop(); -- else -- m_player->play(); -- } -+ m_player.play( KURL( fileName ) ); - } - - void KonqSoundPlayerImpl::stop() - { -- delete m_player; -- m_player = 0; -+ m_player.stop(); - } - - bool KonqSoundPlayerImpl::isPlaying() - { -- return m_player ? (m_player->state() == Arts::posPlaying) : false; -+ return m_player.isPlaying(); - } - - class KonqSoundFactory : public KLibFactory diff --git a/opensuse/tdebase/locale-dont-show-flag.diff b/opensuse/tdebase/locale-dont-show-flag.diff deleted file mode 100644 index 2c0a57454..000000000 --- a/opensuse/tdebase/locale-dont-show-flag.diff +++ /dev/null @@ -1,33 +0,0 @@ -Index: kcontrol/locale/kcmlocale.cpp -=================================================================== ---- kcontrol/locale/kcmlocale.cpp.orig -+++ kcontrol/locale/kcmlocale.cpp -@@ -292,9 +292,13 @@ void KLocaleConfig::loadCountryList() - QString map( locate( "locale", - QString::fromLatin1( "l10n/%1.png" ) - .arg(tag) ) ); -+#if 0 - QIconSet icon; - if ( !map.isNull() ) - icon = KGlobal::iconLoader()->loadIconSet(map, KIcon::Small); -+#else -+ QIconSet icon; -+#endif - m_comboCountry->insertSubmenu( icon, name, tag, sub, -2 ); - } - -@@ -318,10 +322,14 @@ void KLocaleConfig::loadCountryList() - tag = tag.mid(index + 1); - int menu_index = submenu.isEmpty() ? -1 : -2; - -+#if 0 - QString flag( locate( "locale", - QString::fromLatin1( "l10n/%1/flag.png" ) - .arg(tag) ) ); - QIconSet icon( KGlobal::iconLoader()->loadIconSet(flag, KIcon::Small) ); -+#else -+ QIconSet icon; -+#endif - m_comboCountry->insertItem( icon, name, tag, submenu, menu_index ); - } - diff --git a/opensuse/tdebase/lock-xvkbd.diff b/opensuse/tdebase/lock-xvkbd.diff deleted file mode 100644 index 9b5faae8a..000000000 --- a/opensuse/tdebase/lock-xvkbd.diff +++ /dev/null @@ -1,380 +0,0 @@ -Index: kdesktop/lock/lockprocess.cc -=================================================================== ---- kdesktop/lock/lockprocess.cc.orig -+++ kdesktop/lock/lockprocess.cc -@@ -36,6 +36,8 @@ - #include <kstdguiitem.h> - #include <kpixmapeffect.h> - #include <kpixmap.h> -+#include <kwin.h> -+#include <kwinmodule.h> - - #include <qframe.h> - #include <qlabel.h> -@@ -93,6 +95,8 @@ static Window gVRootData = 0; - static Atom gXA_VROOT; - static Atom gXA_SCREENSAVER_VERSION; - -+extern Atom qt_wm_state; -+ - //=========================================================================== - // - // Screen saver handling process. Handles screensaver window, -@@ -108,7 +112,9 @@ LockProcess::LockProcess(bool child, boo - mVisibility(false), - mRestoreXF86Lock(false), - mForbidden(false), -- mAutoLogout(false) -+ mAutoLogout(false), -+ mVkbdProcess(NULL), -+ mKWinModule(NULL) - { - setupSignals(); - -@@ -909,10 +915,14 @@ bool LockProcess::checkPass() - { - if (mAutoLogout) - killTimer(mAutoLogoutTimerId); -+ -+ showVkbd(); - - PasswordDlg passDlg( this, &greetPlugin); - - int ret = execDialog( &passDlg ); -+ -+ hideVkbd(); - - XWindowAttributes rootAttr; - XGetWindowAttributes(qt_xdisplay(), RootWindow(qt_xdisplay(), -@@ -992,9 +1002,13 @@ bool LockProcess::x11Event(XEvent *event - { - switch (event->type) - { -- case KeyPress: - case ButtonPress: - case MotionNotify: -+ case ButtonRelease: -+ if( forwardVkbdEvent( event )) -+ return true; // filter out -+ // fall through -+ case KeyPress: - if (mBusy || !mDialogs.isEmpty()) - break; - mBusy = true; -@@ -1031,11 +1045,30 @@ bool LockProcess::x11Event(XEvent *event - case ConfigureNotify: // from SubstructureNotifyMask on the root window - if(event->xconfigure.event == qt_xrootwin()) - stayOnTop(); -+ for( QValueList< VkbdWindow >::Iterator it = mVkbdWindows.begin(); -+ it != mVkbdWindows.end(); -+ ++it ) { -+ if( (*it).id == event->xconfigure.window ) { -+ (*it).rect = QRect( event->xconfigure.x, event->xconfigure.y, -+ event->xconfigure.width, event->xconfigure.height ); -+ break; -+ } -+ } - break; - case MapNotify: // from SubstructureNotifyMask on the root window -+ windowAdded( event->xmap.window, false ); - if( event->xmap.event == qt_xrootwin()) - stayOnTop(); - break; -+ case DestroyNotify: -+ for( QValueList< VkbdWindow >::Iterator it = mVkbdWindows.begin(); -+ it != mVkbdWindows.end(); -+ ++it ) -+ if( (*it).id == event->xdestroywindow.window ) { -+ mVkbdWindows.remove( it ); -+ break; -+ } -+ break; - } - - // We have grab with the grab window being the root window. -@@ -1060,17 +1093,24 @@ bool LockProcess::x11Event(XEvent *event - - void LockProcess::stayOnTop() - { -- if(!mDialogs.isEmpty()) -+ if(!mDialogs.isEmpty() || !mVkbdWindows.isEmpty()) - { - // this restacking is written in a way so that - // if the stacking positions actually don't change, - // all restacking operations will be no-op, - // and no ConfigureNotify will be generated, - // thus avoiding possible infinite loops -- XRaiseWindow( qt_xdisplay(), mDialogs.first()->winId()); // raise topmost -+ if( !mVkbdWindows.isEmpty()) -+ XRaiseWindow( qt_xdisplay(), mVkbdWindows.first().id ); -+ else -+ XRaiseWindow( qt_xdisplay(), mDialogs.first()->winId()); // raise topmost - // and stack others below it -- Window* stack = new Window[ mDialogs.count() + 1 ]; -+ Window* stack = new Window[ mDialogs.count() + mVkbdWindows.count() + 1 ]; - int count = 0; -+ for( QValueList< VkbdWindow >::ConstIterator it = mVkbdWindows.begin(); -+ it != mVkbdWindows.end(); -+ ++it ) -+ stack[ count++ ] = (*it).id; - for( QValueList< QWidget* >::ConstIterator it = mDialogs.begin(); - it != mDialogs.end(); - ++it ) -@@ -1169,4 +1209,200 @@ void LockProcess::msgBox( QMessageBox::I - execDialog( &box ); - } - -+static int run_vkbd = -1; -+void LockProcess::showVkbd() -+{ -+ if( run_vkbd == - 1 ) { -+ int status = system( "hal-find-by-property --key system.formfactor.subtype --string tabletpc" ); -+// status = 0; // enable for testing -+ run_vkbd = ( WIFEXITED( status ) && WEXITSTATUS( status ) == 0 -+ && !KStandardDirs::findExe( "xvkbd" ).isEmpty()) ? 1 : 0; -+ } -+ if( run_vkbd ) { -+ mVkbdWindows.clear(); -+ mVkbdLastEventWindow = None; -+ mKWinModule = new KWinModule( NULL, KWinModule::INFO_WINDOWS ); -+ connect( mKWinModule, SIGNAL( windowAdded( WId )), SLOT( windowAdded( WId ))); -+ mVkbdProcess = new KProcess; -+ *mVkbdProcess << "xvkbd" << "-compact" << "-geometry" << "-0-0" << "-xdm"; -+ mVkbdProcess->start(); -+ } -+} -+ -+void LockProcess::hideVkbd() -+{ -+ if( mVkbdProcess != NULL ) { -+ mVkbdProcess->kill(); -+ delete mVkbdProcess; -+ mVkbdProcess = NULL; -+ delete mKWinModule; -+ mKWinModule = NULL; -+ mVkbdWindows.clear(); -+ } -+} -+ -+void LockProcess::windowAdded( WId w ) -+{ -+ windowAdded( w, true ); -+} -+ -+void LockProcess::windowAdded( WId w, bool managed ) -+{ -+ KWin::WindowInfo info = KWin::windowInfo( w, 0, NET::WM2WindowClass ); -+ if( info.windowClassClass().lower() != "xvkbd" ) -+ return; -+ // Unmanaged windows (i.e. popups) don't currently work anyway, since they -+ // don't have WM_CLASS set anyway. I could perhaps try tricks with X id -+ // ranges if really needed. -+ if( managed ) { -+ // withdraw the window, wait for it to be withdrawn, reparent it directly -+ // to root at the right position -+ XWithdrawWindow( qt_xdisplay(), w, qt_xscreen()); -+ for(;;) { -+ Atom type; -+ int format; -+ unsigned long length, after; -+ unsigned char *data; -+ int r = XGetWindowProperty( qt_xdisplay(), w, qt_wm_state, 0, 2, -+ false, AnyPropertyType, &type, &format, -+ &length, &after, &data ); -+ bool withdrawn = true; -+ if ( r == Success && data && format == 32 ) { -+ Q_UINT32 *wstate = (Q_UINT32*)data; -+ withdrawn = (*wstate == WithdrawnState ); -+ XFree( (char *)data ); -+ } -+ if( withdrawn ) -+ break; -+ } -+ } -+ XSelectInput( qt_xdisplay(), w, StructureNotifyMask ); -+ XWindowAttributes attr_geom; -+ if( !XGetWindowAttributes( qt_xdisplay(), w, &attr_geom )) -+ return; -+ int x = XDisplayWidth( qt_xdisplay(), qt_xscreen()) - attr_geom.width; -+ int y = XDisplayHeight( qt_xdisplay(), qt_xscreen()) - attr_geom.height; -+ if( managed ) { -+ XSetWindowAttributes attr; -+ attr.override_redirect = True; -+ XChangeWindowAttributes( qt_xdisplay(), w, CWOverrideRedirect, &attr ); -+ XReparentWindow( qt_xdisplay(), w, qt_xrootwin(), x, y ); -+ XMapWindow( qt_xdisplay(), w ); -+ } -+ VkbdWindow data; -+ data.id = w; -+ data.rect = QRect( x, y, attr_geom.width, attr_geom.height ); -+ mVkbdWindows.prepend( data ); -+} -+ -+bool LockProcess::forwardVkbdEvent( XEvent* event ) -+{ -+ if( mVkbdProcess == NULL ) -+ return false; -+ QPoint pos; -+ Time time; -+ switch( event->type ) -+ { -+ case ButtonPress: -+ case ButtonRelease: -+ pos = QPoint( event->xbutton.x, event->xbutton.y ); -+ time = event->xbutton.time; -+ break; -+ case MotionNotify: -+ pos = QPoint( event->xmotion.x, event->xmotion.y ); -+ time = event->xmotion.time; -+ break; -+ default: -+ return false; -+ } -+ // vkbd windows are kept topmost, so just find the first one in the position -+ for( QValueList< VkbdWindow >::ConstIterator it = mVkbdWindows.begin(); -+ it != mVkbdWindows.end(); -+ ++it ) { -+ if( (*it).rect.contains( pos )) { -+ // Find the subwindow where the event should actually go. -+ // Not exactly cheap in the number of X roundtrips but oh well. -+ Window window = (*it).id; -+ Window root, child; -+ int root_x, root_y, x, y; -+ unsigned int mask; -+ for(;;) { -+ if( !XQueryPointer( qt_xdisplay(), window, &root, &child, &root_x, &root_y, &x, &y, &mask )) -+ return false; -+ if( child == None ) -+ break; -+ window = child; -+ } -+ switch( event->type ) -+ { -+ case ButtonPress: -+ case ButtonRelease: -+ event->xbutton.x = x; -+ event->xbutton.y = y; -+ event->xbutton.subwindow = None; -+ break; -+ case MotionNotify: -+ event->xmotion.x = x; -+ event->xmotion.y = y; -+ event->xmotion.subwindow = None; -+ break; -+ } -+ event->xany.window = window; -+ sendVkbdFocusInOut( window, time ); -+ XSendEvent( qt_xdisplay(), window, False, 0, event ); -+ return true; -+ } -+ } -+ sendVkbdFocusInOut( None, time ); -+ return false; -+} -+ -+// Fake EnterNotify/LeaveNotify events as the mouse moves. They're not sent by X -+// because of the grab and having them makes xvkbd highlight the buttons (but -+// not needed otherwise it seems). -+void LockProcess::sendVkbdFocusInOut( WId window, Time t ) -+{ -+ if( mVkbdLastEventWindow == window ) -+ return; -+ if( mVkbdLastEventWindow != None ) { -+ XEvent e; -+ e.xcrossing.type = LeaveNotify; -+ e.xcrossing.display = qt_xdisplay(); -+ e.xcrossing.window = mVkbdLastEventWindow; -+ e.xcrossing.root = qt_xrootwin(); -+ e.xcrossing.subwindow = None; -+ e.xcrossing.time = t; -+ e.xcrossing.x = 0; -+ e.xcrossing.y = 0; -+ e.xcrossing.x_root = -1; -+ e.xcrossing.y_root = -1; -+ e.xcrossing.mode = NotifyNormal; -+ e.xcrossing.detail = NotifyAncestor; -+ e.xcrossing.same_screen = True; -+ e.xcrossing.focus = False; -+ e.xcrossing.state = 0; -+ XSendEvent( qt_xdisplay(), mVkbdLastEventWindow, False, 0, &e ); -+ } -+ mVkbdLastEventWindow = window; -+ if( mVkbdLastEventWindow != None ) { -+ XEvent e; -+ e.xcrossing.type = EnterNotify; -+ e.xcrossing.display = qt_xdisplay(); -+ e.xcrossing.window = mVkbdLastEventWindow; -+ e.xcrossing.root = qt_xrootwin(); -+ e.xcrossing.subwindow = None; -+ e.xcrossing.time = t; -+ e.xcrossing.x = 0; -+ e.xcrossing.y = 0; -+ e.xcrossing.x_root = 0; -+ e.xcrossing.y_root = 0; -+ e.xcrossing.mode = NotifyNormal; -+ e.xcrossing.detail = NotifyAncestor; -+ e.xcrossing.same_screen = True; -+ e.xcrossing.focus = False; -+ e.xcrossing.state = 0; -+ XSendEvent( qt_xdisplay(), mVkbdLastEventWindow, False, 0, &e ); -+ } -+} -+ - #include "lockprocess.moc" -Index: kdesktop/lock/lockprocess.h -=================================================================== ---- kdesktop/lock/lockprocess.h.orig -+++ kdesktop/lock/lockprocess.h -@@ -23,6 +23,7 @@ - #include <X11/Xlib.h> - - class KLibrary; -+class KWinModule; - - struct GreeterPluginHandle { - KLibrary *library; -@@ -53,7 +54,7 @@ public: - - void msgBox( QMessageBox::Icon type, const QString &txt ); - int execDialog( QDialog* dlg ); -- -+ - public slots: - void quitSaver(); - void preparePopup(); -@@ -70,6 +71,7 @@ private slots: - void suspend(); - void checkDPMSActive(); - void slotDeadTimePassed(); -+ void windowAdded( WId ); - - private: - void configure(); -@@ -93,6 +95,11 @@ private: - void stayOnTop(); - void lockXF86(); - void unlockXF86(); -+ void showVkbd(); -+ void hideVkbd(); -+ bool forwardVkbdEvent( XEvent* event ); -+ void sendVkbdFocusInOut( WId window, Time t ); -+ void windowAdded( WId window, bool managed ); - void resume( bool force ); - static QVariant getConf(void *ctx, const char *key, const QVariant &dflt); - -@@ -125,6 +132,15 @@ private: - int mAutoLogoutTimerId; - int mAutoLogoutTimeout; - bool mAutoLogout; -+ KProcess* mVkbdProcess; -+ KWinModule* mKWinModule; -+ struct VkbdWindow -+ { -+ WId id; -+ QRect rect; -+ }; -+ QValueList< VkbdWindow > mVkbdWindows; -+ WId mVkbdLastEventWindow; - }; - - #endif diff --git a/opensuse/tdebase/lowdiskspace.patch b/opensuse/tdebase/lowdiskspace.patch deleted file mode 100644 index a2ee05f54..000000000 --- a/opensuse/tdebase/lowdiskspace.patch +++ /dev/null @@ -1,413 +0,0 @@ -Subject: Dialog notifying about running low on disk space -From: Lubos Lunak -Feature: bnc#199054 -Patch-upstream: no - -Index: kioslave/media/medianotifier/Makefile.am -=================================================================== ---- kioslave/media/medianotifier/Makefile.am.orig -+++ kioslave/media/medianotifier/Makefile.am -@@ -5,7 +5,8 @@ kded_medianotifier_la_LDFLAGS = -module - kded_medianotifier_la_LIBADD = ../libmediacommon/libmediacommon.la $(LIB_KDECORE) \ - $(LIB_KDEUI) $(LIB_KIO) - kded_medianotifier_la_SOURCES = medianotifier.cpp medianotifier.skel \ -- notificationdialog.cpp notificationdialogview.ui -+ notificationdialog.cpp notificationdialogview.ui \ -+ freespacenotifier.cpp freespacewidget.ui - - noinst_HEADERS = medianotifier.h notificationdialog.h - -Index: kioslave/media/medianotifier/medianotifier.h -=================================================================== ---- kioslave/media/medianotifier/medianotifier.h.orig -+++ kioslave/media/medianotifier/medianotifier.h -@@ -27,6 +27,8 @@ - #include <qstring.h> - #include <qmap.h> - -+class FreeSpaceNotifier; -+ - class MediaNotifier: public KDEDModule - { - Q_OBJECT -@@ -52,6 +54,8 @@ private: - const QString &autoopenFile ); - - QMap<KIO::Job*,bool> m_allowNotificationMap; -+ FreeSpaceNotifier* m_freeSpaceNotifier; - }; -+ - #endif - -Index: kioslave/media/medianotifier/medianotifier.cpp -=================================================================== ---- kioslave/media/medianotifier/medianotifier.cpp.orig -+++ kioslave/media/medianotifier/medianotifier.cpp -@@ -36,6 +36,7 @@ - #include "notifiersettings.h" - #include "notifieraction.h" - #include "mediamanagersettings.h" -+#include "freespacenotifier.h" - - MediaNotifier::MediaNotifier(const QCString &name) : KDEDModule(name) - { -@@ -44,6 +45,8 @@ MediaNotifier::MediaNotifier(const QCStr - - connectDCOPSignal( "kded", "mediamanager", "mediumChanged(QString, bool)", - "onMediumChange(QString, bool)", true ); -+ -+ m_freeSpaceNotifier = new FreeSpaceNotifier( this ); - } - - MediaNotifier::~MediaNotifier() -@@ -53,6 +56,7 @@ MediaNotifier::~MediaNotifier() - - disconnectDCOPSignal( "kded", "mediamanager", "mediumChanged(QString, bool)", - "onMediumChange(QString, bool)" ); -+ delete m_freeSpaceNotifier; - } - - void MediaNotifier::onMediumChange( const QString &name, bool allowNotification ) -Index: kioslave/media/medianotifier/freespacenotifier.cpp -=================================================================== ---- /dev/null -+++ kioslave/media/medianotifier/freespacenotifier.cpp -@@ -0,0 +1,159 @@ -+/* This file is part of the KDE Project -+ Copyright (c) 2006 Lukas Tinkl <ltinkl@suse.cz> -+ Copyright (c) 2008 Lubos Lunak <l.lunak@suse.cz> -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program. If not, see <http://www.gnu.org/licenses/>. -+*/ -+ -+#include "freespacenotifier.h" -+ -+#include <sys/vfs.h> -+#include <unistd.h> -+ -+#include <qdir.h> -+#include <qfile.h> -+#include <qlabel.h> -+#include <qspinbox.h> -+ -+#include <kconfig.h> -+#include <kdebug.h> -+#include <klocale.h> -+#include <krun.h> -+ -+#include "freespacewidget.h" -+ -+ -+FreeSpaceNotifier::FreeSpaceNotifier( QObject* parent ) -+ : QObject( parent ) -+ , lastAvailTimer( NULL ) -+ , dialog( NULL ) -+ , lastAvail( -1 ) -+{ -+ connect( &timer, SIGNAL( timeout() ), SLOT( checkFreeDiskSpace() ) ); -+ KConfig cfg( "lowspacesuse", true ); // read only -+ KConfigGroup group( &cfg, "General" ); -+ limit = group.readNumEntry( "WarnMinimumFreeSpace", 200 ); // MiB -+ if( limit != 0 ) -+ timer.start( 1000 * 60 /* 1 minute */ ); -+} -+ -+FreeSpaceNotifier::~FreeSpaceNotifier() -+{ -+ delete dialog; -+} -+ -+void FreeSpaceNotifier::checkFreeDiskSpace() -+{ -+ if ( dialog ) -+ return; -+ struct statfs sfs; -+ if ( statfs( QFile::encodeName( QDir::homeDirPath() ), &sfs ) == 0 ) -+ { -+ long avail = ( getuid() ? sfs.f_bavail : sfs.f_bfree ); -+ -+ if (avail < 0 || sfs.f_blocks <= 0) -+ return; // we better do not say anything about it -+ -+ int availpct = int( 100 * avail / sfs.f_blocks ); -+ avail = ((long long)avail) * sfs.f_bsize / ( 1024 * 1024 ); // to MiB -+ bool warn = false; -+ if( avail < limit ) // avail disk space dropped under a limit -+ { -+ if( lastAvail < 0 ) // always warn the first time -+ { -+ lastAvail = avail; -+ warn = true; -+ } -+ else if( avail > lastAvail ) // the user freed some space -+ lastAvail = avail; // so warn if it goes low again -+ else if( avail < lastAvail * 0.5 ) // available dropped to a half of previous one, warn again -+ { -+ warn = true; -+ lastAvail = avail; -+ } -+ // do not change lastAvail otherwise, to handle free space slowly going down -+ } -+ if ( warn ) -+ { -+ dialog = new KDialogBase( -+ i18n( "Low Disk Space" ), -+ KDialogBase::Yes | KDialogBase::No | KDialogBase::Cancel, -+ KDialogBase::Yes, KDialogBase::No, -+ 0, "lowdiskspacedialog", false, true, -+ i18n( "Open File Manager" ), i18n( "Do Nothing" ), i18n( "Disable Warning" )); -+ widget = new FreeSpaceWidget( dialog ); -+ dialog->setMainWidget( widget ); -+ -+ QString text = i18n( "You are running low on disk space on your home partition (currently %2%, %1 MiB free)." ) -+ .arg( avail ).arg( availpct ); -+ widget->warningLabel->setText( text ); -+ widget->spinbox->setMinValue( 0 ); -+ widget->spinbox->setMaxValue( 100000 ); -+ widget->spinbox->setValue( limit ); -+ connect( dialog, SIGNAL( yesClicked() ), SLOT( slotYes() ) ); -+ connect( dialog, SIGNAL( noClicked() ), SLOT( slotNo() ) ); -+ connect( dialog, SIGNAL( cancelClicked() ), SLOT( slotCancel() ) ); -+ dialog->show(); -+ } -+ } -+} -+ -+void FreeSpaceNotifier::slotYes() -+{ -+ ( void ) new KRun( KURL::fromPathOrURL( QDir::homeDirPath() ) ); -+ cleanupDialog( widget->spinbox->value()); -+} -+ -+void FreeSpaceNotifier::slotNo() -+{ -+ cleanupDialog( widget->spinbox->value()); -+} -+ -+void FreeSpaceNotifier::slotCancel() -+{ -+ cleanupDialog( 0 ); // set limit to zero -+} -+ -+void FreeSpaceNotifier::cleanupDialog( long newLimit ) -+{ -+ dialog->deleteLater(); -+ dialog = NULL; -+ if( limit != newLimit ) -+ { -+ KConfig cfg( "lowspacesuse" ); -+ KConfigGroup group( &cfg, "General" ); -+ limit = newLimit; -+ group.writeEntry( "WarnMinimumFreeSpace", limit ); -+ if( limit == 0 ) -+ timer.stop(); -+ } -+ if( limit != 0 ) -+ { // warn again if constanly below limit for too long -+ if( lastAvailTimer == NULL ) -+ { -+ lastAvailTimer = new QTimer( this ); -+ connect( lastAvailTimer, SIGNAL( timeout()), SLOT( resetLastAvailable())); -+ } -+ lastAvailTimer->start( 1000 * 60 * 60 /* 1 hour*/ ); -+ } -+} -+ -+void FreeSpaceNotifier::resetLastAvailable() -+{ -+ lastAvail = -1; -+ lastAvailTimer->deleteLater(); -+ lastAvailTimer = NULL; -+} -+ -+#include "freespacenotifier.moc" -Index: kioslave/media/medianotifier/freespacenotifier.h -=================================================================== ---- /dev/null -+++ kioslave/media/medianotifier/freespacenotifier.h -@@ -0,0 +1,51 @@ -+/* This file is part of the KDE Project -+ Copyright (c) 2006 Lukas Tinkl <ltinkl@suse.cz> -+ Copyright (c) 2008 Lubos Lunak <l.lunak@suse.cz> -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program. If not, see <http://www.gnu.org/licenses/>. -+*/ -+ -+#ifndef _FREESPACENOTIFIER_H_ -+#define _FREESPACENOTIFIER_H_ -+ -+#include <qtimer.h> -+ -+#include <kdialogbase.h> -+ -+class FreeSpaceWidget; -+ -+class FreeSpaceNotifier -+: public QObject -+{ -+ Q_OBJECT -+ public: -+ FreeSpaceNotifier( QObject* parent = NULL ); -+ virtual ~FreeSpaceNotifier(); -+ private slots: -+ void checkFreeDiskSpace(); -+ void resetLastAvailable(); -+ void slotYes(); -+ void slotNo(); -+ void slotCancel(); -+ private: -+ void cleanupDialog( long newLimit ); -+ QTimer timer; -+ QTimer* lastAvailTimer; -+ KDialogBase* dialog; -+ FreeSpaceWidget* widget; -+ long limit; -+ long lastAvail; // used to supress repeated warnings when available space hasn't changed -+}; -+ -+#endif -Index: kioslave/media/medianotifier/freespacewidget.ui -=================================================================== ---- /dev/null -+++ kioslave/media/medianotifier/freespacewidget.ui -@@ -0,0 +1,118 @@ -+<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> -+<class>FreeSpaceWidget</class> -+<widget class="QWidget"> -+ <property name="name"> -+ <cstring>Form1</cstring> -+ </property> -+ <property name="geometry"> -+ <rect> -+ <x>0</x> -+ <y>0</y> -+ <width>489</width> -+ <height>108</height> -+ </rect> -+ </property> -+ <property name="caption"> -+ <string>Form1</string> -+ </property> -+ <vbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <widget class="QLabel"> -+ <property name="name"> -+ <cstring>warningLabel</cstring> -+ </property> -+ <property name="text"> -+ <string></string> -+ </property> -+ </widget> -+ <widget class="QLabel"> -+ <property name="name"> -+ <cstring>textLabel2</cstring> -+ </property> -+ <property name="text"> -+ <string>Would you like to run a file manager to free some disk space and fix the problem?</string> -+ </property> -+ </widget> -+ <spacer> -+ <property name="name"> -+ <cstring>spacer3</cstring> -+ </property> -+ <property name="orientation"> -+ <enum>Vertical</enum> -+ </property> -+ <property name="sizeType"> -+ <enum>Expanding</enum> -+ </property> -+ <property name="sizeHint"> -+ <size> -+ <width>20</width> -+ <height>40</height> -+ </size> -+ </property> -+ </spacer> -+ <widget class="QLayoutWidget"> -+ <property name="name"> -+ <cstring>layout3</cstring> -+ </property> -+ <hbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <widget class="QLabel"> -+ <property name="name"> -+ <cstring>textLabel3</cstring> -+ </property> -+ <property name="text"> -+ <string>Warn again when the free space is below</string> -+ </property> -+ </widget> -+ <widget class="QSpinBox"> -+ <property name="name"> -+ <cstring>spinbox</cstring> -+ </property> -+ <property name="suffix"> -+ <string> MiB</string> -+ </property> -+ </widget> -+ <spacer> -+ <property name="name"> -+ <cstring>spacer1</cstring> -+ </property> -+ <property name="orientation"> -+ <enum>Horizontal</enum> -+ </property> -+ <property name="sizeType"> -+ <enum>Expanding</enum> -+ </property> -+ <property name="sizeHint"> -+ <size> -+ <width>30</width> -+ <height>20</height> -+ </size> -+ </property> -+ </spacer> -+ </hbox> -+ </widget> -+ <spacer> -+ <property name="name"> -+ <cstring>spacer2</cstring> -+ </property> -+ <property name="orientation"> -+ <enum>Vertical</enum> -+ </property> -+ <property name="sizeType"> -+ <enum>Expanding</enum> -+ </property> -+ <property name="sizeHint"> -+ <size> -+ <width>20</width> -+ <height>16</height> -+ </size> -+ </property> -+ </spacer> -+ </vbox> -+</widget> -+<layoutdefaults spacing="6" margin="11"/> -+</UI> diff --git a/opensuse/tdebase/mach_blass.diff b/opensuse/tdebase/mach_blass.diff deleted file mode 100644 index 8ea798d13..000000000 --- a/opensuse/tdebase/mach_blass.diff +++ /dev/null @@ -1,160 +0,0 @@ -Index: ksmserver/shutdowndlg.cpp -=================================================================== ---- ksmserver/shutdowndlg.cpp.orig -+++ ksmserver/shutdowndlg.cpp -@@ -35,6 +35,7 @@ Copyright (C) 2000 Matthias Ettrich <ett - #include <kuser.h> - #include <kpixmap.h> - #include <kimageeffect.h> -+#include <kpixmapeffect.h> - #include <kdialog.h> - #include <kseparator.h> - -@@ -48,6 +49,9 @@ Copyright (C) 2000 Matthias Ettrich <ett - - #include "shutdowndlg.moc" - -+static const int max_faded = 2300; -+static const int slice = 20; -+ - KSMShutdownFeedback * KSMShutdownFeedback::s_pSelf = 0L; - - KSMShutdownFeedback::KSMShutdownFeedback() -@@ -56,12 +60,22 @@ KSMShutdownFeedback::KSMShutdownFeedback - { - setBackgroundMode( QWidget::NoBackground ); - setGeometry( QApplication::desktop()->geometry() ); -- QTimer::singleShot( 10, this, SLOT( slotPaintEffect() ) ); -- m_root.resize( width(), height() ); --} -+ if( QPixmap::defaultDepth() > 8 ) -+ { -+ grabbed.create( size(), 32 ); -+ QTimer::singleShot( 0, this, SLOT( slotGrab() ) ); -+ } -+ else -+ { -+ QTimer::singleShot( 10, this, SLOT( slotPaintEffectOld() ) ); -+ m_root.resize( width(), height() ); -+ } - - --void KSMShutdownFeedback::slotPaintEffect() -+} -+ -+// the upstream KDE effect -+void KSMShutdownFeedback::slotPaintEffectOld() - { - if ( m_currentY >= height() ) { - if ( backgroundMode() == QWidget::NoBackground ) { -@@ -80,7 +94,76 @@ void KSMShutdownFeedback::slotPaintEffec - bitBlt( this, 0, m_currentY, &pixmap ); - bitBlt( &m_root, 0, m_currentY, &pixmap ); - m_currentY += 10; -- QTimer::singleShot( 1, this, SLOT( slotPaintEffect() ) ); -+ QTimer::singleShot( 1, this, SLOT( slotPaintEffectOld() ) ); -+} -+ -+// the SUSE effect -+void KSMShutdownFeedback::slotGrab() -+{ -+ // we start the passed early -+ if ( m_currentY * 4 >= height() * 3 && passed.isNull()) -+ passed.start(); -+ -+ if ( m_currentY >= height() ) { -+ slotPaintEffectNew(); -+ return; -+ } -+ -+ QImage img; -+ img = QPixmap::grabWindow( qt_xrootwin(), 0, -+ m_currentY, width(), -+ slice ); -+ bitBlt(&grabbed, 0, m_currentY, &img); -+ m_currentY += slice; -+ QTimer::singleShot(0, this, SLOT(slotGrab())); -+} -+ -+void KSMShutdownFeedback::slotPaintEffectNew() -+{ -+ const unsigned int shift_scale = 10; -+ const unsigned int scale = 1 << shift_scale; -+ -+ //kdDebug() << "passed before paint " << passed.elapsed() << endl; -+ unsigned int current_fade = QMIN(scale, passed.elapsed() * scale / max_faded); -+ QImage copy; -+ copy.create( grabbed.size(), grabbed.depth() ); -+ unsigned int pixels = grabbed.width()*grabbed.height(); -+ QRgb *orig = ( QRgb* )grabbed.bits(); -+ QRgb *dest = ( QRgb* )copy.bits(); -+ QColor clr; -+ -+ int r, g, b, tg; -+ -+ for ( unsigned int i = 0; i < pixels; ++i ) -+ { -+ r = qRed( orig[i] ); -+ g = qGreen( orig[i] ); -+ b = qBlue( orig[i] ); -+ -+ // qGray formla -+ tg = (r*11 + g*16 + b*5)/32; -+ // make it a bit darker than gray -+ tg = tg - tg / 5; -+ -+ r = ( ( r << shift_scale ) + current_fade * ( tg - r ) ) >> shift_scale; -+ g = ( ( g << shift_scale ) + current_fade * ( tg - g ) ) >> shift_scale; -+ b = ( ( b << shift_scale ) + current_fade * ( tg - b ) ) >> shift_scale; -+ -+ dest[i] = qRgb(r, g, b); -+ } -+ //kdDebug() << "passed before bitBlt " << passed.elapsed() << endl; -+ bitBlt( this, 0, 0, ©); -+ //kdDebug() << "passed after bitBlt " << passed.elapsed() << endl; -+ -+ if ( current_fade >= scale ) { -+ if ( backgroundMode() == QWidget::NoBackground ) { -+ setBackgroundMode( QWidget::NoBackground ); -+ setBackgroundPixmap( copy ); -+ } -+ return; -+ } -+ -+ QTimer::singleShot( 0, this, SLOT( slotPaintEffectNew() ) ); - } - - ////// -Index: ksmserver/shutdowndlg.h -=================================================================== ---- ksmserver/shutdowndlg.h.orig -+++ ksmserver/shutdowndlg.h -@@ -9,7 +9,9 @@ Copyright (C) 2000 Matthias Ettrich <ett - - #include <qpixmap.h> - #include <qdialog.h> -+#include <qdatetime.h> - #include <kpushbutton.h> -+#include <qimage.h> - class QPushButton; - class QVButtonGroup; - class QPopupMenu; -@@ -31,13 +33,17 @@ protected: - ~KSMShutdownFeedback() {} - - private slots: -- void slotPaintEffect(); -+ void slotPaintEffectOld(); -+ void slotPaintEffectNew(); -+ void slotGrab(); - - private: - static KSMShutdownFeedback * s_pSelf; - KSMShutdownFeedback(); - int m_currentY; - QPixmap m_root; -+ QTime passed; -+ QImage grabbed; - }; - - diff --git a/opensuse/tdebase/make-wallpapers-hideable.diff b/opensuse/tdebase/make-wallpapers-hideable.diff deleted file mode 100644 index d59494940..000000000 --- a/opensuse/tdebase/make-wallpapers-hideable.diff +++ /dev/null @@ -1,48 +0,0 @@ -Index: kcontrol/background/bgdialog.cpp -=================================================================== ---- kcontrol/background/bgdialog.cpp.orig -+++ kcontrol/background/bgdialog.cpp -@@ -477,14 +477,23 @@ void BGDialog::loadWallpaperFilesList() - //search for .desktop files before searching for images without .desktop files - QStringList lst = m_pDirs->findAllResources("wallpaper", "*desktop", false, true); - QStringList files; -+ QStringList hiddenfiles; - for (QStringList::ConstIterator it = lst.begin(); it != lst.end(); ++it) - { - KSimpleConfig fileConfig(*it); - fileConfig.setGroup("Wallpaper"); - -+ int slash = (*it).findRev('/') + 1; -+ QString directory = (*it).left(slash); -+ - QString imageCaption = fileConfig.readEntry("Name"); - QString fileName = fileConfig.readEntry("File"); - -+ if (fileConfig.readBoolEntry("Hidden",false)) { -+ hiddenfiles.append(directory + fileName); -+ continue; -+ } -+ - if (imageCaption.isEmpty()) - { - imageCaption = fileName; -@@ -500,9 +509,8 @@ void BGDialog::loadWallpaperFilesList() - rs = imageCaption + " (" + QString::number(n) + ')'; - lrs = rs.lower(); - } -- int slash = (*it).findRev('/') + 1; -- QString directory = (*it).left(slash); - bool canLoadScaleable = false; -+ - #ifdef HAVE_LIBART - canLoadScaleable = true; - #endif -@@ -516,7 +524,7 @@ void BGDialog::loadWallpaperFilesList() - lst = m_pDirs->findAllResources("wallpaper", "*", false, true); - for (QStringList::ConstIterator it = lst.begin(); it != lst.end(); ++it) - { -- if ( !(*it).endsWith(".desktop") && files.grep(*it).empty() ) { -+ if ( !(*it).endsWith(".desktop") && files.grep(*it).empty() && hiddenfiles.grep(*it).empty() ) { - // First try to see if we have a comment describing the image. If we do - // just use the first line of said comment. - KFileMetaInfo metaInfo(*it); diff --git a/opensuse/tdebase/media-cryptosupport.diff b/opensuse/tdebase/media-cryptosupport.diff deleted file mode 100644 index e9b4fb58d..000000000 --- a/opensuse/tdebase/media-cryptosupport.diff +++ /dev/null @@ -1,31 +0,0 @@ -Index: kioslave/media/mediamanager/halbackend.cpp -=================================================================== ---- kioslave/media/mediamanager/halbackend.cpp.orig -+++ kioslave/media/mediamanager/halbackend.cpp -@@ -214,10 +214,26 @@ void HALBackend::AddDevice(const char *u - { - /* We only list volume that have a filesystem or volume that have an audio track*/ - if ( libhal_device_get_property_QString(m_halContext, udi, "volume.fsusage") != "filesystem" && -+ libhal_device_get_property_QString(m_halContext, udi, "volume.fsusage") != "crypto" && - !libhal_device_get_property_bool(m_halContext, udi, "volume.disc.has_audio", NULL) && - !libhal_device_get_property_bool(m_halContext, udi, "volume.disc.is_blank", NULL) ) - return; - -+ /* For crypto_LUKS devices check its dm-device, if it is already mounted*/ -+ if ( libhal_device_get_property_QString(m_halContext, udi, "volume.fstype") == "crypto_LUKS" && -+ !libhal_device_get_property_bool(m_halContext, udi, "volume.ignore", NULL) ) { -+ int num; -+ char **dm_uuid = libhal_manager_find_device_string_match(m_halContext, "volume.crypto_luks.clear.backing_volume",udi,&num,NULL); -+ /* if a dm device is found the volume is already decrypted */ -+ if (num == 0) { -+ // TODO: Check for kryptomedia binary. -+ KProcess proc; -+ proc << "kryptomedia" << udi; -+ proc.start(KProcess::DontCare); -+ return; -+ } -+ } -+ - /* Query drive udi */ - QString driveUdi = libhal_device_get_property_QString(m_halContext, udi, "block.storage_device"); - if ( driveUdi.isNull() ) // no storage - no fun diff --git a/opensuse/tdebase/media-iPod.diff b/opensuse/tdebase/media-iPod.diff deleted file mode 100644 index c5f1f8a24..000000000 --- a/opensuse/tdebase/media-iPod.diff +++ /dev/null @@ -1,26 +0,0 @@ -Index: kioslave/media/mediamanager/halbackend.cpp -=================================================================== ---- kioslave/media/mediamanager/halbackend.cpp.orig -+++ kioslave/media/mediamanager/halbackend.cpp -@@ -33,6 +33,7 @@ - #include <kmountpoint.h> - #include <kmessagebox.h> - #include <kio/job.h> -+#include <kprotocolinfo.h> - - #define MOUNT_SUFFIX (libhal_volume_is_mounted(halVolume) ? QString("_mounted") : QString("_unmounted")) - #define MOUNT_ICON_SUFFIX (libhal_volume_is_mounted(halVolume) ? QString("_mount") : QString("_unmount")) -@@ -532,6 +533,13 @@ void HALBackend::setVolumeProperties(Med - case LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER: - { - medium->setIconName("ipod" + MOUNT_ICON_SUFFIX); -+ -+ if (libhal_device_get_property_QString(m_halContext, driveUdi.latin1(), "info.product") == "iPod" && -+ KProtocolInfo::isKnownProtocol( QString("ipod") ) ) -+ { -+ medium->unmountableState( "ipod:/" ); -+ medium->mountableState( libhal_volume_is_mounted(halVolume) ); -+ } - break; - } - case LIBHAL_DRIVE_TYPE_CAMERA: diff --git a/opensuse/tdebase/media-teardown_crypto.diff b/opensuse/tdebase/media-teardown_crypto.diff deleted file mode 100644 index f713cffc7..000000000 --- a/opensuse/tdebase/media-teardown_crypto.diff +++ /dev/null @@ -1,175 +0,0 @@ -Index: kioslave/media/mediamanager/halbackend.cpp -=================================================================== ---- kioslave/media/mediamanager/halbackend.cpp.orig 2011-05-31 13:41:55.000000000 +0200 -+++ kioslave/media/mediamanager/halbackend.cpp 2011-05-31 13:42:48.317334543 +0200 -@@ -1379,4 +1379,54 @@ QString HALBackend::unmount(const QStrin - return QString(); - } - -+bool HALBackend::teardown(const QString &_udi) -+{ -+ const char* dm_udi = _udi.latin1(); -+ const QString blockudi = libhal_device_get_property_QString(m_halContext, dm_udi, "volume.crypto_luks.clear.backing_volume"); -+ if (!blockudi.isEmpty()) { -+ const char* udi = blockudi.latin1(); -+ DBusMessage *dmesg, *reply; -+ DBusError error; -+ const char *options[2]; -+ -+ kdDebug() << "tearDown " << udi << "..." << endl; -+ -+ dbus_error_init(&error); -+ DBusConnection *dbus_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); -+ if (dbus_error_is_set(&error)) -+ { -+ dbus_error_free(&error); -+ return false; -+ } -+ -+ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, -+ "org.freedesktop.Hal.Device.Volume.Crypto", -+ "Teardown"))) { -+ kdDebug() << "teardown failed for " << udi << ": could not create dbus message\n"; -+ return false; -+ } -+ -+ dbus_error_init (&error); -+ if (!(reply = dbus_connection_send_with_reply_and_block (dbus_connection, dmesg, -1, &error))) -+ { -+ QString qerror; -+ -+ kdDebug() << "teardown failed for " << udi << ": " << error.name << " " << error.message << endl; -+ qerror = QString("teardown failed for %1 because: %2").arg(udi).arg(error.name); -+ dbus_message_unref (dmesg); -+ dbus_error_free (&error); -+ return false; -+ } -+ -+ kdDebug() << "teardown queued for " << udi << endl; -+ -+ dbus_message_unref (dmesg); -+ dbus_message_unref (reply); -+ return true; -+ } -+ -+ return false; -+} -+ -+ - #include "halbackend.moc" -Index: kioslave/media/mediamanager/halbackend.h -=================================================================== ---- kioslave/media/mediamanager/halbackend.h.orig 2011-05-31 13:39:05.000000000 +0200 -+++ kioslave/media/mediamanager/halbackend.h 2011-05-31 13:42:48.317334543 +0200 -@@ -85,6 +85,7 @@ public: - QString mount(const QString &id); - QString mount(const Medium *medium); - QString unmount(const QString &id); -+ bool teardown(const QString &_udi); - - static bool isHotplug( const QString & id ); - -Index: kioslave/media/mediamanager/mediamanager.cpp -=================================================================== ---- kioslave/media/mediamanager/mediamanager.cpp.orig 2011-05-31 13:39:05.000000000 +0200 -+++ kioslave/media/mediamanager/mediamanager.cpp 2011-05-31 13:43:07.916484054 +0200 -@@ -232,6 +232,17 @@ QString MediaManager::unmount(const QStr - #endif - } - -+bool MediaManager::teardown(const QString &name) -+{ -+#ifdef COMPILE_HALBACKEND -+ if (!m_halbackend) -+ return false; -+ return m_halbackend->teardown(name); -+#else -+ return false; -+#endif -+} -+ - QString MediaManager::nameForLabel(const QString &label) - { - const QPtrList<Medium> media = m_mediaList.list(); -Index: kioslave/media/mediamanager/mediamanager.h -=================================================================== ---- kioslave/media/mediamanager/mediamanager.h.orig 2011-05-31 13:39:05.000000000 +0200 -+++ kioslave/media/mediamanager/mediamanager.h 2011-05-31 13:42:48.318334448 +0200 -@@ -47,6 +47,7 @@ k_dcop: - - QString mount(const QString &uid); - QString unmount(const QString &uid); -+ bool teardown(const QString &uid); - - QString nameForLabel(const QString &label); - ASYNC setUserLabel(const QString &name, const QString &label); -Index: kioslave/media/mounthelper/kio_media_mounthelper.h -=================================================================== ---- kioslave/media/mounthelper/kio_media_mounthelper.h.orig 2007-01-15 12:31:31.000000000 +0100 -+++ kioslave/media/mounthelper/kio_media_mounthelper.h 2011-05-31 13:42:48.318334448 +0200 -@@ -40,6 +40,8 @@ private: - QString m_errorStr; - QString m_device; - bool m_isCdrom; -+ bool isCryptMedia(QString); -+ bool teardown(QString); - - private slots: - void ejectFinished(KProcess* proc); -Index: kioslave/media/mounthelper/kio_media_mounthelper.cpp -=================================================================== ---- kioslave/media/mounthelper/kio_media_mounthelper.cpp.orig 2007-05-14 09:55:40.000000000 +0200 -+++ kioslave/media/mounthelper/kio_media_mounthelper.cpp 2011-05-31 13:42:48.319334353 +0200 -@@ -27,6 +27,7 @@ - #include <dcopclient.h> - #include <dcopref.h> - #include <qtimer.h> -+#include <qregexp.h> - #include <stdlib.h> - #include <kdebug.h> - #include <kglobal.h> -@@ -117,14 +118,17 @@ MountHelper::MountHelper() : KApplicatio - DCOPRef mediamanager("kded", "mediamanager"); - DCOPReply reply = mediamanager.call( "unmount", medium.id()); - if (reply.isValid()) -- reply.get(m_errorStr); -- if (m_errorStr.isNull()) -- invokeEject(device, true); -- else -- error(); -+ reply.get(m_errorStr); -+ if (m_errorStr.isNull()) { -+ if (!teardown(medium.id())) -+ invokeEject(device, true); -+ } else -+ error(); - m_device = device; -- } else -- invokeEject(device, true); -+ } else { -+ if (!teardown(medium.id())) -+ invokeEject(device, true); -+ } - } - else - { -@@ -139,6 +143,19 @@ MountHelper::MountHelper() : KApplicatio - } - } - -+bool MountHelper::teardown(QString id) -+{ -+ DCOPRef mediamanager("kded", "mediamanager"); -+ DCOPReply reply = mediamanager.call( "teardown", id); -+ if (reply.isValid()) { -+ bool rep; -+ reply.get(rep); -+ kdDebug() << "reply from teardown: " << rep << endl; -+ return rep; -+ } -+ return false; -+} -+ - void MountHelper::invokeEject(const QString &device, bool quiet) - { - KProcess *proc = new KProcess(this); diff --git a/opensuse/tdebase/media_suse.diff b/opensuse/tdebase/media_suse.diff deleted file mode 100644 index 8583f03d2..000000000 --- a/opensuse/tdebase/media_suse.diff +++ /dev/null @@ -1,49 +0,0 @@ -Index: kioslave/media/mediamanager/halbackend.cpp -=================================================================== ---- kioslave/media/mediamanager/halbackend.cpp.orig -+++ kioslave/media/mediamanager/halbackend.cpp -@@ -248,14 +248,15 @@ void HALBackend::AddDevice(const char *u - return; - } - } -+ m_mediaList.addMedium(medium, allowNotification); -+ - QMap<QString,QString> options = MediaManagerUtils::splitOptions(mountoptions(udi)); - kdDebug() << "automount " << options["automount"] << endl; -- if (options["automount"] == "true" && allowNotification ) { -+ if (options["automount"] == "true" ) { - QString error = mount(medium); - if (!error.isEmpty()) - kdDebug() << "error " << error << endl; - } -- m_mediaList.addMedium(medium, allowNotification); - - return; - } -@@ -292,6 +293,12 @@ void HALBackend::AddDevice(const char *u - m_mediaList.addMedium(medium, allowNotification); - return; - } -+ -+ if ( allowNotification ) { -+ KProcess proc; -+ proc << "suseplugger" << udi; -+ proc.start(KProcess::DontCare); -+ } - } - - void HALBackend::RemoveDevice(const char *udi) -@@ -816,8 +823,12 @@ QStringList HALBackend::mountoptions(con - removable = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.removable", NULL) - || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); - -+ bool value = removable; -+ QString drive_type = libhal_device_get_property_QString( m_halContext, drive_udi.latin1(), "storage.drive_type" ); -+ value |= ( drive_type == "cdrom" ); -+ - config.setGroup(drive_udi); -- bool value = config.readBoolEntry("automount", false); -+ value = config.readBoolEntry("automount", value); - config.setGroup(name); - - if (libhal_device_get_property_bool(m_halContext, name.latin1(), "volume.disc.is_blank", NULL) diff --git a/opensuse/tdebase/mediamanager-mount-point-utf8.diff b/opensuse/tdebase/mediamanager-mount-point-utf8.diff deleted file mode 100644 index 87db2b9ef..000000000 --- a/opensuse/tdebase/mediamanager-mount-point-utf8.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: kioslave/media/mediamanager/halbackend.cpp -=================================================================== ---- kioslave/media/mediamanager/halbackend.cpp.orig -+++ kioslave/media/mediamanager/halbackend.cpp -@@ -471,7 +471,7 @@ void HALBackend::setVolumeProperties(Med - - medium->mountableState( - libhal_volume_get_device_file(halVolume), /* Device node */ -- libhal_volume_get_mount_point(halVolume), /* Mount point */ -+ QString::fromUtf8(libhal_volume_get_mount_point(halVolume)), /* Mount point */ - libhal_volume_get_fstype(halVolume), /* Filesystem type */ - libhal_volume_is_mounted(halVolume) ); /* Mounted ? */ - diff --git a/opensuse/tdebase/minicli-combo-editor.diff b/opensuse/tdebase/minicli-combo-editor.diff deleted file mode 100644 index 698668ec1..000000000 --- a/opensuse/tdebase/minicli-combo-editor.diff +++ /dev/null @@ -1,34 +0,0 @@ -Index: kdesktop/minicli.h -=================================================================== ---- kdesktop/minicli.h.orig -+++ kdesktop/minicli.h -@@ -52,12 +52,14 @@ public: - - void setCommand(const QString& command); - void reset(); -- void saveConfig(); - void clearHistory(); - - virtual void show(); - virtual QSize sizeHint() const; - -+public slots: -+ void saveConfig(); -+ - protected slots: - virtual void accept(); - virtual void reject(); -Index: kdesktop/minicli.cpp -=================================================================== ---- kdesktop/minicli.cpp.orig -+++ kdesktop/minicli.cpp -@@ -133,6 +133,9 @@ Minicli::Minicli( QWidget *parent, const - connect( m_dlg->cbCommand, SIGNAL( returnPressed() ), - m_dlg->pbRun, SLOT( animateClick() ) ); - -+ m_dlg->cbCommand->setHistoryEditorEnabled( true ); -+ connect( m_dlg->cbCommand, SIGNAL(removed( const QString&) ), SLOT(saveConfig()) ); -+ - // Advanced group box... - connect(m_dlg->cbPriority, SIGNAL(toggled(bool)), SLOT(slotChangeScheduler(bool))); - connect(m_dlg->slPriority, SIGNAL(valueChanged(int)), SLOT(slotPriority(int))); diff --git a/opensuse/tdebase/mp3-info.tar.bz2 b/opensuse/tdebase/mp3-info.tar.bz2 Binary files differdeleted file mode 100644 index f6cf95bcd..000000000 --- a/opensuse/tdebase/mp3-info.tar.bz2 +++ /dev/null diff --git a/opensuse/tdebase/mtab-reenable.patch b/opensuse/tdebase/mtab-reenable.patch deleted file mode 100644 index 1593a560d..000000000 --- a/opensuse/tdebase/mtab-reenable.patch +++ /dev/null @@ -1,153 +0,0 @@ -diff -wruN kdebase-3.5.10.orig/kioslave/media/mediamanager/fstabbackend.cpp kdebase-3.5.10/kioslave/media/mediamanager/fstabbackend.cpp ---- kdebase-3.5.10.orig/kioslave/media/mediamanager/fstabbackend.cpp 2006-10-01 21:31:54.000000000 +0400 -+++ kdebase-3.5.10/kioslave/media/mediamanager/fstabbackend.cpp 2011-08-17 14:51:34.697199962 +0400 -@@ -50,7 +50,7 @@ - #define MTAB "/etc/mnttab" - #else - #define FSTAB "/etc/fstab" --#define MTAB "/etc/mtab" -+#define MTAB "/proc/self/mounts" - #endif - - -@@ -58,7 +58,7 @@ - FstabBackend::FstabBackend(MediaList &list, bool networkSharesOnly) - : QObject(), BackendBase(list), m_networkSharesOnly(networkSharesOnly) - { -- KDirWatch::self()->addFile(MTAB); -+ KDirWatch::self()->addDir("/media",0); - KDirWatch::self()->addFile(FSTAB); - - connect( KDirWatch::self(), SIGNAL( dirty(const QString&) ), -@@ -94,7 +94,7 @@ - m_mediaList.removeMedium(*it, false); - } - KDirWatch::self()->removeFile(FSTAB); -- KDirWatch::self()->removeFile(MTAB); -+ KDirWatch::self()->removeDir("/media"); - } - - QString FstabBackend::mount( const QString &_udi ) -@@ -119,8 +119,9 @@ - - void FstabBackend::slotDirty(const QString &path) - { -- if (path==MTAB) -+ if (path=="/media") - { -+ sleep(1); - handleMtabChange(); - } - else if (path==FSTAB) -@@ -136,18 +137,23 @@ - || mount->mountType() == "sysfs" - || mount->mountType() == "fdescfs" - || mount->mountType() == "kernfs" -+ || mount->mountType() == "devtmpfs" -+ || mount->mountType() == "rootfs" - || mount->mountType() == "usbfs" - || mount->mountType().contains( "proc" ) -+ || mount->mountType().contains( "gvfs" ) - || mount->mountType() == "unknown" - || mount->mountType() == "none" - || mount->mountType() == "sunrpc" - || mount->mountedFrom() == "none" - || mount->mountedFrom() == "tmpfs" - || mount->mountedFrom().find("shm") != -1 -- || mount->mountPoint() == "/dev/swap" -+ || !(mount->mountPoint() == "/" || mount->mountPoint().find("/media") == 0 ) -+/* || mount->mountPoint() == "/dev/swap" -+ || mount->mountPoint() == "/dev" - || mount->mountPoint() == "/dev/pts" - || mount->mountPoint().find("/proc") == 0 -- || mount->mountPoint().find("/sys") == 0 -+ || mount->mountPoint().find("/sys") == 0 */ - - // We might want to display only network shares - // since HAL doesn't handle them -@@ -187,10 +193,12 @@ - nothing has changed, do not stat the mount point. Avoids - hang if network shares are stalling */ - QString mtabEntry = dev + "*" + mp + "*" + fs; -+#if 0 - if(m_mtabEntries.contains(mtabEntry)) { - new_mtabIds += m_mtabEntries[mtabEntry]; - continue; - } -+#endif - - QString id = generateId(dev, mp); - new_mtabIds+=id; -@@ -203,7 +211,6 @@ - m_mediaList.changeMediumState(id, true, false, - mime, icon, label); - } --#if 0 - else if ( !m_mtabIds.contains(id) ) - { - QString name = generateName(dev, fs); -@@ -219,9 +226,8 @@ - m->setIconName(icon); - m->setLabel(label); - -- m_mediaList.addMedium(m, notificationAllowed); -+ m_mediaList.addMedium(m, allowNotification); - } --#endif - } - - QStringList::iterator it2 = m_mtabIds.begin(); -@@ -247,12 +253,10 @@ - m_mediaList.changeMediumState(*it2, false, false, - mime, icon, label); - } --#if 0 - else if ( !new_mtabIds.contains(*it2) ) - { - m_mediaList.removeMedium(*it2, allowNotification); - } --#endif - } - - m_mtabIds = new_mtabIds; -diff -wruN kdebase-3.5.10.orig/kioslave/media/mediamanager/removablebackend.cpp kdebase-3.5.10/kioslave/media/mediamanager/removablebackend.cpp ---- kdebase-3.5.10.orig/kioslave/media/mediamanager/removablebackend.cpp 2006-03-17 13:17:33.000000000 +0300 -+++ kdebase-3.5.10/kioslave/media/mediamanager/removablebackend.cpp 2011-08-17 14:51:51.854357476 +0400 -@@ -27,7 +27,7 @@ - #ifdef _OS_SOLARIS_ - #define MTAB "/etc/mnttab" - #else --#define MTAB "/etc/mtab" -+#define MTAB "/proc/self/mounts" - #endif - - -@@ -35,7 +35,7 @@ - RemovableBackend::RemovableBackend(MediaList &list) - : QObject(), BackendBase(list) - { -- KDirWatch::self()->addFile(MTAB); -+ KDirWatch::self()->addDir("/media",0); - - connect( KDirWatch::self(), SIGNAL( dirty(const QString&) ), - this, SLOT( slotDirty(const QString&) ) ); -@@ -52,7 +52,7 @@ - m_mediaList.removeMedium(*it, false); - } - -- KDirWatch::self()->removeFile(MTAB); -+ KDirWatch::self()->removeDir("/media"); - } - - bool RemovableBackend::plug(const QString &devNode, const QString &label) -@@ -116,8 +116,9 @@ - - void RemovableBackend::slotDirty(const QString &path) - { -- if (path==MTAB) -+ if (path=="/media") - { -+ sleep(1); - handleMtabChange(); - } - } diff --git a/opensuse/tdebase/non-fast-malloc.diff b/opensuse/tdebase/non-fast-malloc.diff deleted file mode 100644 index c3f36be87..000000000 --- a/opensuse/tdebase/non-fast-malloc.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- konqueror/konq_mainwindow.cc -+++ konqueror/konq_mainwindow.cc 2003/05/30 13:19:04 -@@ -4550,9 +4550,9 @@ - int usage_sum = 0; - #if defined(KDE_MALLINFO_STDLIB) || defined(KDE_MALLINFO_MALLOC) - // ugly hack for kdecore/malloc -- extern int kde_malloc_is_used; -- free( calloc( 4, 4 )); // trigger setting kde_malloc_is_used -- if( kde_malloc_is_used ) -+// extern int kde_malloc_is_used; -+// free( calloc( 4, 4 )); // trigger setting kde_malloc_is_used -+ if( 0 ) - { - struct mallinfo m = mallinfo(); - usage_sum = m.hblkhd + m.uordblks; diff --git a/opensuse/tdebase/nsplugin-Preference.diff b/opensuse/tdebase/nsplugin-Preference.diff deleted file mode 100644 index 3e3bcca05..000000000 --- a/opensuse/tdebase/nsplugin-Preference.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: nsplugins/pluginscan.cpp -=================================================================== ---- nsplugins/pluginscan.cpp.orig -+++ nsplugins/pluginscan.cpp -@@ -463,7 +463,7 @@ void writeServicesFile( QStringList mime - ts << "Icon=netscape" << endl; - ts << "Comment=" << i18n("Netscape plugin viewer") << endl; - ts << "X-KDE-Library=libnsplugin" << endl; -- ts << "InitialPreference=0" << endl; -+ ts << "InitialPreference=7" << endl; - ts << "ServiceTypes=KParts/ReadOnlyPart,Browser/View" << endl; - ts << "X-KDE-BrowserView-PluginsInfo=nsplugins/pluginsinfo" << endl; - diff --git a/opensuse/tdebase/nsplugin-init-gtk.diff b/opensuse/tdebase/nsplugin-init-gtk.diff deleted file mode 100644 index 882c12443..000000000 --- a/opensuse/tdebase/nsplugin-init-gtk.diff +++ /dev/null @@ -1,49 +0,0 @@ ---- nsplugins/viewer/nsplugin.h~ 2008-02-13 10:40:38.000000000 +0100 -+++ nsplugins/viewer/nsplugin.h 2010-09-22 23:31:58.721961990 +0200 -@@ -315,6 +315,10 @@ private: - QPtrList<NSPluginInstance> _trash; - - QCString _app; -+ -+ // If plugins use gtk, we call the gtk_init function for them --- -+ // but only do it once. -+ static bool s_initedGTK; - }; - - ---- nsplugins/viewer/nsplugin.cpp~ 2008-02-13 10:40:38.000000000 +0100 -+++ nsplugins/viewer/nsplugin.cpp 2010-09-22 23:31:58.775909705 +0200 -@@ -1330,6 +1330,9 @@ DCOPRef NSPluginViewer::newClass( QStrin - - /****************************************************************************/ - -+bool NSPluginClass::s_initedGTK = false; -+ -+typedef void gtkInitFunc(int *argc, char ***argv); - - NSPluginClass::NSPluginClass( const QString &library, - QObject *parent, const char *name ) -@@ -1377,6 +1380,23 @@ NSPluginClass::NSPluginClass( const QStr - - // initialize plugin - kdDebug(1431) << "Plugin library " << library << " loaded!" << endl; -+ -+ // see if it uses gtk -+ if (!s_initedGTK) { -+ gtkInitFunc* gtkInit = (gtkInitFunc*)_handle->symbol("gtk_init"); -+ if (gtkInit) { -+ kdDebug(1431) << "Calling gtk_init for the plugin" << endl; -+ // Prevent gtk_init() from replacing the X error handlers, since the Gtk -+ // handlers abort when they receive an X error, thus killing the viewer. -+ int (*old_error_handler)(Display*,XErrorEvent*) = XSetErrorHandler(0); -+ int (*old_io_error_handler)(Display*) = XSetIOErrorHandler(0); -+ gtkInit(0, 0); -+ XSetErrorHandler(old_error_handler); -+ XSetIOErrorHandler(old_io_error_handler); -+ s_initedGTK = true; -+ } -+ } -+ - _constructed = true; - _error = initialize()!=NPERR_NO_ERROR; - } diff --git a/opensuse/tdebase/openssl1.patch b/opensuse/tdebase/openssl1.patch deleted file mode 100644 index f1d250c44..000000000 --- a/opensuse/tdebase/openssl1.patch +++ /dev/null @@ -1,40 +0,0 @@ ---- kcontrol/crypto/crypto.cpp.orig 2006-10-02 06:31:49.000000000 +1300 -+++ kcontrol/crypto/crypto.cpp -@@ -2321,7 +2321,11 @@ bool KCryptoConfig::loadCiphers() { - unsigned int i; - SSL_CTX *ctx; - SSL *ssl; -+#if OPENSSL_VERSION_NUMBER < 0x00909000L - SSL_METHOD *meth; -+#else -+const SSL_METHOD *meth; -+#endif - - SSLv2Box->clear(); - SSLv3Box->clear(); -@@ -2337,8 +2341,10 @@ SSL_METHOD *meth; - CipherItem *item; - for (i=0; ; i++) { - int j, k; -- SSL_CIPHER *sc; -- sc = (meth->get_cipher)(i); -+#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10000000L -+ const -+#endif -+ SSL_CIPHER *sc = (meth->get_cipher)(i); - if (!sc) - break; - // Leak of sc*? -@@ -2365,8 +2371,10 @@ SSL_METHOD *meth; - - for (i=0; ; i++) { - int j, k; -- SSL_CIPHER *sc; -- sc = (meth->get_cipher)(i); -+#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10000000L -+ const -+#endif -+ SSL_CIPHER *sc = (meth->get_cipher)(i); - if (!sc) - break; - // Leak of sc*? diff --git a/opensuse/tdebase/optional-compmgr.diff b/opensuse/tdebase/optional-compmgr.diff deleted file mode 100644 index d0affeed9..000000000 --- a/opensuse/tdebase/optional-compmgr.diff +++ /dev/null @@ -1,32 +0,0 @@ -Index: kwin/workspace.cpp -=================================================================== ---- kwin/workspace.cpp.orig -+++ kwin/workspace.cpp -@@ -59,6 +59,17 @@ KSelectionOwner* kompmgr_selection; - - bool allowKompmgrRestart = TRUE; - -+bool supportsCompMgr() -+{ -+ int i; -+ -+ bool damageExt = XQueryExtension(qt_xdisplay(), "DAMAGE", &i, &i, &i); -+ bool compositeExt = XQueryExtension(qt_xdisplay(), "Composite", &i, &i, &i); -+ bool xfixesExt = XQueryExtension(qt_xdisplay(), "XFIXES", &i, &i, &i); -+ -+ return damageExt && compositeExt && xfixesExt; -+} -+ - // Rikkus: This class is too complex. It needs splitting further. - // It's a nightmare to understand, especially with so few comments :( - -@@ -199,6 +210,9 @@ Workspace::Workspace( bool restore ) - connect( kapp->desktop(), SIGNAL( resized( int )), SLOT( desktopResized())); - #endif - -+ if (!supportsCompMgr()) -+ options->useTranslucency = false; -+ - // start kompmgr - i wanted to put this into main.cpp, but that would prevent dcop support, as long as Application was no dcop_object - if (options->useTranslucency) - { diff --git a/opensuse/tdebase/quick_browser_menu.diff b/opensuse/tdebase/quick_browser_menu.diff deleted file mode 100644 index dd955115c..000000000 --- a/opensuse/tdebase/quick_browser_menu.diff +++ /dev/null @@ -1,30 +0,0 @@ -Index: kicker/kicker/ui/browser_mnu.cpp -=================================================================== ---- kicker/kicker/ui/browser_mnu.cpp.orig -+++ kicker/kicker/ui/browser_mnu.cpp -@@ -31,6 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE - #include <kfileitem.h> - #include <kglobal.h> - #include <kglobalsettings.h> -+#include <kconfig.h> - #include <kiconloader.h> - #include <kio/global.h> - #include <klocale.h> -@@ -148,12 +149,14 @@ void PanelBrowserMenu::initialize() - // only the first part menu got them - if(_startid == 0 && !_filesOnly) { - insertTitle(path()); -+ KConfig *c = KGlobal::config(); -+ c->setGroup("menus"); - insertItem(CICON("kfm"), i18n("Open in File Manager"), this, SLOT(slotOpenFileManager())); -- if (kapp->authorize("shell_access")) -- insertItem(CICON("terminal"), i18n("Open in Terminal"), this, SLOT(slotOpenTerminal())); -+ if (kapp->authorize("shell_access") && c->readBoolEntry("kickerOpenInTerminalIsVisible",false)) -+ insertItem(CICON("terminal"), i18n("Open in Terminal"), this, SLOT(slotOpenTerminal())); -+ insertSeparator(); - } - -- - bool first_entry = true; - bool dirfile_separator = false; - unsigned int item_count = 0; diff --git a/opensuse/tdebase/remove-beagle-stuff.diff b/opensuse/tdebase/remove-beagle-stuff.diff deleted file mode 100644 index 94b243d9d..000000000 --- a/opensuse/tdebase/remove-beagle-stuff.diff +++ /dev/null @@ -1,34 +0,0 @@ -a "make it compile " patch from Stephan Binner - ---- kicker/kicker/plugins/beaglesearch.cpp -+++ kicker/kicker/plugins/beaglesearch.cpp -@@ -291,11 +291,11 @@ - beagle_query_set_max_hits (beagle_query, max_hits_per_source); // this is per source! - - kdDebug () << "Creating query from \"" << query_str << "\"" << endl; -- for ( QStringList::Iterator it = sources_menu.begin(); it != sources_menu.end(); ++it ) -+ /* for ( QStringList::Iterator it = sources_menu.begin(); it != sources_menu.end(); ++it ) - beagle_query_add_source (beagle_query, g_strdup ((*it).utf8 ())); - - for ( QStringList::Iterator it = types_menu.begin(); it != types_menu.end(); ++it ) -- beagle_query_add_hit_type (beagle_query, g_strdup ((*it).utf8 ())); -+ beagle_query_add_hit_type (beagle_query, g_strdup ((*it).utf8 ()));*/ - - QStringList query_terms; - QString start_date, end_date; -@@ -307,13 +307,13 @@ - else if (key_value_pair.count () == 2) { - QString key = key_value_pair [0].lower (); - QString value = key_value_pair [1]; -- if (key == "mime") -+ if /*(key == "mime") - beagle_query_add_mime_type (beagle_query, g_strdup (value.utf8 ())); - else if (key == "type") - beagle_query_add_hit_type (beagle_query, g_strdup (value.utf8 ())); - else if (key == "source") - beagle_query_add_source (beagle_query, g_strdup (value.utf8 ())); -- else if (key == "start") -+ else if */ (key == "start") - start_date = value; - else if (key == "end") - end_date = value; diff --git a/opensuse/tdebase/restore-description-parens.diff b/opensuse/tdebase/restore-description-parens.diff deleted file mode 100644 index f575dbcb2..000000000 --- a/opensuse/tdebase/restore-description-parens.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: kicker/kicker/ui/service_mnu.cpp -=================================================================== ---- kicker/kicker/ui/service_mnu.cpp.orig -+++ kicker/kicker/ui/service_mnu.cpp -@@ -426,7 +426,7 @@ void PanelServiceMenu::insertMenuItem(KS - { - if (comment.find(serviceName, 0, true) == -1) - { -- serviceName = i18n("Entries in K-menu: %1 app name, %2 description", "%1 - %2").arg(serviceName, comment); -+ serviceName = i18n("Entries in K-menu: %1 app name, %2 description", "%1 (%2)").arg(serviceName, comment); - } - else - { diff --git a/opensuse/tdebase/rotate-wacom-pointers.diff b/opensuse/tdebase/rotate-wacom-pointers.diff deleted file mode 100644 index a8d9c7f96..000000000 --- a/opensuse/tdebase/rotate-wacom-pointers.diff +++ /dev/null @@ -1,291 +0,0 @@ ---- kcontrol/randr/legacyrandrscreen.cpp -+++ kcontrol/randr/legacyrandrscreen.cpp -@@ -30,6 +30,8 @@ - #include <kiconloader.h> - #include <qlabel.h> - #include <qdesktopwidget.h> -+#include <kprocess.h> -+#include <kstandarddirs.h> - - #include "ktimerdialog.h" - #include "legacyrandrscreen.h" -@@ -103,12 +105,55 @@ bool LegacyRandRScreen::applyProposed() - m_currentSize = m_proposedSize; - m_currentRotation = m_proposedRotation; - m_currentRefreshRate = m_proposedRefreshRate; -+ -+ // search wacom utility and set orientation for available wacom pointers -+ QString xsetwacom = KStandardDirs::findExe("xsetwacom"); -+ if (!xsetwacom.isEmpty()) { -+ m_wacomPointers.clear(); -+ KProcess *proc = new KProcess; -+ connect(proc, SIGNAL(receivedStdout(KProcess *, char *, int)), SLOT(gotAvailablePointers(KProcess *, char *, int))); -+ *proc << "xsetwacom" << "list"; -+ if (!proc->start(KProcess::Block,KProcess::Stdout)) -+ kdError("Could not ask xsetwacom for available pointers."); -+ else { -+ for ( QStringList::Iterator it = m_wacomPointers.begin(); it != m_wacomPointers.end(); ++it ) { -+ KProcess *set = new KProcess; -+ *set << "xsetwacom" << "set" << (*it) << "Rotate"; -+ switch (m_currentRotation) { -+ case RR_Rotate_90: -+ *set << "CW"; -+ break; -+ case RR_Rotate_180: -+ *set << "HALF"; -+ break; -+ case RR_Rotate_270: -+ *set << "CCW"; -+ break; -+ default: -+ *set << "NONE"; -+ } -+ if (!set->start()) -+ kdError("Could not set orientation for wacom pointers."); -+ } -+ } -+ } -+ - return true; - } - - return false; - } - -+void LegacyRandRScreen::gotAvailablePointers(KProcess*, char *buffer, int len) -+{ -+ QString myBuf = QString::fromLatin1(buffer, len); -+ QStringList lines = QStringList::split('\n', myBuf); -+ for ( QStringList::Iterator it = lines.begin(); it != lines.end(); it++) { -+ QStringList split = QStringList::split(' ', (*it)); -+ m_wacomPointers+=split.first(); -+ } -+} -+ - bool LegacyRandRScreen::applyProposedAndConfirm() - { - if (proposedChanged()) { ---- kcontrol/randr/legacyrandrscreen.h -+++ kcontrol/randr/legacyrandrscreen.h -@@ -30,6 +30,7 @@ - #include "randr.h" - - class KTimerDialog; -+class KProcess; - - class LegacyRandRScreen : public QObject - { -@@ -135,6 +136,9 @@ public: - void load(KConfig& config); - void save(KConfig& config) const; - -+private slots: -+ void gotAvailablePointers(KProcess*, char *buffer, int len); -+ - private: - XRRScreenConfiguration* m_config; - -@@ -156,6 +160,8 @@ private: - int m_proposedSize; - int m_proposedRefreshRate; - -+ QStringList m_wacomPointers; -+ - KTimerDialog* m_shownDialog; - - }; ---- kcontrol/randr/randrscreen.cpp -+++ kcontrol/randr/randrscreen.cpp -@@ -18,6 +18,8 @@ - - #include <kdebug.h> - #include <kconfig.h> -+#include <kprocess.h> -+#include <kstandarddirs.h> - #include "randrscreen.h" - #include "randrcrtc.h" - #include "randroutput.h" -@@ -429,6 +431,40 @@ bool RandRScreen::applyProposed(bool confirm) - if (succeed && confirm) - succeed = RandR::confirm(r); - -+ if (succeed) { -+ // search wacom utility and set orientation for available wacom pointers -+ QString xsetwacom = KStandardDirs::findExe("xsetwacom"); -+ if (!xsetwacom.isEmpty()) { -+ m_wacomPointers.clear(); -+ KProcess *proc = new KProcess; -+ connect(proc, SIGNAL(receivedStdout(KProcess *, char *, int)), SLOT(gotAvailablePointers(KProcess *, char *, int))); -+ *proc << "xsetwacom" << "list"; -+ if (!proc->start(KProcess::Block,KProcess::Stdout)) -+ kdError("Could not ask xsetwacom for available pointers."); -+ else { -+ for ( QStringList::Iterator it = m_wacomPointers.begin(); it != m_wacomPointers.end(); ++it ) { -+ KProcess *set = new KProcess; -+ *set << "xsetwacom" << "set" << (*it) << "Rotate"; -+ switch (m_unifiedRotation) { -+ case RR_Rotate_90: -+ *set << "CW"; -+ break; -+ case RR_Rotate_180: -+ *set << "HALF"; -+ break; -+ case RR_Rotate_270: -+ *set << "CCW"; -+ break; -+ default: -+ *set << "NONE"; -+ } -+ if (!set->start()) -+ kdError("Could not set orientation for wacom pointers."); -+ } -+ } -+ } -+ } -+ - // if we succeded applying and the user confirmer the changes, - // just return from here - if (succeed) -@@ -447,6 +483,16 @@ bool RandRScreen::applyProposed(bool confirm) - return false; - } - -+void RandRScreen::gotAvailablePointers(KProcess*, char *buffer, int len) -+{ -+ QString myBuf = QString::fromLatin1(buffer, len); -+ QStringList lines = QStringList::split('\n', myBuf); -+ for ( QStringList::Iterator it = lines.begin(); it != lines.end(); it++) { -+ QStringList split = QStringList::split(' ', (*it)); -+ m_wacomPointers+=split.first(); -+ } -+} -+ - void RandRScreen::unifyOutputs() - { - SizeList sizes = unifiedSizes(); ---- kcontrol/randr/randrscreen.h -+++ kcontrol/randr/randrscreen.h -@@ -29,6 +29,7 @@ - - class QAction; - class KConfig; -+class KProcess; - - class RandRScreen : public QObject - { -@@ -95,6 +96,9 @@ public slots: - void save(); - void load(); - -+private slots: -+ void gotAvailablePointers(KProcess*, char *buffer, int len); -+ - signals: - void configChanged(); - -@@ -119,7 +123,7 @@ private: - CrtcMap m_crtcs; - OutputMap m_outputs; - ModeMap m_modes; -- -+ QStringList m_wacomPointers; - }; - #endif - ---- kcontrol/randr/randrcrtc.cpp -+++ kcontrol/randr/randrcrtc.cpp -@@ -17,6 +17,8 @@ - */ - - #include <kdebug.h> -+#include <kprocess.h> -+#include <kstandarddirs.h> - #include "randrcrtc.h" - #include "randrscreen.h" - #include "randroutput.h" -@@ -298,6 +300,38 @@ - m_currentRate = mode.refreshRate(); - emit crtcChanged(m_id, RandR::ChangeMode); - ret = true; -+ -+ // search wacom utility and set orientation for available wacom pointers -+ QString xsetwacom = KStandardDirs::findExe("xsetwacom"); -+ if (!xsetwacom.isEmpty()) { -+ m_wacomPointers.clear(); -+ KProcess *proc = new KProcess; -+ connect(proc, SIGNAL(receivedStdout(KProcess *, char *, int)), SLOT(gotAvailablePointers(KProcess *, char *, int))); -+ *proc << "xsetwacom" << "list"; -+ if (!proc->start(KProcess::Block,KProcess::Stdout)) -+ kdError("Could not ask xsetwacom for available pointers."); -+ else { -+ for ( QStringList::Iterator it = m_wacomPointers.begin(); it != m_wacomPointers.end(); ++it ) { -+ KProcess *set = new KProcess; -+ *set << "xsetwacom" << "set" << (*it) << "Rotate"; -+ switch (m_currentRotation) { -+ case RR_Rotate_90: -+ *set << "CW"; -+ break; -+ case RR_Rotate_180: -+ *set << "HALF"; -+ break; -+ case RR_Rotate_270: -+ *set << "CCW"; -+ break; -+ default: -+ *set << "NONE"; -+ } -+ if (!set->start()) -+ kdError("Could not set orientation for wacom pointers."); -+ } -+ } -+ } - } - else - { -@@ -309,6 +343,16 @@ - return ret; - } - -+void RandRCrtc::gotAvailablePointers(KProcess*, char *buffer, int len) -+{ -+ QString myBuf = QString::fromLatin1(buffer, len); -+ QStringList lines = QStringList::split('\n', myBuf); -+ for ( QStringList::Iterator it = lines.begin(); it != lines.end(); it++) { -+ QStringList split = QStringList::split(' ', (*it)); -+ m_wacomPointers+=split.first(); -+ } -+} -+ - bool RandRCrtc::proposeSize(QSize s) - { - m_proposedRect.setSize(s); ---- kcontrol/randr/randrcrtc.h -+++ kcontrol/randr/randrcrtc.h -@@ -26,6 +26,8 @@ - - #ifdef HAS_RANDR_1_2 - -+class KProcess; -+ - class RandRCrtc : public QObject - { - Q_OBJECT -@@ -62,6 +64,9 @@ - - ModeList modes() const; - -+private slots: -+ void gotAvailablePointers(KProcess*, char *buffer, int len); -+ - signals: - void crtcChanged(RRCrtc c, int changes); - -@@ -86,6 +91,8 @@ - float m_currentRate; - - RandRScreen *m_screen; -+ -+ QStringList m_wacomPointers; - }; - #endif - diff --git a/opensuse/tdebase/runupdater.patch b/opensuse/tdebase/runupdater.patch deleted file mode 100644 index 3dcc4c550..000000000 --- a/opensuse/tdebase/runupdater.patch +++ /dev/null @@ -1,133 +0,0 @@ -Index: runupdater/runupdater.desktop -=================================================================== ---- /dev/null -+++ runupdater/runupdater.desktop -@@ -0,0 +1,9 @@ -+[Desktop Entry] -+Type=Application -+Exec=runupdater -+Terminal=false -+Name=Run Updater Tool -+Icon=www -+ -+X-KDE-StartupNotify=false -+OnlyShowIn=KDE; -Index: runupdater/runupdater.cpp -=================================================================== ---- /dev/null -+++ runupdater/runupdater.cpp -@@ -0,0 +1,96 @@ -+/* -+ Run either opensuseupdater or zen-updater but not both. -+ For opensuseupdater its autostart condition is checked, for zen-updater -+ it's checked whether its autostart file is enabled. -+*/ -+ -+#include <kapplication.h> -+#include <kconfig.h> -+#include <ksimpleconfig.h> -+#include <kstandarddirs.h> -+ -+static bool disabledOSU() -+ { -+ KConfig osu( "opensuseupdaterrc", true ); -+ osu.setGroup( "General" ); -+// fprintf( stderr, "OSU:%d\n", osu.readBoolEntry ("Autostart", true )); -+ return !osu.readBoolEntry( "Autostart", true ); -+ } -+ -+static bool availableOSU() -+ { -+ return !KStandardDirs::findExe( "opensuseupdater" ).isEmpty(); -+ } -+ -+static bool runOSU() -+ { -+ return KApplication::kdeinitExec( "opensuseupdater", QStringList(), NULL, NULL, "0" ) == 0; -+ } -+ -+static bool disabledZU() -+ { -+ KConfig zu( "zen-updater-auto.desktop", true, false, "xdgconf-autostart" ); -+ zu.setGroup( "Desktop Entry" ); -+// fprintf( stderr, "ZU %d\n", zu.readBoolEntry( "Hidden", false ) ); -+ return zu.readBoolEntry( "Hidden", false ); -+ } -+ -+static bool availableZU() -+ { -+ return !KStandardDirs::findExe( "zen-updater" ).isEmpty(); -+ } -+ -+static bool runZU() -+ { -+ return KApplication::kdeinitExec( "zen-updater", QStringList(), NULL, NULL, "0" ) == 0; -+ } -+ -+extern "C" -+int kdemain() -+ { -+ KInstance inst( "runupdater" ); -+ // KSimpleConfig should parse this one just fine, with entries in the default group -+ KSimpleConfig sysconfig( "/etc/sysconfig/sw_management", true ); -+ QString preferred = sysconfig.readEntry( "PREFERRED_SW_MANAGER_STACK" ); -+// fprintf( stderr, "SC1: %s\n", preferred.latin1()); -+ if( preferred.startsWith( "\"" ) && preferred.endsWith( "\"" )) // strip "" -+ preferred = preferred.mid( 1, preferred.length() - 2 ); -+// fprintf( stderr, "SC2: %s\n", preferred.latin1()); -+ if( preferred.lower() == "opensuse" ) -+ { -+ // opensuseupdater preferred - it's it's available, run it if it's enabled, -+ // try zen-updater only if opensuseupdater is not available at all -+ if( availableOSU()) -+ { -+ if( !disabledOSU()) -+ return runOSU(); -+ return 0; -+ } -+ else if( availableZU() && !disabledZU()) -+ return runZU(); -+ return 0; -+ } -+ else if( preferred.lower() == "zlm" ) -+ { -+ // similar like above, just the other way around -+ if( availableZU()) -+ { -+ if( !disabledZU()) -+ return runZU(); -+ return 0; -+ } -+ else if( availableOSU() && !disabledOSU()) -+ return runOSU(); -+ return 0; -+ } -+ else -+ { -+ // prefer opensuseupdater, but try to run zen-updater if opensuseupdater is not run -+ // the difference is that zen-updater is still run if opensuseupdater is disabled -+ if( availableOSU() && !disabledOSU() && runOSU()) -+ return 0; -+ if( availableZU() && !disabledZU() && runZU()) -+ return 0; -+ return 0; -+ } -+ } -Index: runupdater/Makefile.am -=================================================================== ---- /dev/null -+++ runupdater/Makefile.am -@@ -0,0 +1,13 @@ -+INCLUDES = $(all_includes) -+ -+bin_PROGRAMS = -+lib_LTLIBRARIES = -+kdeinit_LTLIBRARIES = runupdater.la -+ -+runupdater_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN) -+runupdater_la_LIBADD = $(LIB_KDECORE) -+ -+runupdater_la_SOURCES = runupdater.cpp -+ -+autostart_DATA = runupdater.desktop -+autostartdir = $(datadir)/autostart diff --git a/opensuse/tdebase/select-wm-gui.diff b/opensuse/tdebase/select-wm-gui.diff deleted file mode 100644 index 823262962..000000000 --- a/opensuse/tdebase/select-wm-gui.diff +++ /dev/null @@ -1,635 +0,0 @@ -Subject: GUI configuration for selecting WM -From: Lubos Lunak -Feature: bnc#332079 -Patch-upstream: no - -Index: ksmserver/startup.cpp -=================================================================== ---- ksmserver/startup.cpp.orig -+++ ksmserver/startup.cpp -@@ -103,38 +103,39 @@ void KSMServer::restoreSession( QString - config->setGroup( sessionGroup ); - int count = config->readNumEntry( "count" ); - appsToStart = count; -- -- QValueList<QStringList> wmCommands; -- if ( !wm.isEmpty() ) { -- for ( int i = 1; i <= count; i++ ) { -- QString n = QString::number(i); -- if ( wm == config->readEntry( QString("program")+n ) ) { -- wmCommands << config->readListEntry( QString("restartCommand")+n ); -- } -- } -- } -- if ( wmCommands.isEmpty() ) -- wmCommands << ( QStringList() << wm ); -- - publishProgress( appsToStart, true ); -+ upAndRunning( "ksmserver" ); - connectDCOPSignal( launcher, launcher, "autoStart0Done()", - "autoStart0Done()", true); - connectDCOPSignal( launcher, launcher, "autoStart1Done()", - "autoStart1Done()", true); - connectDCOPSignal( launcher, launcher, "autoStart2Done()", - "autoStart2Done()", true); -- upAndRunning( "ksmserver" ); - -- if ( !wmCommands.isEmpty() ) { -- // when we have a window manager, we start it first and give -- // it some time before launching other processes. Results in a -- // visually more appealing startup. -- for (uint i = 0; i < wmCommands.count(); i++) -- startApplication( wmCommands[i] ); -- QTimer::singleShot( 4000, this, SLOT( autoStart0() ) ); -- } else { -- autoStart0(); -+ // find all commands to launch the wm in the session -+ QValueList<QStringList> wmStartCommands; -+ if ( !wm.isEmpty() ) { -+ for ( int i = 1; i <= count; i++ ) { -+ QString n = QString::number(i); -+ // special hack for it, both kde3(=native) and kde4 kwin have the same program, -+ // but the command for kde4 kwin starts with the kde4 wrapper -+ if( config->readEntry( QString("program")+n ) == "kwin" ) { -+ QStringList command = config->readListEntry( QString("restartCommand")+n ); -+ if( wmCommands.count() > 1 && wmCommands[ 0 ].endsWith( "kde4" ) -+ && command.count() > 1 && command[ 0 ].endsWith( "kde4" )) { -+ wmStartCommands << command; // kde4 wanted, kde4 found -+ } else if(!( wmCommands.count() > 1 && wmCommands[ 0 ].endsWith( "kde4" )) -+ && !( command.count() > 1 && command[ 0 ].endsWith( "kde4" ))) { -+ wmStartCommands << command; // native wanted, native found -+ } -+ } else if ( wm == config->readEntry( QString("program")+n ) ) { -+ wmStartCommands << config->readListEntry( QString("restartCommand")+n ); -+ } -+ } - } -+ if( wmStartCommands.isEmpty()) // otherwise use the configured default -+ wmStartCommands << wmCommands; -+ launchWM( wmStartCommands ); - } - - /*! -@@ -157,17 +158,53 @@ void KSMServer::startDefaultSession() - "autoStart1Done()", true); - connectDCOPSignal( launcher, launcher, "autoStart2Done()", - "autoStart2Done()", true); -- startApplication( wm ); -+ launchWM( QValueList< QStringList >() << wmCommands ); -+} -+ -+void KSMServer::launchWM( const QValueList< QStringList >& wmStartCommands ) -+{ -+ assert( state == LaunchingWM ); -+ -+ // when we have a window manager, we start it first and give -+ // it some time before launching other processes. Results in a -+ // visually more appealing startup. -+ wmProcess = startApplication( wmStartCommands[ 0 ] ); -+ connect( wmProcess, SIGNAL( processExited( KProcess* )), SLOT( wmProcessChange())); -+ // there can be possibly more wm's (because of forking for multihead), -+ // but in such case care only about the process of the first one -+ for (unsigned int i = 1; i < wmStartCommands.count(); i++) -+ startApplication( wmStartCommands[i] ); - QTimer::singleShot( 4000, this, SLOT( autoStart0() ) ); - } - - - void KSMServer::clientSetProgram( KSMClient* client ) - { -- if ( !wm.isEmpty() && client->program() == wm ) -+ if ( client->program() == wm ) - autoStart0(); - } - -+void KSMServer::wmProcessChange() -+{ -+ if( state != LaunchingWM ) -+ { // don't care about the process when not in the wm-launching state anymore -+ wmProcess = NULL; -+ return; -+ } -+ if( !wmProcess->isRunning()) -+ { // wm failed to launch for some reason, go with kwin instead -+ kdWarning( 1218 ) << "Window manager '" << wm << "' failed to launch" << endl; -+ if( wm == "kwin" ) -+ return; // uhoh, kwin itself failed -+ kdDebug( 1218 ) << "Launching KWin" << endl; -+ wm = "kwin"; -+ wmCommands = ( QStringList() << "kwin" ); -+ // launch it -+ launchWM( QValueList< QStringList >() << wmCommands ); -+ return; -+ } -+} -+ - void KSMServer::autoStart0() - { - if( state != LaunchingWM ) -Index: ksmserver/server.h -=================================================================== ---- ksmserver/server.h.orig -+++ ksmserver/server.h -@@ -30,6 +30,8 @@ Copyright (C) 2000 Matthias Ettrich <ett - #define SESSION_PREVIOUS_LOGOUT "saved at previous logout" - #define SESSION_BY_USER "saved by user" - -+class KProcess; -+ - typedef QValueList<QCString> QCStringList; - class KSMListener; - class KSMConnection; -@@ -98,6 +100,8 @@ public: - KApplication::ShutdownType sdtype, - KApplication::ShutdownMode sdmode ); - -+ void launchWM( const QValueList< QStringList >& wmStartCommands ); -+ - public slots: - void cleanUp(); - -@@ -120,6 +124,7 @@ private slots: - void autoStart2(); - void tryRestoreNext(); - void startupSuspendTimeout(); -+ void wmProcessChange(); - - private: - void handlePendingInteractions(); -@@ -138,13 +143,14 @@ private: - void startProtection(); - void endProtection(); - -- void startApplication( QStringList command, -+ KProcess* startApplication( QStringList command, - const QString& clientMachine = QString::null, - const QString& userId = QString::null ); - void executeCommand( const QStringList& command ); - - bool isWM( const KSMClient* client ) const; - bool isWM( const QString& program ) const; -+ void selectWm( const QString& kdewm ); - bool defaultSession() const; // empty session - void setupXIOErrorHandler(); - -@@ -223,6 +229,8 @@ private: - int lastAppStarted; - QString lastIdStarted; - -+ QStringList wmCommands; -+ KProcess* wmProcess; - QStringList excludeApps; - - WindowMap legacyWindows; -Index: ksmserver/Makefile.am -=================================================================== ---- ksmserver/Makefile.am.orig -+++ ksmserver/Makefile.am -@@ -15,7 +15,7 @@ - # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - --SUBDIRS = . -+SUBDIRS = . windowmanagers - - INCLUDES= -I$(top_srcdir)/kdmlib $(all_includes) $(DBUS_INCS) - -Index: ksmserver/main.cpp -=================================================================== ---- ksmserver/main.cpp.orig -+++ ksmserver/main.cpp -@@ -203,8 +203,6 @@ extern "C" KDE_EXPORT int kdemain( int a - } - - QCString wm = args->getOption("windowmanager"); -- if ( wm.isEmpty() ) -- wm = "kwin"; - - bool only_local = args->isSet("local"); - #ifndef HAVE__ICETRANSNOLISTEN -Index: ksmserver/server.cpp -=================================================================== ---- ksmserver/server.cpp.orig -+++ ksmserver/server.cpp -@@ -77,6 +77,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE - #include <kprocess.h> - #include <dcopclient.h> - #include <dcopref.h> -+#include <kdesktopfile.h> -+#include <kshell.h> - - #include "server.h" - #include "global.h" -@@ -98,11 +100,11 @@ KSMServer* KSMServer::self() - /*! Utility function to execute a command on the local machine. Used - * to restart applications. - */ --void KSMServer::startApplication( QStringList command, const QString& clientMachine, -+KProcess* KSMServer::startApplication( QStringList command, const QString& clientMachine, - const QString& userId ) - { - if ( command.isEmpty() ) -- return; -+ return NULL; - if ( !userId.isEmpty()) { - struct passwd* pw = getpwuid( getuid()); - if( pw != NULL && userId != QString::fromLocal8Bit( pw->pw_name )) { -@@ -116,12 +118,12 @@ void KSMServer::startApplication( QStrin - command.prepend( clientMachine ); - command.prepend( xonCommand ); // "xon" by default - } -- int n = command.count(); -- QCString app = command[0].latin1(); -- QValueList<QCString> argList; -- for ( int i=1; i < n; i++) -- argList.append( QCString(command[i].latin1())); -- DCOPRef( launcher ).send( "exec_blind", app, DCOPArg( argList, "QValueList<QCString>" ) ); -+ KProcess* process = new KProcess( this ); -+ *process << command; -+ // make it auto-delete -+ connect( process, SIGNAL( processExited( KProcess* )), process, SLOT( deleteLater())); -+ process->start(); -+ return process; - } - - /*! Utility function to execute a command on the local machine. Used -@@ -580,10 +582,10 @@ extern "C" int _IceTransNoListen(const c - - KSMServer::KSMServer( const QString& windowManager, bool _only_local ) - : DCOPObject("ksmserver"), sessionGroup( "" ) -+ , wmProcess( NULL ) - { - the_server = this; - clean = false; -- wm = windowManager; - - shutdownType = KApplication::ShutdownTypeNone; - -@@ -595,6 +597,9 @@ KSMServer::KSMServer( const QString& win - config->setGroup("General" ); - clientInteracting = 0; - xonCommand = config->readEntry( "xonCommand", "xon" ); -+ -+ KGlobal::dirs()->addResourceType( "windowmanagers", "share/apps/ksmserver/windowmanagers" ); -+ selectWm( windowManager ); - - connect( &knotifyTimeoutTimer, SIGNAL( timeout()), SLOT( knotifyTimeout())); - connect( &startupSuspendTimeoutTimer, SIGNAL( timeout()), SLOT( startupSuspendTimeout())); -@@ -851,14 +856,12 @@ void KSMServer::storeSession() - config->setGroup( sessionGroup ); - count = 0; - -- if ( !wm.isEmpty() ) { -- // put the wm first -- for ( KSMClient* c = clients.first(); c; c = clients.next() ) -- if ( c->program() == wm ) { -- clients.prepend( clients.take() ); -- break; -- } -- } -+ // put the wm first -+ for ( KSMClient* c = clients.first(); c; c = clients.next() ) -+ if ( c->program() == wm ) { -+ clients.prepend( clients.take() ); -+ break; -+ } - - for ( KSMClient* c = clients.first(); c; c = clients.next() ) { - int restartHint = c->restartStyleHint(); -@@ -909,14 +912,65 @@ bool KSMServer::isWM( const KSMClient* c - - bool KSMServer::isWM( const QString& program ) const - { -- // KWin relies on ksmserver's special treatment in phase1, -- // therefore make sure it's recognized even if ksmserver -- // was initially started with different WM, and kwin replaced -- // it later -- return program == wm || program == "kwin"; -+ return program == wm; - } - - bool KSMServer::defaultSession() const - { - return sessionGroup.isEmpty(); - } -+ -+static bool noDisplay( KDesktopFile& f ) -+{ -+ KConfigGroup gr( &f, "Desktop Entry" ); -+ if (gr.readBoolEntry("NoDisplay", false)) { -+ return true; -+ } -+ if (gr.hasKey("OnlyShowIn")) { -+ if (!gr.readListEntry("OnlyShowIn", ';').contains("KDE")) -+ return true; -+ } -+ if (gr.hasKey("NotShowIn")) { -+ if (gr.readListEntry("NotShowIn", ';').contains("KDE")) -+ return true; -+ } -+ return false; -+} -+ -+// selection logic: -+// - $KDEWM is set - use that -+// - a wm is selected using the kcm - use that -+// - if that fails, just use KWin -+void KSMServer::selectWm( const QString& kdewm ) -+{ -+ wm = "kwin"; // defaults -+ wmCommands = ( QStringList() << "kwin" ); -+ if( !kdewm.isEmpty()) -+ { -+ wmCommands = ( QStringList() << kdewm ); -+ wm = kdewm; -+ return; -+ } -+ KConfigGroup config(KGlobal::config(), "General"); -+ QString cfgwm = config.readEntry( "windowManager", "kwin" ); -+ KDesktopFile file( cfgwm + ".desktop", true, "windowmanagers" ); -+ if( noDisplay( file )) -+ return; -+ if( !file.tryExec()) -+ return; -+ file.setDesktopGroup(); -+ QString testexec = file.readEntry( "X-KDE-WindowManagerTestExec" ); -+ if( !testexec.isEmpty()) -+ { -+ int ret = system( QFile::encodeName( testexec )); -+ if( !WIFEXITED( ret ) || WEXITSTATUS( ret ) != 0 ) -+ return; -+ } -+ QStringList cfgWmCommands = KShell::splitArgs( file.readEntry( "Exec" )); -+ if( cfgWmCommands.isEmpty()) -+ return; -+ QString smname = file.readEntry( "X-KDE-WindowManagerId" ); -+ // ok -+ wm = smname.isEmpty() ? cfgwm : smname; -+ wmCommands = cfgWmCommands; -+} -Index: ksmserver/windowmanagers/openbox.desktop -=================================================================== ---- /dev/null -+++ ksmserver/windowmanagers/openbox.desktop -@@ -0,0 +1,5 @@ -+[Desktop Entry] -+Name=Openbox -+Exec=openbox -+TryExec=openbox -+ -Index: ksmserver/windowmanagers/Makefile.am -=================================================================== ---- /dev/null -+++ ksmserver/windowmanagers/Makefile.am -@@ -0,0 +1,2 @@ -+windowmanager_DATA = compiz-custom.desktop compiz.desktop kwin4.desktop metacity.desktop openbox.desktop -+windowmanagerdir = $(kde_datadir)/ksmserver/windowmanagers -Index: ksmserver/windowmanagers/compiz.desktop -=================================================================== ---- /dev/null -+++ ksmserver/windowmanagers/compiz.desktop -@@ -0,0 +1,4 @@ -+[Desktop Entry] -+Name=Compiz -+Exec=compiz ccp -+TryExec=compiz -Index: ksmserver/windowmanagers/compiz-custom.desktop -=================================================================== ---- /dev/null -+++ ksmserver/windowmanagers/compiz-custom.desktop -@@ -0,0 +1,5 @@ -+[Desktop Entry] -+Name=Compiz custom (create wrapper script 'compiz-kde-launcher' to launch it) -+Exec=compiz-kde-launcher -+TryExec=compiz -+X-KDE-WindowManagerId=compiz -Index: ksmserver/windowmanagers/kwin4.desktop -=================================================================== ---- /dev/null -+++ ksmserver/windowmanagers/kwin4.desktop -@@ -0,0 +1,6 @@ -+[Desktop Entry] -+Name=KWin (KDE4) -+Exec=kde4 /usr/bin/kwin -+TryExec=/usr/bin/kwin -+X-KDE-WindowManagerId=kwin -+ -Index: ksmserver/windowmanagers/metacity.desktop -=================================================================== ---- /dev/null -+++ ksmserver/windowmanagers/metacity.desktop -@@ -0,0 +1,4 @@ -+[Desktop Entry] -+Name=Metacity (GNOME) -+Exec=metacity -+TryExec=metacity -Index: kcontrol/smserver/smserverconfigdlg.ui -=================================================================== ---- kcontrol/smserver/smserverconfigdlg.ui.orig -+++ kcontrol/smserver/smserverconfigdlg.ui -@@ -1,4 +1,4 @@ --<!DOCTYPE UI><UI version="3.2" stdsetdef="1"> -+<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> - <class>SMServerConfigDlg</class> - <widget class="QWidget"> - <property name="name"> -@@ -8,8 +8,8 @@ - <rect> - <x>0</x> - <y>0</y> -- <width>325</width> -- <height>366</height> -+ <width>334</width> -+ <height>476</height> - </rect> - </property> - <property name="caption"> -@@ -148,6 +148,24 @@ - </widget> - </vbox> - </widget> -+ <widget class="QGroupBox"> -+ <property name="name"> -+ <cstring>windowManagerGroup</cstring> -+ </property> -+ <property name="title"> -+ <string>Window Manager</string> -+ </property> -+ <hbox> -+ <property name="name"> -+ <cstring>unnamed</cstring> -+ </property> -+ <widget class="QComboBox"> -+ <property name="name"> -+ <cstring>windowManagerCombo</cstring> -+ </property> -+ </widget> -+ </hbox> -+ </widget> - <widget class="QButtonGroup"> - <property name="name"> - <cstring>advancedGroup</cstring> -@@ -236,6 +254,12 @@ - <receiver>SMServerConfigDlg</receiver> - <slot>configChanged()</slot> - </connection> -+ <connection> -+ <sender>windowManagerCombo</sender> -+ <signal>activated(int)</signal> -+ <receiver>SMServerConfigDlg</receiver> -+ <slot>configChanged()</slot> -+ </connection> - </connections> - <includes> - <include location="global" impldecl="in implementation">kdialog.h</include> -Index: kcontrol/smserver/kcmsmserver.cpp -=================================================================== ---- kcontrol/smserver/kcmsmserver.cpp.orig -+++ kcontrol/smserver/kcmsmserver.cpp -@@ -22,6 +22,8 @@ - #include <qcheckbox.h> - #include <qlayout.h> - #include <qradiobutton.h> -+#include <qcombobox.h> -+#include <qfile.h> - - #include <dcopclient.h> - -@@ -29,6 +31,12 @@ - #include <kconfig.h> - #include <kgenericfactory.h> - #include <klineedit.h> -+#include <kstandarddirs.h> -+#include <qregexp.h> -+#include <kdesktopfile.h> -+#include <kdebug.h> -+#include <kprocess.h> -+#include <kmessagebox.h> - - #include "kcmsmserver.h" - #include "smserverconfigimpl.h" -@@ -52,6 +60,7 @@ SMServerConfig::SMServerConfig( QWidget - - dialog->show(); - topLayout->add(dialog); -+ KGlobal::dirs()->addResourceType( "windowmanagers", "share/apps/ksmserver/windowmanagers" ); - load(); - - } -@@ -90,6 +99,7 @@ void SMServerConfig::load(bool useDefaul - dialog->logoutRadio->setChecked(true); - break; - } -+ loadWMs(c->readEntry("windowManager", "kwin")); - dialog->excludeLineedit->setText( c->readEntry("excludeApps")); - - delete c; -@@ -116,6 +126,7 @@ void SMServerConfig::save() - dialog->rebootRadio->isChecked() ? - int(KApplication::ShutdownTypeReboot) : - int(KApplication::ShutdownTypeNone)); -+ c->writeEntry("windowManager", currentWM()); - c->writeEntry("excludeApps", dialog->excludeLineedit->text()); - c->sync(); - delete c; -@@ -123,6 +134,12 @@ void SMServerConfig::save() - // update the k menu if necessary - QByteArray data; - kapp->dcopClient()->send( "kicker", "kicker", "configure()", data ); -+ if( oldwm != currentWM()) -+ { // TODO switch it already in the session instead and tell ksmserver -+ KMessageBox::information( this, -+ i18n( "The new window manager will be used when KDE is started the next time." ), -+ i18n( "Window manager change" ), "windowmanagerchange" ); -+ } - } - - void SMServerConfig::defaults() -@@ -130,5 +147,72 @@ void SMServerConfig::defaults() - load( true ); - } - -+static bool noDisplay( KDesktopFile& f ) -+{ -+ KConfigGroup gr( &f, "Desktop Entry" ); -+ if (gr.readBoolEntry("NoDisplay", false)) { -+ return true; -+ } -+ if (gr.hasKey("OnlyShowIn")) { -+ if (!gr.readListEntry("OnlyShowIn", ';').contains("KDE")) -+ return true; -+ } -+ if (gr.hasKey("NotShowIn")) { -+ if (gr.readListEntry("NotShowIn", ';').contains("KDE")) -+ return true; -+ } -+ return false; -+} -+ -+void SMServerConfig::loadWMs( const QString& current ) -+{ -+ QString kwinname = i18n( "KWin (KDE default)" ); -+ dialog->windowManagerCombo->insertItem( kwinname ); -+ dialog->windowManagerCombo->setCurrentItem( 0 ); -+ wms[ kwinname ] = "kwin"; -+ oldwm = "kwin"; -+ QStringList list = KGlobal::dirs()->findAllResources( "windowmanagers", QString(), false, true ); -+ QRegExp reg( ".*/([^/\\.]*)\\.[^/\\.]*" ); -+ for( QStringList::ConstIterator it = list.begin(); -+ it != list.end(); -+ ++it ) -+ { -+ QString wmfile = *it; -+ KDesktopFile file( wmfile ); -+ if( noDisplay( file )) -+ continue; -+ if( !file.tryExec()) -+ continue; -+ file.setDesktopGroup(); -+ QString testexec = file.readEntry( "X-KDE-WindowManagerTestExec" ); -+ if( !testexec.isEmpty()) -+ { -+ int ret = system( QFile::encodeName( testexec )); -+ if( !WIFEXITED( ret ) || WEXITSTATUS( ret ) != 0 ) -+ continue; -+ } -+ QString name = file.readName(); -+ if( name.isEmpty()) -+ continue; -+ if( !reg.exactMatch( wmfile )) -+ continue; -+ QString wm = reg.cap( 1 ); -+ if( wms.values().contains( wm )) -+ continue; -+ wms[ name ] = wm; -+ dialog->windowManagerCombo->insertItem( name ); -+ if( wms[ name ] == current ) // make it selected -+ { -+ dialog->windowManagerCombo->setCurrentItem( dialog->windowManagerCombo->count() - 1 ); -+ oldwm = wm; -+ } -+ } -+} -+ -+QString SMServerConfig::currentWM() const -+{ -+ return wms[ dialog->windowManagerCombo->currentText() ]; -+} -+ - #include "kcmsmserver.moc" - -Index: kcontrol/smserver/kcmsmserver.h -=================================================================== ---- kcontrol/smserver/kcmsmserver.h.orig -+++ kcontrol/smserver/kcmsmserver.h -@@ -40,6 +40,10 @@ public: - - private: - SMServerConfigImpl* dialog; -+ void loadWMs( const QString& current ); -+ QString currentWM() const; -+ QMap< QString, QString > wms; // i18n text -> internal name -+ QString oldwm; // the original value - - }; - diff --git a/opensuse/tdebase/short-menus.diff b/opensuse/tdebase/short-menus.diff deleted file mode 100644 index 784c75ebb..000000000 --- a/opensuse/tdebase/short-menus.diff +++ /dev/null @@ -1,209 +0,0 @@ -Index: kdesktop/Makefile.am -=================================================================== ---- kdesktop/Makefile.am.orig -+++ kdesktop/Makefile.am -@@ -6,6 +6,8 @@ kdesktop_la_LIBADD = libkdesktopsettin - - SUBDIRS = . lock pics patterns programs init kwebdesktop - -+KDE_OPTIONS = nofinal -+ - ####### Files - - bin_PROGRAMS = kcheckrunning -Index: kicker/kicker/ui/service_mnu.cpp -=================================================================== ---- kicker/kicker/ui/service_mnu.cpp.orig -+++ kicker/kicker/ui/service_mnu.cpp -@@ -111,6 +111,11 @@ void PanelServiceMenu::fillMenu(KService - QStringList suppressGenericNames = _root->suppressGenericNames(); - - KServiceGroup::List::ConstIterator it = _list.begin(); -+ KSortableValueList<KSharedPtr<KSycocaEntry>,QCString> slist; -+ KSortableValueList<KSharedPtr<KSycocaEntry>,QCString> glist; -+ QMap<QString,QString> specialTitle; -+ QMap<QString,QString> categoryIcon; -+ - bool separatorNeeded = false; - for (; it != _list.end(); ++it) - { -@@ -118,19 +123,108 @@ void PanelServiceMenu::fillMenu(KService - - if (e->isType(KST_KServiceGroup)) - { -+ KServiceGroup::Ptr g(static_cast<KServiceGroup *>(e)); -+ if ( KickerSettings::reduceMenuDepth() && g->SuSEshortMenu() ){ -+ KServiceGroup::List l = g->entries(true, excludeNoDisplay_ ); -+ if ( l.count() == 1 ) { -+ // the special case, we want to short the menu. -+ // TOFIX? : this works only for one level -+ KServiceGroup::List::ConstIterator _it=l.begin(); -+ KSycocaEntry *_e = *_it; -+ if (_e->isType(KST_KService)) { -+ KService::Ptr s(static_cast<KService *>(_e)); -+ QString key; -+ if ( g->SuSEgeneralDescription() ) { -+ // we use the application name -+ key = s->name(); -+ if( !s->genericName().isEmpty()) { -+ if (KickerSettings::menuEntryFormat() == KickerSettings::NameAndDescription) -+ key = s->name() + " (" + s->genericName() + ")"; -+ else if (KickerSettings::menuEntryFormat() == KickerSettings::DescriptionAndName) -+ key = s->genericName() + " (" + s->name() + ")"; -+ else if (KickerSettings::menuEntryFormat() == KickerSettings::DescriptionOnly) -+ key = s->genericName(); -+ } -+ } -+ else { -+ // we use the normal menu description -+ key = s->name(); -+ if( !s->genericName().isEmpty()) { -+ if (KickerSettings::menuEntryFormat() == KickerSettings::NameAndDescription) -+ key = s->name() + " (" + g->caption() + ")"; -+ else if (KickerSettings::menuEntryFormat() == KickerSettings::DescriptionAndName) -+ key = g->caption() + " (" + s->name() + ")"; -+ else if (KickerSettings::menuEntryFormat() == KickerSettings::DescriptionOnly) -+ key = g->caption(); -+ } -+ } -+ specialTitle.insert( _e->name(), key ); -+ categoryIcon.insert( _e->name(), g->icon() ); -+ slist.insert( key.local8Bit(), _e ); -+ // and escape from here -+ continue; -+ } -+ } -+ } -+ glist.insert( g->caption().local8Bit(), e ); -+ }else if( e->isType(KST_KService)) { -+ KService::Ptr s(static_cast<KService *>(e)); -+ QString name = s->name(); -+ if( !s->genericName().isEmpty()) { -+ if (KickerSettings::menuEntryFormat() == KickerSettings::NameAndDescription) -+ name = s->name() + " (" + s->genericName() + ")"; -+ else if (KickerSettings::menuEntryFormat() == KickerSettings::DescriptionAndName) -+ name = s->genericName() + " (" + s->name() + ")"; -+ else if (KickerSettings::menuEntryFormat() == KickerSettings::DescriptionOnly) -+ name = s->genericName(); -+ } -+ slist.insert( name.local8Bit(), e ); -+ } else -+ slist.insert( e->name().local8Bit(), e ); -+ } -+ -+ _list = _root->SuSEsortEntries( slist, glist, excludeNoDisplay_, true ); -+ it = _list.begin(); - -+ for (; it != _list.end(); ++it) { -+ -+ KSycocaEntry * e = *it; -+ -+ if (e->isType(KST_KServiceGroup)) { - KServiceGroup::Ptr g(static_cast<KServiceGroup *>(e)); -+ if ( KickerSettings::reduceMenuDepth() && g->SuSEshortMenu() ){ -+ KServiceGroup::List l = g->entries(true, excludeNoDisplay_ ); -+ if ( l.count() == 1 ) { -+ /* // the special case, we want to short the menu. -+ // TOFIX? : this works only for one level -+ KServiceGroup::List::ConstIterator _it=l.begin(); -+ KSycocaEntry *_e = *_it; -+ if (_e->isType(KST_KService)) { -+ KService::Ptr s(static_cast<KService *>(_e)); -+ if ( g->SuSEgeneralDescription() ) -+ // we use the application name -+ insertMenuItem(s, id++, -1, 0, QString::null, QString::null, g->icon() ); -+ else -+ // we use the normal menu description -+ insertMenuItem(s, id++, -1, 0, QString::null, g->caption(), g->icon() ); -+ // and escape from here */ -+ continue; -+ // } -+ } -+ } -+ // standard sub menu -+ - QString groupCaption = g->caption(); -- -+ - // Avoid adding empty groups. - KServiceGroup::Ptr subMenuRoot = KServiceGroup::group(g->relPath()); -- -+ - int nbChildCount = subMenuRoot->childCount(); - if (nbChildCount == 0 && !g->showEmptyMenu()) -- { -+ { - continue; -- } -- -+ } -+ - QString inlineHeaderName = g->showInlineHeader() ? groupCaption : ""; - // Item names may contain ampersands. To avoid them being converted - // to accelerators, replace them with two ampersands. -@@ -214,7 +308,7 @@ void PanelServiceMenu::fillMenu(KService - } - - KService::Ptr s(static_cast<KService *>(e)); -- insertMenuItem(s, id++, -1, &suppressGenericNames); -+ insertMenuItem(s, id++, -1, &suppressGenericNames, QString::null, specialTitle[s->name()], categoryIcon[s->name()] ); - } - else if (e->isType(KST_KServiceSeparator)) - { -@@ -296,7 +390,8 @@ void PanelServiceMenu::configChanged() - void PanelServiceMenu::insertMenuItem(KService::Ptr & s, int nId, - int nIndex/*= -1*/, - const QStringList *suppressGenericNames /* = 0 */, -- const QString & aliasname) -+ const QString & aliasname, const QString & label /*=QString::NULL*/, -+ const QString & categoryIcon /*=QString::null*/) - { - QString serviceName = (aliasname.isEmpty() ? s->name() : aliasname).simplifyWhiteSpace(); - QString comment = s->genericName().simplifyWhiteSpace(); -@@ -347,7 +442,15 @@ void PanelServiceMenu::insertMenuItem(KS - // to accelerators, replace them with two ampersands. - serviceName.replace("&", "&&"); - -- int newId = insertItem(KickerLib::menuIconSet(s->icon()), serviceName, nId, nIndex); -+ QString icon = s->icon(); -+ if (icon=="unknown") -+ icon = categoryIcon; -+ -+ int newId; -+ if ( label.isEmpty() ) -+ newId = insertItem(KickerLib::menuIconSet(s->icon()), serviceName, nId, nIndex); -+ else -+ newId = insertItem(KickerLib::menuIconSet(s->icon()), label, nId, nIndex); - entryMap_.insert(newId, static_cast<KSycocaEntry*>(s)); - } - -Index: kicker/kicker/ui/service_mnu.h -=================================================================== ---- kicker/kicker/ui/service_mnu.h.orig -+++ kicker/kicker/ui/service_mnu.h -@@ -83,7 +83,8 @@ protected slots: - protected: - void insertMenuItem(KService::Ptr & s, int nId, int nIndex = -1, - const QStringList *suppressGenericNames=0, -- const QString &aliasname = QString::null); -+ const QString &aliasname = QString::null, -+ const QString &label = QString::null, const QString &categoryIcon = QString::null); - virtual PanelServiceMenu * newSubMenu(const QString & label, - const QString & relPath, - QWidget * parent, const char * name, -Index: kicker/libkicker/kickerSettings.kcfg -=================================================================== ---- kicker/libkicker/kickerSettings.kcfg.orig -+++ kicker/libkicker/kickerSettings.kcfg -@@ -126,6 +126,11 @@ - <default>true</default> - </entry> - -+<entry name="ReduceMenuDepth" type="Bool" > -+ <label>Simplify menus with only a single item inside</label> -+ <default>false</default> -+ </entry> -+ - <entry name="MenuEntryHeight" type="Int" > - <label>Height of menu entries in pixels</label> - <default>0</default> diff --git a/opensuse/tdebase/show-konqueror-in-menu.diff b/opensuse/tdebase/show-konqueror-in-menu.diff deleted file mode 100644 index a5f4b9ab3..000000000 --- a/opensuse/tdebase/show-konqueror-in-menu.diff +++ /dev/null @@ -1,30 +0,0 @@ -Index: konqueror/konqfilemgr.desktop -=================================================================== ---- konqueror/konqfilemgr.desktop.orig -+++ konqueror/konqfilemgr.desktop -@@ -4,7 +4,8 @@ Exec=kfmclient openProfile filemanagemen - Icon=kfm - DocPath=konqueror/index.html - --Name=File Manager -+Name=Konqueror -+GenericName=File Manager - Name[af]=Lêer Bestuurder - Name[ar]=مدبّر الملÙات - Name[az]=Fayl Ä°darÉ™cisi -Index: konqueror/Makefile.am -=================================================================== ---- konqueror/Makefile.am.orig -+++ konqueror/Makefile.am -@@ -69,10 +69,7 @@ messages: rc.cpp - $(XGETTEXT) -kaliasLocal rc.cpp *.h *.cc *view/*h *view/*cc kedit*/*.h kedit*/*.cpp about/*.h about/*.cc remoteencodingplugin/*.cpp remoteencodingplugin/*.h shellcmdplugin/*.cpp -o `find sidebar -name "*.cpp"` `find sidebar -name "*.h"` -o $(podir)/konqueror.pot - - xdg_apps_DATA = kfmclient.desktop kfmclient_dir.desktop kfmclient_html.desktop \ -- kfmclient_war.desktop konqbrowser.desktop konquerorsu.desktop Home.desktop -- --konq_data4_DATA = konqfilemgr.desktop --konq_data4dir = $(kde_appsdir)/.hidden -+ kfmclient_war.desktop konqbrowser.desktop konquerorsu.desktop Home.desktop konqfilemgr.desktop - - kde_kcfg_DATA = konqueror.kcfg - diff --git a/opensuse/tdebase/simplify-randr-settings.diff b/opensuse/tdebase/simplify-randr-settings.diff deleted file mode 100644 index 93add22fd..000000000 --- a/opensuse/tdebase/simplify-randr-settings.diff +++ /dev/null @@ -1,91 +0,0 @@ ---- kcontrol/randr/krandrmodule.cpp -+++ kcontrol/randr/krandrmodule.cpp -@@ -114,23 +114,15 @@ KRandRModule::KRandRModule(QWidget *parent, const char *name, const QStringList& - m_rotationGroup->setRadioButtonExclusive(true); - QWhatsThis::add(m_rotationGroup, i18n("The options in this section allow you to change the rotation of your screen.")); - -- m_applyOnStartup = new QCheckBox(i18n("Apply settings on KDE startup"), this); -- topLayout->addWidget(m_applyOnStartup); -- QWhatsThis::add(m_applyOnStartup, i18n("If this option is enabled the size and orientation settings will be used when KDE starts.")); -- connect(m_applyOnStartup, SIGNAL(clicked()), SLOT(setChanged())); -- -- QHBox* syncBox = new QHBox(this); -- syncBox->layout()->addItem(new QSpacerItem(20, 1, QSizePolicy::Maximum)); -- m_syncTrayApp = new QCheckBox(i18n("Allow tray application to change startup settings"), syncBox); -- topLayout->addWidget(syncBox); -- QWhatsThis::add(m_syncTrayApp, i18n("If this option is enabled, options set by the system tray applet will be saved and loaded when KDE starts instead of being temporary.")); -- connect(m_syncTrayApp, SIGNAL(clicked()), SLOT(setChanged())); -+ m_applyOnlySession = new QCheckBox(i18n("Change settings only for current session"), this); -+ topLayout->addWidget(m_applyOnlySession); -+ QWhatsThis::add(m_applyOnlySession, i18n("If this option is enabled the size and orientation settings will be only changed for the current session.")); -+ connect(m_applyOnlySession, SIGNAL(clicked()), SLOT(setChanged())); - - topLayout->addStretch(1); - - // just set the "apply settings on startup" box - load(); -- m_syncTrayApp->setEnabled(m_applyOnStartup->isChecked()); - - slotScreenChanged(QApplication::desktop()->primaryScreen()); - -@@ -272,8 +264,7 @@ void KRandRModule::load( bool useDefaults ) - m_oldApply = loadDisplay(config, false); - m_oldSyncTrayApp = syncTrayApp(config); - -- m_applyOnStartup->setChecked(m_oldApply); -- m_syncTrayApp->setChecked(m_oldSyncTrayApp); -+ m_applyOnlySession->setChecked(!m_oldApply); - - emit changed( useDefaults ); - } -@@ -291,8 +282,7 @@ void KRandRModule::save() - - apply(); - -- m_oldApply = m_applyOnStartup->isChecked(); -- m_oldSyncTrayApp = m_syncTrayApp->isChecked(); -+ m_oldApply = !m_applyOnlySession->isChecked(); - KConfig config("kcmrandrrc"); - saveDisplay(config, m_oldApply, m_oldSyncTrayApp); - -@@ -308,8 +298,7 @@ void KRandRModule::setChanged() - #endif - - -- bool isChanged = (m_oldApply != m_applyOnStartup->isChecked()) || (m_oldSyncTrayApp != m_syncTrayApp->isChecked()); -- m_syncTrayApp->setEnabled(m_applyOnStartup->isChecked()); -+ bool isChanged = (m_oldApply != !m_applyOnlySession->isChecked()); - - if (!isChanged) - for (int screenIndex = 0; screenIndex < numScreens(); screenIndex++) { ---- kcontrol/randr/krandrmodule.h -+++ kcontrol/randr/krandrmodule.h -@@ -79,8 +79,7 @@ protected: - KComboBox* m_sizeCombo; - QButtonGroup* m_rotationGroup; - KComboBox* m_refreshRates; -- QCheckBox* m_applyOnStartup; -- QCheckBox* m_syncTrayApp; -+ QCheckBox* m_applyOnlySession; - bool m_oldApply; - bool m_oldSyncTrayApp; - ---- kcontrol/randr/randrdisplay.cpp -+++ kcontrol/randr/randrdisplay.cpp -@@ -241,7 +241,7 @@ bool RandRDisplay::loadDisplay(KConfig& config, bool loadScreens) - bool RandRDisplay::applyOnStartup(KConfig& config) - { - config.setGroup("Display"); -- return config.readBoolEntry("ApplyOnStartup", false); -+ return config.readBoolEntry("ApplyOnStartup", true); - } - - bool RandRDisplay::syncTrayApp(KConfig& config) -@@ -254,7 +254,6 @@ void RandRDisplay::saveDisplay(KConfig& config, bool applyOnStartup, bool syncTr - { - config.setGroup("Display"); - config.writeEntry("ApplyOnStartup", applyOnStartup); -- config.writeEntry("SyncTrayApp", syncTrayApp); - - #ifdef HAS_RANDR_1_2 - if (RandR::has_1_2) diff --git a/opensuse/tdebase/sourceforge.desktop b/opensuse/tdebase/sourceforge.desktop deleted file mode 100644 index 4a218ad84..000000000 --- a/opensuse/tdebase/sourceforge.desktop +++ /dev/null @@ -1,7 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Type=Service -Name=SourceForge Tracker -ServiceTypes=SearchProvider -Keys=sft -Query=https://sourceforge.net/support/tracker.php?aid=\{@} diff --git a/opensuse/tdebase/spellcheck-default-utf8.diff b/opensuse/tdebase/spellcheck-default-utf8.diff deleted file mode 100644 index 57d49fab6..000000000 --- a/opensuse/tdebase/spellcheck-default-utf8.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: kcontrol/spellchecking/spellchecking.cpp -=================================================================== ---- kcontrol/spellchecking/spellchecking.cpp.orig -+++ kcontrol/spellchecking/spellchecking.cpp -@@ -67,7 +67,7 @@ void KSpellCheckingConfig::defaults() - spellConfig->setRunTogether(0); - spellConfig->setDictionary(""); - spellConfig->setDictFromList(FALSE); -- spellConfig->setEncoding (KS_E_ASCII); -+ spellConfig->setEncoding (KS_E_UTF8); - spellConfig->setClient (KS_CLIENT_ISPELL); - } - diff --git a/opensuse/tdebase/startkde.diff b/opensuse/tdebase/startkde.diff deleted file mode 100644 index c7cd061ce..000000000 --- a/opensuse/tdebase/startkde.diff +++ /dev/null @@ -1,80 +0,0 @@ -Index: startkde -=================================================================== ---- startkde.orig -+++ startkde -@@ -3,6 +3,9 @@ - # DEFAULT KDE STARTUP SCRIPT ( KDE-3.5.10 ) - # - -+PATH=/opt/kde3/bin:${PATH/:\/opt\/kde3\/bin} -+export PATH -+test -x /usr/bin/xrandr && /usr/bin/xrandr --auto - # When the X server dies we get a HUP signal from xinit. We must ignore it - # because we still need to do some cleanup. - trap 'echo GOT SIGHUP' HUP -@@ -19,7 +22,7 @@ fi - # people's heads. We use colours from the standard KDE palette for those with - # palettised displays. - if test -z "$XDM_MANAGED" || echo "$XDM_MANAGED" | grep ",auto" > /dev/null; then -- xsetroot -solid "#000000" -+ : # xsetroot -solid "#C0C0C0" - fi - - # we have to unset this for Darwin since it will screw up KDE's dynamic-loading -@@ -62,7 +65,7 @@ cat >$kdehome/share/config/startupconfig - kcminputrc Mouse cursorTheme '' - kcminputrc Mouse cursorSize '' - kpersonalizerrc General FirstLogin true --ksplashrc KSplash Theme Default -+ksplashrc KSplash Theme ksplashx-suse - kcmrandrrc Display ApplyOnStartup false - kcmrandrrc [Screen0] - kcmrandrrc [Screen1] -@@ -160,6 +163,16 @@ Xft.dpi: 96 - EOF - fi - -+case "$ksplashrc_ksplash_theme" in -+ ksplashx-*) -+ if test -x /opt/kde3/bin/ksplashx; then -+ /opt/kde3/bin/ksplashx ${ksplashrc_ksplash_theme#ksplashx-} -+ else -+ ksplashrc_ksplash_theme=Default -+ fi -+ ;; -+esac -+ - # Source scripts found in <localprefix>/env/*.sh and <prefixes>/env/*.sh - # (where <localprefix> is $KDEHOME or ~/.kde, and <prefixes> is where KDE is installed) - # -@@ -286,7 +299,7 @@ dcopserver_shutdown - echo 'startkde: Starting up...' 1>&2 - - # run KPersonalizer before the session, if this is the first login --if test "$kpersonalizerrc_general_firstlogin" = "true"; then -+if false && test "$kpersonalizerrc_general_firstlogin" = "true"; then - # start only dcopserver, don't start whole kdeinit (takes too long) - echo 'startkde: Running kpersonalizer...' 1>&2 - dcopserver -@@ -305,6 +318,8 @@ if test -z "$dl"; then - case "$ksplashrc_ksplash_theme" in - None) - ;; # nothing -+ ksplashx-*) -+ ;; # started earlier - Simple) - if test "$kpersonalizerrc_general_firstlogin" = "true"; then - ksplashsimple -@@ -384,9 +399,11 @@ done - echo 'startkde: Shutting down...' 1>&2 - - # Clean up -+if test -e /opt/kde3/bin/artsshell; then -+ artsshell -q terminate -+fi - kdeinit_shutdown - dcopserver_shutdown --wait --artsshell -q terminate - # KDE4 support - kde4 kdeinit4_shutdown 2>/dev/null - diff --git a/opensuse/tdebase/startkde.suse.sh b/opensuse/tdebase/startkde.suse.sh deleted file mode 100644 index 28c200695..000000000 --- a/opensuse/tdebase/startkde.suse.sh +++ /dev/null @@ -1,140 +0,0 @@ - -# -# do we run in a prelinked system ? -# -if test -f /etc/sysconfig/prelink; then -. /etc/sysconfig/prelink - if test "$USE_PRELINK" = "yes" ; then - KDE_IS_PRELINKED=1 - export KDE_IS_PRELINKED - else - unset KDE_IS_PRELINKED - fi -fi - -# -# Do we have a special Gtk theming for our Qt widget theme ? -# -if [ ! -e $HOME/.no-qtrc-to-gtkrc-mapping ]; then - - SUSE_VERSION="`cat /etc/SuSE-release | sed -n 's/VERSION = //p'`" - - # Defaults for SuSE 9.0 - GTK2_SYSCONFDIR=/etc/opt/gnome - GTK2_DATADIR=/opt/gnome/share/themes/ - - # use general gtk-qt-engine - if [ -e "$GTK2_DATADIR/Qt/gtk-2.0/gtkrc" ] ; then - GTK2_THEME_RC="$GTK2_DATADIR/Qt/gtk-2.0/gtkrc" - fi - - # GTK2 - # NOTE: ~/.gtkrc-2.0-kde is added later (in latest KDE only) - if [ "$GTK2_RC_FILES" ]; then - export GTK2_RC_FILES="$GTK2_RC_FILES:$GTK2_THEME_RC:$HOME/.gtkrc-2.0-qtengine:$HOME/.gtkrc-2.0" - else - export GTK2_RC_FILES="$GTK2_SYSCONFDIR/gtk-2.0/gtkrc:$GTK2_THEME_RC:$HOME/.gtkrc-2.0-qtengine:$HOME/.gtkrc-2.0" - fi - -fi - -# -# use optimized libs, if your CPU has the needed support -# (kdemultimedia package has some SSE optimized libs) -[ -z "$LD_HWCAP_MASK" ] && export LD_HWCAP_MASK=0x20000000 - -if [ -r /etc/sysconfig/windowmanager ]; then - # Do the user want the SuSE theme ? - source /etc/sysconfig/windowmanager - - # Should we really enable FAM support for KDE ? - export USE_FAM="$KDE_USE_FAM" - - # Disable IPv6 ? - if [ "$KDE_USE_IPV6" = "no" ]; then - export KDE_NO_IPV6=1 - fi - # Disable IDN ? - if [ "$KDE_USE_IDN" = "no" ]; then - export KDE_NO_IDN=1 - fi - -else - if [ -r /etc/rc.config ]; then - # Do the user want the SuSE theme ? - INSTALL_DESKTOP_EXTENSIONS=`bash -c "source /etc/rc.config && echo \\$INSTALL_DESKTOP_EXTENSIONS"` - - # Should we really enable FAM support for KDE ? - USE_FAM=`bash -c "source /etc/rc.config && echo \\$KDE_USE_FAM"` - export USE_FAM - fi -fi - -# -# create SuSE defaults -# -if [ "$INSTALL_DESKTOP_EXTENSIONS" == "yes" ]; then - if [ -x /opt/kde3/bin/kde-open ]; then - export DESKTOP_LAUNCH=kde-open - fi - if [ "$USER" == "root" ]; then - if [ ! -e "$HOME/.skel/kdebase3" -a ! -e "$KDEHOME/share/config/kdeglobals" ]; then - if [ -e "/opt/kde3/bin/startkde.theme.unitedlinux" ]; then - . /opt/kde3/bin/startkde.theme.unitedlinux - copy_default_root_ul "$KDEHOME" - create_default_desktop_ul "$HOME/Desktop/" - fi - - if [ -e "/opt/kde3/bin/startkde.theme" ]; then - . /opt/kde3/bin/startkde.theme - fi - copy_default_root "$KDEHOME" - create_default_desktop "$HOME/Desktop/" - mkdir -p $HOME/.skel/ - touch $HOME/.skel/kdebase3 $HOME/.skel/kdebase3.91 - fi - else - if [ ! -e "$HOME/.skel/kdebase3" -a ! -e "$KDEHOME/share/config/kdeglobals" ]; then - if [ -e "/opt/kde3/bin/startkde.theme.unitedlinux" ]; then - . /opt/kde3/bin/startkde.theme.unitedlinux - copy_default_user_ul "$KDEHOME" - create_default_desktop_ul "$HOME/Desktop/" - fi - - if [ -e "/opt/kde3/bin/startkde.theme" ]; then - . /opt/kde3/bin/startkde.theme - fi - copy_default_user "$KDEHOME" - create_default_desktop "$HOME/Desktop/" - mkdir -p $HOME/.skel/ - touch $HOME/.skel/kdebase3 $HOME/.skel/kdebase3.91 - fi - fi - if [ -e /opt/kde3/bin/startkde.update93 -a ! -e "$HOME/.skel/kdebase3.93" ]; then - . /opt/kde3/bin/startkde.update93 - mkdir -p $HOME/.skel/ - touch $HOME/.skel/kdebase3.93 - fi - for i in /opt/kde3/share/UnitedLinux/addon-scripts/*; do - [ -r "$i" ] && \ - . "$i" - done -fi - -# check if any rpms have been (un)installed since ksycoca -# had been built, if yes, trigger ksycoca rebuild immediatelly -# instead of delayed - -kdehome=$HOME/.kde -test -n "$KDEHOME" && kdehome=`echo "$KDEHOME"|sed "s,^~/,$HOME/,"` -host=$HOSTNAME -test -n "$XAUTHLOCALHOSTNAME" && host=$XAUTHLOCALHOSTNAME -ksycoca="$kdehome/cache-$host/ksycoca" - -if test -f "$ksycoca"; then - if test -f /var/lib/rpm/Packages; then - if test /var/lib/rpm/Packages -nt "$ksycoca"; then - rm -f "$ksycoca" - fi - fi -fi diff --git a/opensuse/tdebase/stopkde.suse.sh b/opensuse/tdebase/stopkde.suse.sh deleted file mode 100644 index 54f7de3a3..000000000 --- a/opensuse/tdebase/stopkde.suse.sh +++ /dev/null @@ -1,13 +0,0 @@ -#! /bin/sh - -if test -n "$SSH_AGENT_PID"; then - ssh-agent -k -fi - -if test -n "$GPG_AGENT_INFO"; then - pid=`echo "$GPG_AGENT_INFO" | cut -d: -f2` - if test -n "$pid"; then - kill $pid - fi -fi - diff --git a/opensuse/tdebase/suse_default_move.diff b/opensuse/tdebase/suse_default_move.diff deleted file mode 100644 index 1eb938e20..000000000 --- a/opensuse/tdebase/suse_default_move.diff +++ /dev/null @@ -1,83 +0,0 @@ -Index: empty/Makefile.am -=================================================================== ---- /dev/null -+++ empty/Makefile.am -@@ -0,0 +1,17 @@ -+# set the include path for X, qt and KDE -+INCLUDES= $(all_includes) -+ -+# you can add here more. This one gets installed -+bin_PROGRAMS = default_desktop_aligning -+ -+# Which sources should be compiled -+default_desktop_aligning_SOURCES = moving.cpp KDesktopIface.stub -+ -+# the library search path. -+default_desktop_aligning_LDFLAGS = $(all_libraries) $(KDE_RPATH) -+ -+# the libraries to link against. Be aware of the order. First the libraries, -+# that depend on the following ones. -+default_desktop_aligning_LDADD = $(LIB_KDEUI) -+ -+KDesktopIface_DIR = $(srcdir)/../kdesktop -Index: empty/moving.cpp -=================================================================== ---- /dev/null -+++ empty/moving.cpp -@@ -0,0 +1,56 @@ -+#include <kstandarddirs.h> -+#include <kglobalsettings.h> -+#include <kapplication.h> -+#include "KDesktopIface_stub.h" -+#include <kdebugclasses.h> -+#include <kcmdlineargs.h> -+#include <kconfig.h> -+#include <unistd.h> -+#include <stdlib.h> -+#include <qfileinfo.h> -+ -+int main(int argc, char **argv) -+{ -+ KCmdLineArgs::init(argc, argv, "default_desktop_moving", -+ "move the icons on the correct place on initial boot", -+ "0.1"); -+ KApplication app; -+ QStringList icons = KGlobal::dirs()->findAllResources("data", "default_desktop/*.desktop"); -+ char buffer[PATH_MAX]; -+ strcpy(buffer, "/tmp/suse_desktop_XXXXXX"); -+ mkdtemp(buffer); -+ QString tname = QString::fromLatin1(buffer); -+ -+ icons.sort(); -+ -+ KDesktopIface_stub stub("kdesktop", "KDesktopIface"); -+ KConfig c( "kdesktoprc" ); -+ c.setGroup( "General" ); -+ -+ if ( c.readBoolEntry( "CopyDesktopLinks", true ) ) -+ for (QStringList::ConstIterator it = icons.begin(); it != icons.end(); ++it) -+ { -+ QString name = *it; -+ QPoint t; -+ bool col = (name.mid(name.findRev('/') + 1, 4) == "COL_"); -+ name = name.mid(name.findRev('/') + 5, name.length()); -+ int index = name.find('_'); -+ int num = name.left(index).toInt(); -+ -+ if (col) -+ t = stub.findPlaceForIcon(num, -1); -+ else -+ t = stub.findPlaceForIcon(-1, num); -+ QFileInfo f(*it); -+ -+ name = name.mid(name.find('_', index + 1) + 1, name.length()); -+ -+ if ( 0 == system(QString("mv '%1' '%1'").arg(*it).arg(tname + "/" + name).local8Bit()) ) -+ stub.addIcon( tname + "/" + name, t.x(), t.y()); -+ -+ sleep(2); // only need to make sure kdesktop goes back in event loop -+ } -+ stub.lineupIcons(); -+ system(QString("rm -f %1/moving_desktop.desktop").arg(KGlobalSettings::autostartPath()).latin1()); -+ system(QString("rm -rf '%1'").arg(tname).local8Bit()); -+} diff --git a/opensuse/tdebase/suspend-kpowersave.diff b/opensuse/tdebase/suspend-kpowersave.diff deleted file mode 100644 index 13aaa131c..000000000 --- a/opensuse/tdebase/suspend-kpowersave.diff +++ /dev/null @@ -1,178 +0,0 @@ -Subject: Use KPowersave for suspend if available -From: Lubos Lunak -Bug: bnc#326848 -Patch-upstream: No - ---- kicker/kicker/ui/k_new_mnu.cpp.sav 2008-11-20 10:12:42.000000000 +0100 -+++ kicker/kicker/ui/k_new_mnu.cpp 2008-11-20 13:49:20.000000000 +0100 -@@ -3691,6 +3691,9 @@ int KMenu::max_items(int category) const - - #ifdef KDELIBS_SUSE - #include <liblazy.h> -+ -+#include <X11/Xlib.h> -+#include <fixx11h.h> - #endif - - void KMenu::insertSuspendOption( int &nId, int &index ) -@@ -3699,6 +3702,14 @@ void KMenu::insertSuspendOption( int &nI - int supported = -1; - bool suspend_ram, suspend_disk, standby; - -+ DCOPRef kpowersave( "kpowersave", "KPowersaveIface" ); -+ DCOPReply reply = kpowersave.call( "allowed_sleepingStates" ); -+ if( reply.isValid()) { -+ QStringList supported = reply; -+ suspend_ram = supported.contains( "suspendToRAM" ); -+ suspend_disk = supported.contains( "suspendToDisk" ); -+ standby = supported.contains( "standBy" ); -+ } else { - liblazy_hal_get_property_bool(HAL_UDI_COMPUTER, "power_management.can_suspend", &supported); - if (supported == 1) - suspend_ram = true; -@@ -3721,6 +3732,7 @@ void KMenu::insertSuspendOption( int &nI - suspend_ram = false; - if (liblazy_hal_is_caller_privileged("org.freedesktop.hal.power-management.standby") != 1) - standby = false; -+ } - - if ( ! ( standby + suspend_ram + suspend_disk ) ) - return; -@@ -3745,6 +3757,25 @@ void KMenu::slotSuspend(int id) - { - #ifdef KDELIBS_SUSE - int error = 0; -+ -+ DCOPRef kpowersave( "kpowersave", "KPowersaveIface" ); -+ DCOPReply reply = kpowersave.call( "allowed_sleepingStates" ); -+ if( reply.isValid()) { -+ bool ok; -+ extern Time qt_x_time; -+ XUngrabKeyboard( qt_xdisplay(), qt_x_time ); -+ XUngrabPointer( qt_xdisplay(), qt_x_time ); -+ XSync( qt_xdisplay(), False ); -+ if( id == 1 ) -+ ok = kpowersave.call( "do_suspendToDisk" ); -+ else if( id == 2 ) -+ ok = kpowersave.call( "do_suspendToRAM" ); -+ else if( id == 3 ) -+ ok = kpowersave.call( "do_standBy" ); -+ else -+ return; -+ error = ok ? 0 : 1; -+ } else { - int wake = 0; - DBusMessage *reply = 0; - -@@ -3773,6 +3804,8 @@ void KMenu::slotSuspend(int id) - DBUS_TYPE_INVALID); - else - return; -+ } -+ - if (error) - #endif - KMessageBox::error(this, i18n("Suspend failed")); ---- ksmserver/shutdowndlg.cpp.sav 2008-11-20 10:12:41.000000000 +0100 -+++ ksmserver/shutdowndlg.cpp 2008-11-20 13:34:19.000000000 +0100 -@@ -40,6 +40,7 @@ Copyright (C) 2000 Matthias Ettrich <ett - #include <kdialog.h> - #include <kseparator.h> - #include <kmessagebox.h> -+#include <dcopref.h> - - #include <sys/types.h> - #include <sys/utsname.h> -@@ -264,6 +265,14 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* - } else - QToolTip::add( btnReboot, i18n( "<qt><h3>Restart Computer</h3><p>Log out of the current session and restart the computer</p></qt>" ) ); - -+ DCOPRef kpowersave( "kpowersave", "KPowersaveIface" ); -+ DCOPReply reply = kpowersave.call( "allowed_sleepingStates" ); -+ if( reply.isValid()) { -+ QStringList supported = reply; -+ suspend_ram = supported.contains( "suspendToRAM" ); -+ suspend_disk = supported.contains( "suspendToDisk" ); -+ standby = supported.contains( "standBy" ); -+ } else { - int supported = -1; - liblazy_hal_get_property_bool(HAL_UDI_COMPUTER, "power_management.can_suspend", &supported); - if (supported == 1) -@@ -287,6 +296,7 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* - suspend_ram = false; - if (liblazy_hal_is_caller_privileged("org.freedesktop.hal.power-management.standby") != 1) - standby = false; -+ } - - int sum = standby + suspend_ram + suspend_disk; - if ( sum ) { -@@ -325,6 +335,24 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* - void KSMShutdownDlg::slotSuspend() - { - int error = 0; -+ DCOPRef kpowersave( "kpowersave", "KPowersaveIface" ); -+ DCOPReply reply = kpowersave.call( "allowed_sleepingStates" ); -+ if( reply.isValid()) { -+ bool ok; -+ // so that screen locking can take place -+ extern Time qt_x_time; -+ XUngrabKeyboard( qt_xdisplay(), qt_x_time ); -+ XUngrabPointer( qt_xdisplay(), qt_x_time ); -+ XSync( qt_xdisplay(), False ); -+ if( suspend_disk ) -+ ok = kpowersave.call( "do_suspendToDisk" ); -+ else if( suspend_ram ) -+ ok = kpowersave.call( "do_suspendToRAM" ); -+ else -+ ok = kpowersave.call( "do_standBy" ); -+ error = ok ? 0 : 1; -+ } else { -+ - int wake = 0; - DBusMessage *reply; - -@@ -351,6 +379,7 @@ void KSMShutdownDlg::slotSuspend() - "Standby", - &reply, - DBUS_TYPE_INVALID); -+ } - - if (error) - KMessageBox::error(this, i18n("Suspend failed")); -@@ -362,6 +391,27 @@ void KSMShutdownDlg::slotSuspend() - void KSMShutdownDlg::slotSuspend(int id) - { - int error = 0; -+ -+ DCOPRef kpowersave( "kpowersave", "KPowersaveIface" ); -+ DCOPReply reply = kpowersave.call( "allowed_sleepingStates" ); -+ if( reply.isValid()) { -+ bool ok; -+ extern Time qt_x_time; -+ XUngrabKeyboard( qt_xdisplay(), qt_x_time ); -+ XUngrabPointer( qt_xdisplay(), qt_x_time ); -+ XSync( qt_xdisplay(), False ); -+ if( suspend_disk && id == 1 ) -+ ok = kpowersave.call( "do_suspendToDisk" ); -+ else if( suspend_ram && id == 2 ) -+ ok = kpowersave.call( "do_suspendToRAM" ); -+ else if( standby && id == 3 ) -+ ok = kpowersave.call( "do_standBy" ); -+ else -+ return; -+ error = ok ? 0 : 1; -+ } else { -+ -+ - int wake = 0; - DBusMessage *reply; - -@@ -390,6 +440,8 @@ void KSMShutdownDlg::slotSuspend(int id) - DBUS_TYPE_INVALID); - else - return; -+ } -+ - if (error) - KMessageBox::error(this, i18n("Suspend failed")); - diff --git a/opensuse/tdebase/suspend-unmount.diff b/opensuse/tdebase/suspend-unmount.diff deleted file mode 100644 index dabdd1271..000000000 --- a/opensuse/tdebase/suspend-unmount.diff +++ /dev/null @@ -1,179 +0,0 @@ -Index: kioslave/media/libmediacommon/medium.cpp -=================================================================== ---- kioslave/media/libmediacommon/medium.cpp.orig -+++ kioslave/media/libmediacommon/medium.cpp -@@ -42,6 +42,7 @@ Medium::Medium(const QString &id, const - loadUserLabel(); - - m_halmounted = false; -+ m_isHotplug = false; - } - - Medium::Medium() -@@ -59,8 +60,9 @@ Medium::Medium() - m_properties+= QString::null; /* BASE_URL */ - m_properties+= QString::null; /* MIME_TYPE */ - m_properties+= QString::null; /* ICON_NAME */ -- -+ - m_halmounted = false; -+ m_isHotplug = false; - } - - const Medium Medium::create(const QStringList &properties) -Index: kioslave/media/libmediacommon/medium.h -=================================================================== ---- kioslave/media/libmediacommon/medium.h.orig -+++ kioslave/media/libmediacommon/medium.h -@@ -82,18 +82,22 @@ public: - void setHalMounted(bool flag) const { m_halmounted = flag; } - bool halMounted() const { return m_halmounted; } - -+ void setIsHotplug( bool state ) { m_isHotplug = state; } -+ bool isHotplug() const { return m_isHotplug; } -+ - private: - Medium(); - void loadUserLabel(); - - QStringList m_properties; - mutable bool m_halmounted; -- -+ bool m_isHotplug; -+ - friend class QValueListNode<const Medium>; - }; - - namespace MediaManagerUtils { -- static inline QMap<QString,QString> splitOptions(const QStringList & options) -+ static inline QMap<QString,QString> splitOptions(const QStringList & options) - { - QMap<QString,QString> valids; - -Index: kioslave/media/mediamanager/mediamanager.cpp -=================================================================== ---- kioslave/media/mediamanager/mediamanager.cpp.orig -+++ kioslave/media/mediamanager/mediamanager.cpp -@@ -330,6 +330,54 @@ void MediaManager::slotMediumChanged(con - emit mediumChanged(name); - } - -+QString MediaManager::unmountAllSuspend() -+{ -+ QPtrList<Medium> list = m_mediaList.list(); -+ -+ QPtrList<Medium>::const_iterator it = list.begin(); -+ QPtrList<Medium>::const_iterator end = list.end(); -+ -+ QString result; -+ -+ for (; it!=end; ++it) -+ { -+ if ( (*it)->isMounted() && (*it)->isHotplug() ) -+ { -+ QString tmp = unmount( (*it)->id() ); -+ if ( !tmp.isEmpty() ) // umount failed -+ result = tmp; -+ else -+ m_suspendResumeMountList.append( (*it)->id() ); -+ } -+ } -+ -+ // return last error -+ return result; -+} -+ -+QString MediaManager::remountAllResume() -+{ -+ QString result; -+ -+ for (QStringList::const_iterator it = m_suspendResumeMountList.begin(); -+ it != m_suspendResumeMountList.end(); -+ ++it) -+ { -+ const Medium *m = m_mediaList.findById(*it); -+ -+ if ( m && m->needMounting() ) -+ { -+ QString tmp = mount( *it ); -+ if ( !tmp.isEmpty() ) // mount failed -+ result = tmp; -+ } -+ } -+ -+ m_suspendResumeMountList.clear(); -+ -+ // return last error -+ return result; -+} - - extern "C" { - KDE_EXPORT KDEDModule *create_mediamanager(const QCString &obj) -Index: kioslave/media/mediamanager/mediamanager.h -=================================================================== ---- kioslave/media/mediamanager/mediamanager.h.orig -+++ kioslave/media/mediamanager/mediamanager.h -@@ -58,6 +58,20 @@ k_dcop: - bool removableUnplug(const QString &devNode); - bool removableCamera(const QString &devNode); - -+ /** -+ * Unmount manually all partitions when going to suspend -+ * -+ * @return last error if any -+ */ -+ QString unmountAllSuspend(); -+ -+ /** -+ * Remount previously unmounted partitions in unmountAllSuspend() -+ * -+ * @return last error if any -+ */ -+ QString remountAllResume(); -+ - k_dcop_signals: - void mediumAdded(const QString &name, bool allowNotification); - void mediumRemoved(const QString &name, bool allowNotification); -@@ -70,7 +84,7 @@ k_dcop_signals: - - private slots: - void loadBackends(); -- -+ - void slotMediumAdded(const QString &id, const QString &name, - bool allowNotification); - void slotMediumRemoved(const QString &id, const QString &name, -@@ -85,6 +99,7 @@ private: - HALBackend *m_halbackend; - MediaDirNotify m_dirNotify; - FstabBackend *m_fstabbackend; -+ QStringList m_suspendResumeMountList; - }; - - #endif -Index: kioslave/media/mediamanager/halbackend.cpp -=================================================================== ---- kioslave/media/mediamanager/halbackend.cpp.orig -+++ kioslave/media/mediamanager/halbackend.cpp -@@ -459,6 +459,8 @@ void HALBackend::setVolumeProperties(Med - libhal_volume_get_fstype(halVolume), /* Filesystem type */ - libhal_volume_is_mounted(halVolume) ); /* Mounted ? */ - -+ medium->setIsHotplug( libhal_drive_is_hotpluggable(halDrive) ); -+ - char* name = libhal_volume_policy_compute_display_name(halDrive, halVolume, m_halStoragePolicy); - QString volume_name = QString::fromUtf8(name); - QString media_name = volume_name; -Index: kioslave/media/mediamanager/halbackend.h -=================================================================== ---- kioslave/media/mediamanager/halbackend.h.orig -+++ kioslave/media/mediamanager/halbackend.h -@@ -86,6 +86,8 @@ public: - QString mount(const Medium *medium); - QString unmount(const QString &id); - -+ static bool isHotplug( const QString & id ); -+ - private: - /** - * Append a device in the media list. This function will check if the device diff --git a/opensuse/tdebase/system-folder_man.diff b/opensuse/tdebase/system-folder_man.diff deleted file mode 100644 index 98fd9e08f..000000000 --- a/opensuse/tdebase/system-folder_man.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: kioslave/system/entries/documents.desktop -=================================================================== ---- kioslave/system/entries/documents.desktop.orig -+++ kioslave/system/entries/documents.desktop -@@ -1,7 +1,7 @@ - [Desktop Entry] - Type=Link - Path[$e]=$( kio_system_documenthelper ) --Icon=folder_important -+Icon=folder_man - Name=Documents Folder - Name[af]=Dokument Gids - Name[ar]=مستنداتي diff --git a/opensuse/tdebase/systray_order.diff b/opensuse/tdebase/systray_order.diff deleted file mode 100644 index b864afc8e..000000000 --- a/opensuse/tdebase/systray_order.diff +++ /dev/null @@ -1,162 +0,0 @@ -Index: kicker/applets/systemtray/systemtrayapplet.cpp -=================================================================== ---- kicker/applets/systemtray/systemtrayapplet.cpp.orig -+++ kicker/applets/systemtray/systemtrayapplet.cpp -@@ -187,6 +187,7 @@ bool SystemTrayApplet::x11Event( XEvent - if( isWinManaged( (WId)e->xclient.data.l[2] ) ) // we already manage it - return true; - embedWindow( e->xclient.data.l[2], false ); -+ updateVisibleWins(); - layoutTray(); - return true; - } -@@ -213,13 +214,12 @@ void SystemTrayApplet::preferences() - connect(m_settingsDialog, SIGNAL(finished()), this, SLOT(settingsDialogFinished())); - - m_iconSelector = new KActionSelector(m_settingsDialog); -- m_iconSelector->setAvailableLabel(i18n("Visible icons:")); -- m_iconSelector->setSelectedLabel(i18n("Hidden icons:")); -- m_iconSelector->setShowUpDownButtons(false); -+ m_iconSelector->setAvailableLabel(i18n("Hidden icons:")); -+ m_iconSelector->setSelectedLabel(i18n("Visible icons:")); - m_settingsDialog->setMainWidget(m_iconSelector); - -- QListBox *shownListBox = m_iconSelector->availableListBox(); -- QListBox *hiddenListBox = m_iconSelector->selectedListBox(); -+ QListBox *hiddenListBox = m_iconSelector->availableListBox(); -+ QListBox *shownListBox = m_iconSelector->selectedListBox(); - - TrayEmbedList::const_iterator it = m_shownWins.begin(); - TrayEmbedList::const_iterator itEnd = m_shownWins.end(); -@@ -261,26 +261,48 @@ void SystemTrayApplet::applySettings() - } - - KConfig *conf = config(); -- conf->setGroup("HiddenTrayIcons"); -- QString name; - -- // use the following snippet of code someday to implement ordering -- // of icons -- /* -- m_visibleIconList.clear(); -- QListBoxItem* item = m_iconSelector->availableListBox()->firstItem(); -- for (; item; item = item->next()) -+ // Save the sort order and hidden status using the window class (WM_CLASS) rather -+ // than window name (caption) - window name is i18n-ed, so it's for example -+ // not possible to create default settings. -+ // For backwards compatibility, name is kept as it is, class is preceded by '!'. -+ QMap< QString, QString > windowNameToClass; -+ for( TrayEmbedList::ConstIterator it = m_shownWins.begin(); -+ it != m_shownWins.end(); -+ ++it ) { -+ KWin::WindowInfo info = KWin::windowInfo( (*it)->embeddedWinId(), NET::WMName, NET::WM2WindowClass); -+ windowNameToClass[ info.name() ] = '!' + info.windowClassClass(); -+ } -+ for( TrayEmbedList::ConstIterator it = m_hiddenWins.begin(); -+ it != m_hiddenWins.end(); -+ ++it ) { -+ KWin::WindowInfo info = KWin::windowInfo( (*it)->embeddedWinId(), NET::WMName, NET::WM2WindowClass); -+ windowNameToClass[ info.name() ] = '!' + info.windowClassClass(); -+ } -+ -+ conf->setGroup("SortedTrayIcons"); -+ m_sortOrderIconList.clear(); -+ for(QListBoxItem* item = m_iconSelector->selectedListBox()->firstItem(); -+ item; -+ item = item->next()) - { -- m_visibleIconList.append(item->text()); -+ if( windowNameToClass.contains(item->text())) -+ m_sortOrderIconList.append(windowNameToClass[item->text()]); -+ else -+ m_sortOrderIconList.append(item->text()); - } -- conf->writeEntry("Visible", m_visibleIconList); -- selection.clear();*/ -+ conf->writeEntry("SortOrder", m_sortOrderIconList); - -+ conf->setGroup("HiddenTrayIcons"); - m_hiddenIconList.clear(); -- QListBoxItem* item = m_iconSelector->selectedListBox()->firstItem(); -- for (; item; item = item->next()) -+ for(QListBoxItem* item = m_iconSelector->availableListBox()->firstItem(); -+ item; -+ item = item->next()) - { -- m_hiddenIconList.append(item->text()); -+ if( windowNameToClass.contains(item->text())) -+ m_hiddenIconList.append(windowNameToClass[item->text()]); -+ else -+ m_hiddenIconList.append(item->text()); - } - conf->writeEntry("Hidden", m_hiddenIconList); - conf->sync(); -@@ -416,6 +438,9 @@ void SystemTrayApplet::loadSettings() - conf->setGroup("HiddenTrayIcons"); - m_hiddenIconList = conf->readListEntry("Hidden"); - -+ conf->setGroup("SortedTrayIcons"); -+ m_sortOrderIconList = conf->readListEntry("SortOrder"); -+ - //Note This setting comes from kdeglobal. - conf->setGroup("System Tray"); - m_iconSize = conf->readNumEntry("systrayIconWidth", 22); -@@ -505,7 +530,9 @@ bool SystemTrayApplet::isWinManaged(WId - - bool SystemTrayApplet::shouldHide(WId w) - { -- return m_hiddenIconList.find(KWin::windowInfo(w).name()) != m_hiddenIconList.end(); -+ return m_hiddenIconList.find(KWin::windowInfo(w).name()) != m_hiddenIconList.end() -+ || m_hiddenIconList.find('!'+KWin::windowInfo(w,0,NET::WM2WindowClass).windowClassClass()) -+ != m_hiddenIconList.end(); - } - - void SystemTrayApplet::updateVisibleWins() -@@ -529,6 +556,35 @@ void SystemTrayApplet::updateVisibleWins - (*emb)->hide(); - } - } -+ -+ QMap< QXEmbed*, QString > names; // cache window names and classes -+ QMap< QXEmbed*, QString > classes; -+ for( TrayEmbedList::const_iterator it = m_shownWins.begin(); -+ it != m_shownWins.end(); -+ ++it ) { -+ KWin::WindowInfo info = KWin::windowInfo((*it)->embeddedWinId(),NET::WMName,NET::WM2WindowClass); -+ names[ *it ] = info.name(); -+ classes[ *it ] = '!'+info.windowClassClass(); -+ } -+ TrayEmbedList newList; -+ for( QStringList::const_iterator it1 = m_sortOrderIconList.begin(); -+ it1 != m_sortOrderIconList.end(); -+ ++it1 ) { -+ for( TrayEmbedList::iterator it2 = m_shownWins.begin(); -+ it2 != m_shownWins.end(); -+ ) { -+ if( (*it1).startsWith("!") ? classes[ *it2 ] == *it1 : names[ *it2 ] == *it1 ) { -+ newList.append( *it2 ); // don't bail out, there may be multiple ones -+ it2 = m_shownWins.erase( it2 ); -+ } else -+ ++it2; -+ } -+ } -+ for( TrayEmbedList::const_iterator it = m_shownWins.begin(); -+ it != m_shownWins.end(); -+ ++it ) -+ newList.append( *it ); // append unsorted items -+ m_shownWins = newList; - } - - void SystemTrayApplet::toggleExpanded() -Index: kicker/applets/systemtray/systemtrayapplet.h -=================================================================== ---- kicker/applets/systemtray/systemtrayapplet.h.orig -+++ kicker/applets/systemtray/systemtrayapplet.h -@@ -97,6 +97,7 @@ private: - TrayEmbedList m_shownWins; - TrayEmbedList m_hiddenWins; - QStringList m_hiddenIconList; -+ QStringList m_sortOrderIconList; - KWinModule *kwin_module; - Atom net_system_tray_selection; - Atom net_system_tray_opcode; diff --git a/opensuse/tdebase/taskbar.patch b/opensuse/tdebase/taskbar.patch deleted file mode 100644 index f8e526e6d..000000000 --- a/opensuse/tdebase/taskbar.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- kicker/taskbar/taskcontainer.cpp.orig 2011-02-12 00:40:57.060389620 +0300 -+++ kicker/taskbar/taskcontainer.cpp 2011-02-12 02:03:08.345389684 +0300 -@@ -576,9 +576,9 @@ - // draw button background - if (drawButton) - { -- style().drawPrimitive(QStyle::PE_HeaderSection, p, -- QRect(0, 0, width(), height()), -- colors); -+ style().drawPrimitive(QStyle::PE_HeaderSection, p, -+ QRect(1, 1, width()-2, height()-2), -+ colors, sunken ? QStyle::Style_Down : QStyle::Style_Raised); - } - - // shift button label on sunken buttons -@@ -674,11 +674,11 @@ - } - else - { -- textPen = p->pen(); -+ textPen = QPen(colors.buttonText()); //textPen = p->pen(); - } - } - -- int availableWidth = width() - (br.x() * 2) - textPos; -+ int availableWidth = width() - (br.x() * 2) - textPos - 4; - if (m_filteredTasks.count() > 1) - { - availableWidth -= 8; diff --git a/opensuse/tdebase/tdebase.changes b/opensuse/tdebase/tdebase.changes deleted file mode 100644 index 5c3add7de..000000000 --- a/opensuse/tdebase/tdebase.changes +++ /dev/null @@ -1,5422 +0,0 @@ -------------------------------------------------------------------- -Wed Aug 17 02:38:36 UTC 2011 - anixx@opensuse.org - -- reenable and repair MTAB watching in fstab plugin for media autodetection without HAL - -------------------------------------------------------------------- -Tue Jul 26 10:26:42 UTC 2011 - anixx@opensuse.org - -- add dependency on libusb-compat-devel to restore Logitech mouse support -- add a simlink to the screensavers directory to fix the issue of their sudden disappearance - -------------------------------------------------------------------- -Thu Jun 9 18:59:49 UTC 2011 - coolo@novell.com - -- do not require something we don't build in factory - -------------------------------------------------------------------- -Wed Jun 1 09:41:05 UTC 2011 - anixx@opensuse.org - -- make hal usage conditional on the project - -------------------------------------------------------------------- -Tue May 31 12:41:04 UTC 2011 - coolo@novell.com - -- remove hal support for 12.1 and some cleanup for long gone distributions - -------------------------------------------------------------------- -Thu Mar 10 08:49:11 UTC 2011 - neptunia@mail.ru - -- fix build - -------------------------------------------------------------------- -Thu Sep 23 00:15:01 CEST 2010 - hpj@urpla.net - -- attempt to fix flashplayer dysfunction - -------------------------------------------------------------------- -Fri Aug 13 17:03:58 UTC 2010 - neptunia@mail.ru - -- removing dependencies on KDE4, restoring ksysguardd but without strict dependency - -------------------------------------------------------------------- -Tue Aug 10 06:04:35 UTC 2010 - beineri@opensuse.org - -- Drop dependencies on Beagle for 11.4 - -------------------------------------------------------------------- -Mon Apr 19 18:51:14 UTC 2010 - tittiatcoke@gmail.com - -- Added patch to enable build with openssl 1.0 - -------------------------------------------------------------------- -Tue Mar 23 12:45:11 UTC 2010 - llunak@novell.com - -- CVE-2010-0436 (bnc#584223) - -------------------------------------------------------------------- -Fri Jan 1 20:09:49 CET 2010 - jengelh@medozas.de - -- package baselibs.conf -- enable full parallel build - -------------------------------------------------------------------- -Fri Nov 20 21:02:01 UTC 2009 - beineri@opensuse.org - -- update patches to apply without fuzz - -------------------------------------------------------------------- -Fri Oct 16 15:07:21 CEST 2009 - llunak@novell.com - -- add .1 to version to allow obsoleting 11.1 version (bnc#529955) - -------------------------------------------------------------------- -Sun Oct 4 06:06:45 UTC 2009 - beineri@opensuse.org - -- make kdebase3-session require kdebase3-workspace (bnc#544173) - -------------------------------------------------------------------- -Thu Jul 23 11:52:14 CEST 2009 - llunak@suse.cz - -- use kdeinit from ksmserver when possible (r967149) - -------------------------------------------------------------------- -Sun Jul 19 12:21:09 CEST 2009 - beineri@opensuse.org - -- fix kdebase3-devel dependencies - -------------------------------------------------------------------- -Sun Jul 12 16:35:28 CEST 2009 - beineri@opensuse.org - -- split off -apps and -workspace sub-packages -- remove some with kde4 packages conflicting man pages - -------------------------------------------------------------------- -Mon Jun 22 07:03:30 CEST 2009 - beineri@opensuse.org - -- remove ancient unversionized obsolete (kdialog) - -------------------------------------------------------------------- -Fri May 29 14:55:51 CEST 2009 - llunak@suse.cz - -- build with gcc 4.4 - -------------------------------------------------------------------- -Mon Apr 20 20:59:26 CEST 2009 - dmueller@suse.de - -- build for SLE_10 without fdupes run - -------------------------------------------------------------------- -Sat Apr 4 17:33:29 CEST 2009 - coolo@suse.de - -- refresh all patches to fix build - -------------------------------------------------------------------- -Thu Dec 11 15:12:11 CET 2008 - dmueller@suse.de - -- fix kdebase3 being pulled in for kde4 installs (bnc#458323) - -------------------------------------------------------------------- -Wed Dec 10 12:34:56 CET 2008 - olh@suse.de - -- use Obsoletes: -XXbit only for ppc64 to help solver during distupgrade - (bnc#437293) - -------------------------------------------------------------------- -Thu Dec 4 12:34:56 CET 2008 - olh@suse.de - -- obsolete old -XXbit packages (bnc#437293) - -------------------------------------------------------------------- -Tue Dec 2 15:07:17 CET 2008 - stbinner@suse.de - -- don't show KNetAttach menu entry on KDE4 desktop - -------------------------------------------------------------------- -Sun Nov 23 17:28:18 CET 2008 - stbinner@suse.de - -- fix build/patch apply on ppc - -------------------------------------------------------------------- -Thu Nov 20 13:59:52 CET 2008 - llunak@suse.cz - -- use KPowersave for suspend if available, so that the screen - is also locked (bnc#326848) - -------------------------------------------------------------------- -Mon Sep 29 10:13:39 CEST 2008 - stbinner@suse.de - -- Update 3_5_BRANCH.diff (bnc#430476) - -------------------------------------------------------------------- -Sun Sep 21 18:56:48 CEST 2008 - wstephenson@suse.de - -- Fix maximum port allowed in knetattach wizard (bnc#335794) - -------------------------------------------------------------------- -Wed Sep 10 00:45:48 CEST 2008 - dmueller@suse.de - -- remove resmgr references from kcheckpass (bnc#422616) - -------------------------------------------------------------------- -Wed Sep 3 00:46:39 CEST 2008 - dmueller@suse.de - -- build against libsensors4 - -------------------------------------------------------------------- -Tue Aug 26 09:46:37 CEST 2008 - llunak@suse.cz - -- fix wallpapers when the number of screens changes (bnc#329221) - -------------------------------------------------------------------- -Sun Aug 24 11:57:13 CEST 2008 - stbinner@suse.de - -- fix build breakage by previous submission -- fix file conflict with kde4-kdm (bnc#411239) - -------------------------------------------------------------------- -Wed Aug 20 18:53:58 CEST 2008 - coolo@suse.de - -- update to KDE 3.5.10 - * many kicker fixes - * translation updates - * desktop files validate - -------------------------------------------------------------------- -Mon Aug 4 13:45:49 CEST 2008 - dmueller@suse.de - -- fix build on 10.2 - -------------------------------------------------------------------- -Thu Jul 24 16:32:56 CEST 2008 - dmueller@suse.de - -- update rotate-wacom pointers patch to work on xrandr 1.2 displays - as well (bnc#385149) - -------------------------------------------------------------------- -Thu Jul 24 16:30:05 CEST 2008 - dmueller@suse.de - -- disable ksysguard openslp patch as it causes hangs - -------------------------------------------------------------------- -Mon Jul 14 00:27:15 CEST 2008 - dmueller@suse.de - -- fix suspend/hibernate buttons for 11.0 and newer (bnc#290917) - -------------------------------------------------------------------- -Wed Jun 11 16:08:14 CEST 2008 - dmueller@suse.de - -- remove kdebase3-nsplugins64 package and add nspluginwrapper - dependency - -------------------------------------------------------------------- -Tue May 20 18:00:46 CEST 2008 - llunak@suse.cz - -- do not always default to kdesu remembering password (bnc#386531) - -------------------------------------------------------------------- -Mon May 19 21:16:25 CEST 2008 - llunak@suse.cz - -- fix broken patch for bnc#332079 - -------------------------------------------------------------------- -Mon May 19 11:15:29 CEST 2008 - thoenig@suse.de - -- add fingerprint reader support: kpamgreeter.diff, - use-pam-before-classic.diff. Closes bnc#339331. - -------------------------------------------------------------------- -Fri May 16 19:25:52 CEST 2008 - dkukawka@suse.de - -- fixed rotate-wacom-pointers.diff to work with current xsetwacom - (bnc#391440) - -------------------------------------------------------------------- -Wed May 14 08:34:36 CEST 2008 - stbinner@suse.de - -- port/renable rotate-wacom-pointers.diff (bnc#385149) - -------------------------------------------------------------------- -Sat May 10 21:37:04 CEST 2008 - stbinner@suse.de - -- move some icons to -runtime because kdelibs3 references them - or they are used in default KDE3 applications on KDE4 desktop - -------------------------------------------------------------------- -Fri May 9 23:46:02 CEST 2008 - dmueller@suse.de - -- fix kdm shutdown being set to "no" during config conversion - -------------------------------------------------------------------- -Fri May 9 10:37:16 CEST 2008 - dmueller@suse.de - -- 3_5_BRANCH.diff update: - * new translations - -------------------------------------------------------------------- -Tue May 6 17:58:58 CEST 2008 - dmueller@suse.de - -- fix uninitialized return in krandrtray - -------------------------------------------------------------------- -Fri May 2 13:49:03 CEST 2008 - llunak@suse.cz - -- avoid kded crash on CD ejecting (bnc#359424) - -------------------------------------------------------------------- -Mon Apr 28 17:48:30 CEST 2008 - llunak@suse.cz - -- switch kdesu backend back to su (bnc#216796) - -------------------------------------------------------------------- -Mon Apr 28 11:15:30 CEST 2008 - dmueller@suse.de - -- add /usr/bin/startkde3 - -------------------------------------------------------------------- -Fri Apr 25 16:38:03 CEST 2008 - dmueller@suse.de - -- update 3_5_BRANCH.diff to include translations -- call xrandr --auto to xvideo issues on xrandr 1.2 setups - -------------------------------------------------------------------- -Thu Apr 17 11:35:35 CEST 2008 - stbinner@suse.de - -- don't build kdebase3-ksysguardd package for 11.0 but require/use - kdebase4-workspace-ksysguardd (bnc#379351) - -------------------------------------------------------------------- -Mon Apr 14 18:09:05 CEST 2008 - llunak@suse.cz - -- improve the low-disk-space dialog (bnc#199054) -- GUI for selecting the WM (bnc#332079) - -------------------------------------------------------------------- -Sun Apr 13 16:10:51 CEST 2008 - dmueller@suse.de - -- fix build against glibc 2.8 -- fix session restore of kde3 apps if kde 4.x is installed - as well - -------------------------------------------------------------------- -Sat Apr 12 08:16:18 CEST 2008 - stbinner@suse.de - -- rename session type from "KDE" to "KDE3" (bnc#379355) - -------------------------------------------------------------------- -Thu Apr 10 12:54:45 CEST 2008 - ro@suse.de - -- added baselibs.conf file to build xxbit packages - for multilib support - -------------------------------------------------------------------- -Thu Apr 3 20:20:28 CEST 2008 - stbinner@suse.de - -- split of misc-console-font subpackage (fate#302474) - -------------------------------------------------------------------- -Thu Apr 3 14:09:47 CEST 2008 - stbinner@suse.de - -- add web shortcut for SourceForge tracker (bnc#331663) - -------------------------------------------------------------------- -Tue Mar 18 19:26:59 CET 2008 - dmueller@suse.de - -- fix shutdown option being reset on each update (bnc#348546) - -------------------------------------------------------------------- -Thu Mar 13 20:29:49 CET 2008 - stbinner@suse.de - -- fix splitting - -------------------------------------------------------------------- -Wed Mar 12 15:29:01 CET 2008 - dmueller@suse.de - -- update 3_5_BRANCH.diff -- further improve kdebase3-runtime splitting - -------------------------------------------------------------------- -Mon Mar 3 11:18:07 CET 2008 - stbinner@suse.de - -- move kreadconfig to kdebase3-runtime - -------------------------------------------------------------------- -Tue Feb 26 14:19:56 CET 2008 - dmueller@suse.de - -- fix sensors support in ksysguardd - -------------------------------------------------------------------- -Mon Feb 18 13:42:36 CET 2008 - dmueller@suse.de - -- add missing split provides - -------------------------------------------------------------------- -Wed Feb 13 23:18:17 CET 2008 - dmueller@suse.de - -- update to 3.5.9 - * bugfixes, translation update - -------------------------------------------------------------------- -Sat Feb 9 06:18:39 CET 2008 - stbinner@suse.de - -- fix position of kdebase3-runtime requirement - -------------------------------------------------------------------- -Fri Feb 8 14:28:23 CET 2008 - stbinner@suse.de - -- split off few parts like KIO-slaves into kdebase3-runtime package - -------------------------------------------------------------------- -Mon Jan 28 12:04:32 CET 2008 - stbinner@suse.de - -- fix build against libbeagle 0.3 - -------------------------------------------------------------------- -Thu Jan 17 10:53:53 CET 2008 - stbinner@suse.de - -- update 3_5_BRANCH.diff for 64bit Flash fixes - -------------------------------------------------------------------- -Wed Jan 2 08:37:44 CET 2008 - stbinner@suse.de - -- add 3_5_BRANCH.diff to pick up nsplugin fixes for Flash - -------------------------------------------------------------------- -Wed Dec 5 12:05:45 CET 2007 - wstephenson@suse.de - -- Remove spurious openldap2, pcsc-lite and libsmbclient build - requirements. - -------------------------------------------------------------------- -Sat Nov 24 20:09:11 CET 2007 - coolo@suse.de - -- require liblazy-devel on 10.3+ - -------------------------------------------------------------------- -Wed Nov 21 14:15:29 CET 2007 - stbinner@suse.de - -- fix build for < 11.0 - -------------------------------------------------------------------- -Fri Nov 16 16:22:06 CET 2007 - tpatzig@suse.de - -- fix, no kryptomedia for already decrypted raid devices (#308196) - -------------------------------------------------------------------- -Fri Nov 16 13:12:13 CET 2007 - dmueller@suse.de - -- remove unneeded source file - -------------------------------------------------------------------- -Fri Nov 2 15:47:22 CET 2007 - jdelvare@suse.de - -- libsensors is in a separate package now. - -------------------------------------------------------------------- -Tue Oct 23 11:42:05 CEST 2007 - stbinner@suse.de - -- fix build with gcc 4.3 -- fix Konqueror not generating previews of b/w photos (#334965) - -------------------------------------------------------------------- -Sat Oct 20 15:24:18 CEST 2007 - schwab@suse.de - -- Remove invalid delete in ~NSPluginStreamBase. - -------------------------------------------------------------------- -Tue Oct 9 11:31:40 CEST 2007 - stbinner@suse.de - -- fix Kickoff layout for Xinerama (#254215) -- update to KDE 3.5.8: bugfixes in pop3 and smtp kio slaves, Kate, - kcontrol, kdesktop, kdm, kwin, Konsole and Konqueror - -------------------------------------------------------------------- -Fri Sep 21 16:19:20 CEST 2007 - stbinner@suse.de - -- fix parameter handling in input field of Kickoff (#325633) - -------------------------------------------------------------------- -Fri Sep 21 15:58:29 CEST 2007 - dmueller@suse.de - -- fix kded crashes on resume when kpowersave is installed (#326488) -- fix Window domain listing in kdm (#292084) - -------------------------------------------------------------------- -Thu Sep 20 19:25:35 CEST 2007 - tpatzig@suse.de - -- update for already mounted crypto_LUKS patch (#308196) - -------------------------------------------------------------------- -Wed Sep 19 22:35:54 CEST 2007 - dmueller@suse.de - -- fix arts being started twice/running after logout (#178930) - -------------------------------------------------------------------- -Wed Sep 19 22:17:03 CEST 2007 - tpatzig@suse.de - -- fix to safely remove (teardown) crypted volumes (#306641) - -------------------------------------------------------------------- -Wed Sep 19 15:56:04 CEST 2007 - dmueller@suse.de - -- fix kdm autologin vulnerability (#307372, CVE-2007-4569) - -------------------------------------------------------------------- -Wed Sep 19 10:50:37 CEST 2007 - stbinner@suse.de - -- fix Kickoff problems with secondary screen (#232446) -- replace khc_beagle-*.py with Perl versions for one CD install - -------------------------------------------------------------------- -Fri Sep 14 15:01:18 CEST 2007 - tpatzig@suse.de - -- let mediamamanger check if crypto_LUKS vol is already mounted - before running kryptomedia-dialog (#308196) - -------------------------------------------------------------------- -Tue Sep 11 13:07:23 CEST 2007 - stbinner@suse.de - -- show folder_man icon in system:/ slave for Documents (#304656) - -------------------------------------------------------------------- -Tue Sep 11 12:12:23 CEST 2007 - dmueller@suse.de - -- reorder patches to apply properly even without uncommitted patches - -------------------------------------------------------------------- -Fri Sep 7 17:47:55 CEST 2007 - dmueller@suse.de - -- fix kdm crash on vnc login (#301374) -- fix DISPLAYMANAGER_SHUTDOWN to work like documented (#308257) - -------------------------------------------------------------------- -Thu Aug 30 16:37:13 CEST 2007 - llunak@suse.cz - -- avoid excessive X errors from kicker (#299594) - -------------------------------------------------------------------- -Tue Aug 28 15:29:19 CEST 2007 - stbinner@suse.de - -- change Kickoff's "Home Folder" and "My Document" icons (#304656) -- check if netscape plugins have changed (eg by YOU) (#296425) - -------------------------------------------------------------------- -Sat Aug 25 11:41:45 CEST 2007 - stbinner@suse.de - -- reorder default Kickoff favorites: Firefox first, Help not last - -------------------------------------------------------------------- -Wed Aug 22 15:42:31 CEST 2007 - stbinner@suse.de - -- don't try to overwrite desktop icons during setup (#278109) -- Lock/Logout applet defaults to wrong button order (#302179) -- don't check for khelpcenter index at application start - -------------------------------------------------------------------- -Sun Aug 19 09:38:47 CEST 2007 - stbinner@suse.de - -- fix build on older distributions -- don't show progress indicator when creating initial desktop icons - -------------------------------------------------------------------- -Thu Aug 16 12:12:05 CEST 2007 - hmacht@suse.de - -- adjust to new liblazy API due to new PolicyKit (>=0.4) (#299733) - -------------------------------------------------------------------- -Tue Aug 14 09:17:54 CEST 2007 - stbinner@suse.de - -- don't package obsolete (x)emacs icons (#299941) -- align kdm user list labels (#294421) -- kxkb: "Include Latin layout" by default for new layouts (#204402) -- fix opening of media with non UTF name (#297886) - -------------------------------------------------------------------- -Fri Aug 10 17:47:36 CEST 2007 - dmueller@suse.de - -- actually enable the consolekit patch (d'oh) - -------------------------------------------------------------------- -Wed Aug 8 18:03:11 CEST 2007 - stbinner@suse.de - -- show "Install Software" menu item within Kickoff "Computer" tab -- don't show "missing icon" icon when an entry icon cannot be found - -------------------------------------------------------------------- -Mon Aug 6 18:43:51 CEST 2007 - dmueller@suse.de - -- add krandr 0.5.2.1 (part of fate 300481) - -------------------------------------------------------------------- -Sat Aug 4 18:49:16 CEST 2007 - stbinner@suse.de - -- update 3_5_BRANCH.diff a last time before freeze - -------------------------------------------------------------------- -Fri Aug 3 15:47:22 CEST 2007 - dmueller@suse.de - -- notify consolekit of logged in users - -------------------------------------------------------------------- -Fri Jul 27 13:56:11 CEST 2007 - stbinner@suse.de - -- add color scheme support to kdm greeter themes (#294421) - -------------------------------------------------------------------- -Mon Jul 16 13:52:32 CEST 2007 - stbinner@suse.de - -- ensure that correct kcmshell is called (#277292) - -------------------------------------------------------------------- -Mon Jul 16 11:39:13 CEST 2007 - dmueller@suse.de - -- update from 3.5 branch to include bugfixes (#287193) - -------------------------------------------------------------------- -Fri Jul 13 11:45:20 CEST 2007 - stbinner@suse.de - -- activate text completion editor in mini-CLI and Konqueror URL bar - -------------------------------------------------------------------- -Thu Jul 12 11:40:17 CEST 2007 - stbinner@suse.de - -- fix ugly scaled remote:/ image in kickoff (#258462) - -------------------------------------------------------------------- -Tue Jul 10 07:07:57 CEST 2007 - stbinner@suse.de - -- fix build on SUSE_Linux_10.0 - -------------------------------------------------------------------- -Thu Jun 21 18:20:58 CEST 2007 - stbinner@suse.de - -- fix invalid .desktop files - -------------------------------------------------------------------- -Wed Jun 20 11:58:22 CEST 2007 - stbinner@suse.de - -- remove kappfinder data (#285831) -- fix build on older distributions - -------------------------------------------------------------------- -Wed Jun 20 11:25:27 CEST 2007 - coolo@suse.de - -- don't install earlykdm anymore and rely on preload to provide - an early start - -------------------------------------------------------------------- -Tue Jun 19 18:12:42 CEST 2007 - dmueller@suse.de - -- 3_5_BRANCH update (#282305) - -------------------------------------------------------------------- -Sat Jun 16 17:23:30 CEST 2007 - coolo@suse.de - -- don't require kbd to run - -------------------------------------------------------------------- -Wed Jun 13 18:42:31 CEST 2007 - dmueller@suse.de - -- fix duplicate files in package -- don't install config files as executable -- fix untranslated wallpaper desktop files -- add missing ldconfig call to %postun -- add missing %stop_on_removal to kdm - -------------------------------------------------------------------- -Thu Jun 7 05:37:53 CEST 2007 - stbinner@suse.de - -- move konqueror.desktop back to old position (#281572) - -------------------------------------------------------------------- -Wed Jun 6 15:15:06 CEST 2007 - dmueller@suse.de - -- fix syslog autodetection in init.earlykdm script - -------------------------------------------------------------------- -Mon Jun 4 14:32:55 CEST 2007 - stbinner@suse.de - -- move kde_post_install - -------------------------------------------------------------------- -Fri Jun 1 17:57:46 CEST 2007 - dmueller@suse.de - -- update 3_5_BRANCH.diff - * build fix - -------------------------------------------------------------------- -Thu May 24 21:32:01 CEST 2007 - wstephenson@suse.de - -- Revised offline mode infrastructure (#237274) - -------------------------------------------------------------------- -Wed May 23 22:59:23 CEST 2007 - stbinner@suse.de - -- fix build requires - -------------------------------------------------------------------- -Mon May 16 22:38:26 CEST 2007 - stbinner@suse.de - -- update to 3.5.7: - * kicker: Added option to change font color used by taskbar applet - * kwin: Option to turn off alt+tab outline. - * several bugfixes in all applications -- update xinerama.patch: fix handling of SeparateScreenFocus option -- update kickoff.diff from SVN -- only default shortcuts to switch to first 10 desktops (#275705) - -------------------------------------------------------------------- -Tue May 15 14:06:01 CEST 2007 - dmueller@suse.de - -- drop python requirement -- only install kdebase3-beagle when both kdebase3 and beagle - are selected - -------------------------------------------------------------------- -Thu May 10 14:20:13 CEST 2007 - stbinner@suse.de - -- add audit log support to kdm (#263180) - -------------------------------------------------------------------- -Thu Apr 26 23:23:31 CEST 2007 - dmueller@suse.de - -- fix build for 10.3 - -------------------------------------------------------------------- -Wed Apr 25 16:29:22 CEST 2007 - stbinner@suse.de - -- fix build for < 10.2 - -------------------------------------------------------------------- -Wed Apr 18 21:31:30 CEST 2007 - dmueller@suse.de - -- reapply konsole font color update - -------------------------------------------------------------------- -Mon Apr 16 13:32:51 CEST 2007 - dmueller@suse.de - -- build kfontinst against libfontenc again - -------------------------------------------------------------------- -Thu Apr 12 13:20:52 CEST 2007 - stbinner@suse.de - -- don't include kdm/sessions/enlightenment.desktop (#259717) -- default to UTF-8 encoding for spellchecking (#261217) - -------------------------------------------------------------------- -Thu Apr 5 15:22:27 CEST 2007 - stbinner@suse.de - -- simplify resize and rotate settings dialog (#104926) - -------------------------------------------------------------------- -Tue Apr 3 18:25:30 CEST 2007 - stbinner@suse.de - -- update 3_5_BRANCH.diff -- update kickoff.diff from SVN: - * prefer user over system media label (#257007) - * implement listening to Beagle KAddressbook hits and do not - search addressbooks via kabc by default (#249287) - * make drawing of Geeko eye an option with default off - -------------------------------------------------------------------- -Fri Mar 30 20:06:41 CEST 2007 - wstephenson@suse.de - -- Add fix for dbus error message after resume (#223775) - -------------------------------------------------------------------- -Sun Mar 25 09:28:48 CEST 2007 - aj@suse.de - -- Add libbz2-devel to BuildRequires for 10.3 and newer. - -------------------------------------------------------------------- -Fri Mar 16 16:18:08 CET 2007 - stbinner@suse.de - -- update Kickoff from SVN: - * don't allow "Switch/Reboot to foo" items as Favorites - * distinct icons for suspend to ram and disk (#229966) -- fix "cannot login with KDM after wrong password" (#229245) -- fix kcmkdm not defaulting to Grub (#230715) - -------------------------------------------------------------------- -Thu Mar 9 17:23:58 CET 2007 - stbinner@suse.de - -- fix build (new icon location check) -- don't duplicate /opt/kde3/bin in PATH (#251358) -- solve #216489 problem in a more generic, path independent way - -------------------------------------------------------------------- -Wed Mar 7 15:48:00 CET 2007 - dmueller@suse.de - -- adjust patsh for gnome help integration (#251117) - -------------------------------------------------------------------- -Mon Mar 5 13:11:44 CET 2007 - stbinner@suse.de - -- /usr/share/xsessions is now already part of filesystem RPM - -------------------------------------------------------------------- -Tue Feb 20 15:21:07 CET 2007 - stbinner@suse.de - -- add "PATH=/opt/kde3/bin:$PATH" to startkde script - -------------------------------------------------------------------- -Fri Feb 9 17:53:24 CET 2007 - stbinner@suse.de - -- new Kickoff option: "KickoffSearchAddressBook=false" disables kabc - search for people who are annoyed by KMail being started by the menu - -------------------------------------------------------------------- -Wed Feb 7 15:05:39 CET 2007 - dmueller@suse.de - -- fix build - -------------------------------------------------------------------- -Mon Feb 5 19:30:47 CET 2007 - dmueller@suse.de - -- fix kde-window-decorator detection -- re-apply 3.5 branch diff - -------------------------------------------------------------------- -Fri Feb 2 14:19:16 CET 2007 - dmueller@suse.de - -- update 3_5_BRANCH diff -- fix low diskspace patch (#226766) - -------------------------------------------------------------------- -Tue Jan 30 14:40:12 CET 2007 - stbinner@suse.de - -- show konqfilemgr.desktop in the menu - -------------------------------------------------------------------- -Fri Jan 26 10:58:09 CET 2007 - coolo@suse.de - -- making kdmrc noreplace as genkdmconf will update the config - anyway (#224505) - -------------------------------------------------------------------- -Mon Jan 22 11:37:44 CET 2007 - stbinner@suse.de - -- update to 3.5.6 release: - * kicker: more support for compiz, fix systray flicker - * kwin: claim _NET_WM_CM_Sn when compositing, bug fixes - * kate: added session chooser panel applet and KMenu extension - * kcontrol: Fonts settings module by default does not affect - system-wide font rendering settings. - * several bugfixes within kdesktop, konqueror, konsole, fish:/, - kfind and ksysguard - -------------------------------------------------------------------- -Thu Jan 18 11:06:28 CET 2007 - dgollub@suse.de - -- fixed typo in crypto support for media manager - -------------------------------------------------------------------- -Tue Jan 16 13:40:48 CET 2007 - dmueller@suse.de - -- add crypto media handling (fate #253) -- konsole color scheme update (experimental) -- start kde-window-decorator for compiz startup - -------------------------------------------------------------------- -Tue Jan 16 02:58:56 CET 2007 - ltinkl@suse.cz - -- update patch to fix #215262 - -------------------------------------------------------------------- -Sat Jan 13 20:22:24 CET 2007 - stbinner@suse.de - -- context menu entry in lock/lockout applet to switch button order - -------------------------------------------------------------------- -Thu Jan 11 19:21:26 CET 2007 - stbinner@suse.de - -- make krandrtray also rotate wacom-input devices (Fate #300713) - -------------------------------------------------------------------- -Tue Jan 9 11:36:30 CET 2007 - stbinner@suse.de - -- fix fish:// does not support files larger than 2 Gb (#230941) -- update of kickoff.diff from SVN: - * fix keyboard navigation in app browser (#227891) - * option to not switch tabs on hover (KickoffSwitchTabsOnHover) - -------------------------------------------------------------------- -Thu Jan 4 22:42:16 CET 2007 - stbinner@suse.de - -- update of kickoff.diff and kickoff-data.tar.bz2 from SVN: - * always show most recently used items, never frequently (#227829) - * fix order of appplication history and reboot options (#227826) - * don't require restart to show/hide "Save Session" (#228829) - * re-add lost "click on tab switches to flip top level" feature - * switch back to top level when changing to exit view via accell - * darker (instead of lighter) resize stripes for better visibility - * added non-GUI options (require restart): kickerrc, [General] - "KickoffFontPointSizeOffset=3" increases, negative decreases - "KickoffTabBarFormat={LabelAndIcon,LabelOnly,IconOnly}" - -------------------------------------------------------------------- -Thu Jan 4 14:41:52 CET 2007 - stbinner@suse.de - -- allow to configure/disable session confirmations in ksmserverrc: - [General] - confirmLogoutDelay=0 - confirmRebootDelay=11 - confirmShutdownDelay=11 - -------------------------------------------------------------------- -Mon Dec 18 18:44:45 CET 2006 - llunak@suse.cz - -- handle custom browser specified as .desktop file (#224897) - -------------------------------------------------------------------- -Mon Dec 11 15:09:30 CET 2006 - stbinner@suse.de - -- unbreak mach_blass_legacy.diff (revert brain damage) - -------------------------------------------------------------------- -Wed Dec 6 11:46:50 CET 2006 - stbinner@suse.de - -- make KDE protocol information use enhanced_browsing icon (#186707) -- use upstream logout effect for 8-bit displays (#214543) - -------------------------------------------------------------------- -Mon Dec 4 11:25:43 CET 2006 - stbinner@suse.de - -- remove UnitedLinux cruft from spec file -- ksmserver: escape "&" properly in grub partition label -- fix more the build for < 10.1 - -------------------------------------------------------------------- -Fri Dec 1 10:09:23 CET 2006 - stbinner@suse.de - -- fix build for < 10.1 - -------------------------------------------------------------------- -Fri Dec 1 04:20:22 CET 2006 - dmueller@suse.de - -- fix drag&drop of favourites on tab regression in kickoff -- fix tooltips sometimes disappearing (#221616) - -------------------------------------------------------------------- -Mon Nov 27 22:14:12 CET 2006 - dmueller@suse.de - -- refresh ksmserver-timed.diff to apply properly - -------------------------------------------------------------------- -Mon Nov 27 17:53:03 CET 2006 - dmueller@suse.de - -- fix translation issue in kickoff Leave tab (#221299) -- fix kickoff tab labels not being drawn centered -- add (hidden) option to disable flip animation - -------------------------------------------------------------------- -Mon Nov 27 17:24:17 CET 2006 - stbinner@suse.de - -- set all logout/shutdown/restart delays to 30 seconds - -------------------------------------------------------------------- -Sat Nov 25 13:32:52 CET 2006 - coolo@suse.de - -- correctly handle media mounted on startup (#223413) - -------------------------------------------------------------------- -Fri Nov 24 10:43:42 CET 2006 - coolo@suse.de - -- correctly follow font sizes in the logout dialog (#222496) - -------------------------------------------------------------------- -Fri Nov 24 08:55:19 CET 2006 - stbinner@suse.de - -- add direct "Requires: Beagle" for kdebase3-beagle package - -------------------------------------------------------------------- -Thu Nov 23 18:59:07 CET 2006 - coolo@suse.de - -- fix highly visible X after dpms kicks out again (#222623 also - reported by ro and various others) - -------------------------------------------------------------------- -Thu Nov 23 16:43:03 CET 2006 - dmueller@suse.de - -- fix kickoff sloppy region also in alternative layout -- use system language in kdm (#223445) -- revert change from 3.5 branch to show media icons (#223413) - -------------------------------------------------------------------- -Wed Nov 22 04:50:20 CET 2006 - ltinkl@suse.cz - -- implement two requested DCOp functions for -#215262 - Suspend to disk with attached usb storage not working - -------------------------------------------------------------------- -Tue Nov 21 13:53:58 CET 2006 - dmueller@suse.de - -- fix another typo (#222686) - -------------------------------------------------------------------- -Tue Nov 21 13:18:31 CET 2006 - dmueller@suse.de - -- fix typo in i18n string (#222686) -- trigger the kmenu when the greeter closes to avoid focus handling - locks - -------------------------------------------------------------------- -Mon Nov 20 22:16:43 CET 2006 - llunak@suse.cz - -- update the updater autostart utility (#219390) - -------------------------------------------------------------------- -Mon Nov 20 17:12:05 CET 2006 - dmueller@suse.de - -- improve application scoring (#221252) -- fix kickoff button flicker (#221287) -- fix kickoff button not flipped in top position (#221209) -- fix some RTL issues with kickoff (#219415) -- hide dpms module if kpowersave is messing with DPMS (#167919) - -------------------------------------------------------------------- -Mon Nov 20 16:01:38 CET 2006 - ltinkl@suse.cz - -- fix #218243 - insserv: Service earlykbd has to be enabled for - service earlykdm - -------------------------------------------------------------------- -Thu Nov 16 18:18:02 CET 2006 - llunak@suse.cz - -- add autostart utility to launch the right updater tool (#219390) -- fix 3_5_BRANCH_kde_128648.diff to avoid KDE#137119 -- fix systray_order.diff to also immediately place properly - zen-updater or other XDG systray apps -- require root password for shutdown by default (#220268) -- fix shell insertion vulnerability in khelpcenter (#218764) - -------------------------------------------------------------------- -Wed Nov 15 21:14:08 CET 2006 - dmueller@suse.de - -- permissions %post for fileshareset (#221129) - -------------------------------------------------------------------- -Tue Nov 14 11:39:06 CET 2006 - dmueller@suse.de - -- update to current optional-kwin.diff (#219020) -- fix more minipager issues with compiz -- fix more shell insertion issues with khelpcenter - -------------------------------------------------------------------- -Tue Nov 14 10:43:27 CET 2006 - ltinkl@suse.cz - -- fixed #218764 - shell insertion vulnerability in khelpcenter - -------------------------------------------------------------------- -Mon Nov 13 23:50:32 CET 2006 - dmueller@suse.de - -- update optional kwin diff to add custom start script support - (#219020) - -------------------------------------------------------------------- -Mon Nov 13 17:41:17 CET 2006 - dmueller@suse.de - -- update kickoff diff to include button-hover fix - -------------------------------------------------------------------- -Mon Nov 13 13:50:44 CET 2006 - dmueller@suse.de - -- update kickoff diff to include latest fixes (#219709) - -------------------------------------------------------------------- -Fri Nov 10 18:56:21 CET 2006 - llunak@suse.cz - -- fix kompmgr leaks (#197990) - -------------------------------------------------------------------- -Fri Nov 10 15:40:30 CET 2006 - llunak@suse.cz - -- make kompmgr read default settings from /etc/opt/kde3/... . -- fix clickraise with compositing (KDE#128648) -- fix possible infinite loop in kompmgr -- composite manager selection in kompmgr -- fix focus chain when opening links in background - -------------------------------------------------------------------- -Thu Nov 9 14:59:02 CET 2006 - stbinner@suse.de - -- fix Kicker default behavior: don't turn on right hide button -- restore parens for NameAndDescription format in Kicker (#213450) -- remove historic "Provides:"/"Obsoletes:" (#218798) - -------------------------------------------------------------------- -Tue Nov 7 16:28:21 CET 2006 - coolo@suse.de - -- only show "you're running out of disk space" dialog once (#218185) - -------------------------------------------------------------------- -Tue Nov 7 14:22:18 CET 2006 - coolo@suse.de - -- mount USB devices again to find out if they are cameras (#217731) -- mount devices on startup too (#179427) - -------------------------------------------------------------------- -Mon Nov 6 12:06:47 CET 2006 - dmueller@suse.de - -- switch kickoff to style based theming -- improve error message upon media:/ errors (#218179) -- fix kerberos refresh problem in kcheckpass (#203570) - -------------------------------------------------------------------- -Sat Nov 4 19:30:12 CET 2006 - stbinner@suse.de - -- fix build for < 10.2 -- fix drag & drop print with utf-8 name (#194400) -- fix systray flicker (#216669) - -------------------------------------------------------------------- -Fri Nov 3 16:09:00 CET 2006 - dmueller@suse.de - -- readd kickoff kcontrol module - -------------------------------------------------------------------- -Thu Nov 2 15:38:25 CET 2006 - stbinner@suse.de - -- show complete wallpaper name in desktop configuration (#103202) -- let lockout applet call again kdm dialog on left click (#215058) - -------------------------------------------------------------------- -Thu Nov 2 15:22:48 CET 2006 - coolo@suse.de - -- don't crash on 8bit displays (#210209) -- don't pollute log/messages with debug (#217035) -- update kdm config patch to fix root login (#208279) -- update ksmserver patch to fix the layout of the logout confirmation - -------------------------------------------------------------------- -Tue Oct 31 14:55:21 CET 2006 - dmueller@suse.de - -- fix kdesu prompt again (#216563) - -------------------------------------------------------------------- -Tue Oct 31 12:49:22 CET 2006 - coolo@suse.de - -- update 3.5 branch and kickoff diff to fix restart (#216092) - -------------------------------------------------------------------- -Mon Oct 30 16:28:05 CET 2006 - coolo@suse.de - -- don't install your own xdm-xp (#192400) - -------------------------------------------------------------------- -Mon Oct 30 11:05:35 CET 2006 - coolo@suse.de - -- update kdm patch to make it quilt ready -- update kickoff.diff for suspend (#215065) -- update 3.5 branch diff to fix - - "set as wallpaper" does not work (#215286) - -------------------------------------------------------------------- -Sun Oct 29 07:48:47 CET 2006 - aj@suse.de - -- Fix kdm-sysconfig-values.diff patch to fix build. - -------------------------------------------------------------------- -Fri Oct 27 10:30:11 CEST 2006 - dmueller@suse.de - -- update 3_5_BRANCH to fix accessibility beeping -- fix Home not showing up in kickoff favourites -- disable accessibility without kdeaccessibility3 (#213622) -- resort some patches -- KDM provides suspend to disk/RAM (fate #300629) -- umount partitions from USB when suspending (fate #300647) -- beagle support in khelpcenter (fate #301208) - -------------------------------------------------------------------- -Tue Oct 24 18:20:56 CEST 2006 - dmueller@suse.de - -- update WM configuration patch -------------------------------------------------------------------- -Tue Oct 24 10:09:57 CEST 2006 - coolo@suse.de - -- update kdm config patch - -------------------------------------------------------------------- -Mon Oct 23 18:16:14 CEST 2006 - dmueller@suse.de - -- add patch for kdm config update problem (#211874) -- add patch for WM configuration in session (FATE 301137) - -------------------------------------------------------------------- -Mon Oct 23 17:25:49 CEST 2006 - dmueller@suse.de - -- adding more default actions for khotkeys to support laptop - extra keys by default (#210875) - -------------------------------------------------------------------- -Mon Oct 23 10:43:34 CEST 2006 - stbinner@suse.de - -- fix file globbing build -- fix build for SUSE < 10.1 - -------------------------------------------------------------------- -Sun Oct 22 23:42:59 CEST 2006 - llunak@suse.cz - -- remove patches disable-kcm-modules.diff and close-use-yast2.diff - that made clock applet use yast timezone module -- patch KDE clock configuration to integrate better with SUSE - (#213897) -- update 3_5_branch diff to include clock fix for picking up - timzone changes (#213897) -- add patch for desktop lock to use xvkbd on tablet pc's (#213677) - -------------------------------------------------------------------- -Fri Oct 20 19:18:44 CEST 2006 - stbinner@suse.de - -- add reboot option parameter to ksm-server-timed.diff dcop call -- update kickoff.diff from SVN: - * if all hits are in same category show double amount of entries - * open Kerry showing only results of selected category link - * add categories for (k)notes and videos - * change logout/shutdown/restart to confirmation with timer - * implement switch user and reboot to other partition - -------------------------------------------------------------------- -Fri Oct 20 12:53:03 CEST 2006 - stbinner@suse.de - -- let logout applet call timed logout in ksmserver - -------------------------------------------------------------------- -Tue Oct 17 17:22:33 CEST 2006 - llunak@suse.cz - -- updates to the systray ordering patch - -------------------------------------------------------------------- -Mon Oct 16 12:49:25 CEST 2006 - stbinner@suse.de - -- update kickoff.diff from SVN and break it into parts - -------------------------------------------------------------------- -Fri Oct 13 18:50:18 CEST 2006 - llunak@suse.cz - -- add patch for KDE#135250 to 3_5 branch diff -- systray ordering (fate #301154) - -------------------------------------------------------------------- -Thu Oct 12 15:36:32 CEST 2006 - stbinner@suse.de - -- change Home.desktop type to URL (#158487) - -------------------------------------------------------------------- -Tue Oct 10 15:36:15 CEST 2006 - coolo@suse.de - -- add patch to provide a timed logout mode to ksmserver - -------------------------------------------------------------------- -Mon Oct 9 11:53:13 CEST 2006 - coolo@suse.de - -- update 3_5 branch diff to include - - show all user mountable devices in fstab (#204376) - -------------------------------------------------------------------- -Sat Oct 7 20:06:06 CEST 2006 - stbinner@suse.de - -- update to next 3.5.5 release tarball - - changes to Kicker tip showing/switching and systemtray - - give focus to OK button in media notifier - -------------------------------------------------------------------- -Fri Oct 6 14:22:36 CEST 2006 - coolo@suse.de - -- update to next 3.5.5 release tarball - - kdesu fixes - - kicker pager fix -- fix kdm config reader to only reset changes in kdmrc once - -------------------------------------------------------------------- -Wed Oct 4 15:15:35 CEST 2006 - hmacht@suse.de - -- new ksmserver-suspend.diff: - - query HAL for suspend capabilities and trigger sleep via HAL - - dependency to liblazy instead of powersave-devel for > 10.1 -- renname existing ksmserver-suspend.diff to - ksmserver-suspend_legacy-10.1.diff for 10.1 - -------------------------------------------------------------------- -Wed Oct 4 14:43:08 CEST 2006 - coolo@suse.de - -- let kdm start Xgl if configured so - -------------------------------------------------------------------- -Wed Oct 4 11:49:47 CEST 2006 - dmueller@suse.de - -- update 3_5_BRANCH.diff to include kicker minipager fixlets - -------------------------------------------------------------------- -Tue Oct 3 10:14:26 CEST 2006 - stbinner@suse.de - -- update to 3.5.5 release tarball - -------------------------------------------------------------------- -Sun Oct 1 17:48:20 CEST 2006 - stbinner@suse.de - -- update 3_5_BRANCH.diff (random bug fixes) -- update kickoff.diff - -------------------------------------------------------------------- -Wed Sep 27 16:34:49 CEST 2006 - stbinner@suse.de - -- add recommendation to kdebase3-beagle for kdebase3 package - -------------------------------------------------------------------- -Thu Sep 21 19:02:39 CEST 2006 - dmueller@suse.de - -- preliminary viewport pager support -- update compmgr patch to remove opacity slider when no extension - is applicable - -------------------------------------------------------------------- -Thu Sep 21 09:53:40 CEST 2006 - stbinner@suse.de - -- fix build -- kcheckpass-pam, kdm-pam-np: remove pam_devperm.so (Bug #206963) - -------------------------------------------------------------------- -Tue Sep 19 22:58:28 CEST 2006 - dmueller@suse.de - -- use sudo for kdesu - -------------------------------------------------------------------- -Tue Sep 19 09:56:02 CEST 2006 - coolo@suse.de - -- disable low disk space warning for < 10.1 - -------------------------------------------------------------------- -Tue Sep 19 00:40:04 CEST 2006 - dmueller@suse.de - -- update kickoff patch to include numerous bugfixes - -------------------------------------------------------------------- -Mon Sep 18 13:56:22 CEST 2006 - ltinkl@suse.cz - -- fixing low disk space warning dialog (the don't-show-again case) - -------------------------------------------------------------------- -Thu Sep 14 21:31:44 CEST 2006 - coolo@suse.de - -- fixing low disk space calculation for huge volumes (without having - one to test either) - -------------------------------------------------------------------- -Thu Sep 14 09:16:23 CEST 2006 - coolo@suse.de - -- actually check the auth in kcheckpass - -------------------------------------------------------------------- -Tue Sep 12 20:59:30 CEST 2006 - dmueller@suse.de - -- update 3_5_BRANCH to fix kicker hang (#204728) - -------------------------------------------------------------------- -Tue Sep 12 15:28:07 CEST 2006 - stbinner@suse.de - -- update kickoff patch and package plugin to kdebase3-beagle -- add "bnc" web shortcut for Novell Bugzilla (#204724) - -------------------------------------------------------------------- -Tue Sep 12 15:13:17 CEST 2006 - ltinkl@suse.cz - -- implement #199054 - Add low disk space real time monitor - -------------------------------------------------------------------- -Thu Sep 7 16:52:33 CEST 2006 - dmueller@suse.de - -- make kompmr optional - -------------------------------------------------------------------- -Thu Sep 7 12:03:49 CEST 2006 - coolo@suse.de - -- split pam config between xdm and kcheckpass (#133347) - -------------------------------------------------------------------- -Thu Sep 7 09:24:18 CEST 2006 - coolo@suse.de - -- recommend gdb -- update kickoff patch to have larger back button -- update 3_5_BRANCH.diff (random bug fixes) -- back out the konsole bold font change for now (kde #131770) - -------------------------------------------------------------------- -Tue Sep 5 10:00:14 CEST 2006 - stbinner@suse.de - -- correcting kdm patches for older distributions - -------------------------------------------------------------------- -Mon Sep 4 14:48:46 CEST 2006 - llunak@suse.cz - -- Add patches with Xinerama improvements - -------------------------------------------------------------------- -Sun Sep 3 08:59:45 CEST 2006 - stbinner@suse.de - -- fix build on older distributions - -------------------------------------------------------------------- -Fri Sep 1 14:52:22 CEST 2006 - coolo@suse.de - -- fixed layout of the back button -- updated to 3_5_BRANCH to fix kwin alt-tab ugliness -- move kdmrc out of /etc/opt/kde3 if found an old one in /opt/kde3 - -------------------------------------------------------------------- -Fri Sep 1 07:29:42 CEST 2006 - coolo@suse.de - -- adding SUSE menu - -------------------------------------------------------------------- -Thu Aug 31 13:56:43 CEST 2006 - stbinner@suse.de - -- add man pages for fileshareset and kcheckpass (#187356) - -------------------------------------------------------------------- -Mon Aug 28 13:30:59 CEST 2006 - stbinner@suse.de - -- switch lock and logout order in Kicker lock/logout applet - -------------------------------------------------------------------- -Fri Aug 25 21:34:59 CEST 2006 - coolo@suse.de - -- fixing the order where it matters - -------------------------------------------------------------------- -Fri Aug 25 14:36:30 CEST 2006 - coolo@suse.de - -- fix more default values for kdmrc - -------------------------------------------------------------------- -Wed Aug 23 17:46:14 CEST 2006 - coolo@suse.de - -- rework the way kdmrc is handled (rather experimental): - - the KDE defaults are changed right in the build where the value - is static (kdm-fix-default-kdmrc.diff) - - the KDE kdmrc is the one used by kdm and kcontrol - - the default values are overwritten by values in - (/var/adm/kdm/kdmrc.syscnfig generated by kdm_config) - - Fixes #163954 - - drops a SuSEconfig - -------------------------------------------------------------------- -Wed Aug 23 11:01:33 CEST 2006 - stbinner@suse.de - -- update 3_5_BRANCH.diff (mostly Konqueror, Kicker and Kwin fixes) - -------------------------------------------------------------------- -Thu Aug 17 14:31:25 CEST 2006 - dmueller@suse.de - -- add SuSEconfig.kdm3 script from the theme flavour package - (#181572) - -------------------------------------------------------------------- -Thu Aug 3 17:45:35 CEST 2006 - stbinner@suse.de - -- adapt to new X.org paths - -------------------------------------------------------------------- -Sun Jul 23 21:49:02 CEST 2006 - coolo@suse.de - -- update to KDE 3.5.4: - * support X-KDE-Protocols in konqi RMB menu - * several Kate fixes - * Konsole: miscellanous speedups and bug fixes - * media manager: several fixes and HAL support merged upstream - * security: add various missing return value checks - -------------------------------------------------------------------- -Sun Jul 9 20:50:29 CEST 2006 - stbinner@suse.de - -- fix "kdeeject --help" (#190836) - -------------------------------------------------------------------- -Sat Jun 24 21:44:58 CEST 2006 - schwab@suse.de - -- Use long long for parsing net stats to support more than 4G. - -------------------------------------------------------------------- -Wed Jun 21 18:44:29 CEST 2006 - stbinner@suse.de - -- update branch diff and media-iPod.diff to fix iPod support - -------------------------------------------------------------------- -Mon Jun 19 21:24:08 CEST 2006 - stbinner@suse.de - -- fix build - -------------------------------------------------------------------- -Mon Jun 19 15:34:16 CEST 2006 - coolo@suse.de - -- update 3_5_BRANCH.diff again for several bug fixes (KDE bug reports - 47242 128754 117623 116209 55795) - -------------------------------------------------------------------- -Mon Jun 19 08:21:22 CEST 2006 - coolo@suse.de - -- don't translate hidden uninstall.desktop files - -------------------------------------------------------------------- -Fri Jun 16 12:41:47 CEST 2006 - coolo@suse.de - -- use sax.mo for translating xkb options (#183672) - -------------------------------------------------------------------- -Wed Jun 14 16:56:43 CEST 2006 - coolo@suse.de - -- update 3_5_BRANCH.diff and media_suse.diff to follow the upstream - merge of our media:/ changes - -------------------------------------------------------------------- -Mon Jun 12 17:11:03 CEST 2006 - dmueller@suse.de - -- fix ~/.dmrc symlink attack (#180704, CVE-2006-2449) - -------------------------------------------------------------------- -Mon Jun 12 15:19:14 CEST 2006 - stbinner@suse.de - -- update 3_5_BRANCH.diff to fix build (OpenEXR configure check) -- obey chosen k menu item format when collapsing menus (#183244) - -------------------------------------------------------------------- -Tue Jun 6 22:03:45 CEST 2006 - stbinner@suse.de - -- add 3_5_BRANCH.diff to fix screensaver not starting (#181122) - -------------------------------------------------------------------- -Tue May 30 17:06:14 CEST 2006 - stbinner@suse.de - -- don't enforce sorting of menu entries (#160259) - -------------------------------------------------------------------- -Fri May 26 17:18:32 CEST 2006 - stbinner@suse.de - -- new KDE 3.5.3 tarball (fix systram-tray related Kicker crashes) - -------------------------------------------------------------------- -Wed May 24 09:56:43 CEST 2006 - stbinner@suse.de - -- update to KDE 3.5.3 - * KDE startup reordered in order to improve startup time - * several fixes to Kicker, Konsole, Kate, Konqueror and kwin - -------------------------------------------------------------------- -Tue May 23 17:14:56 CEST 2006 - adrian@suse.de - -- fix build for the openSUSE build service - -------------------------------------------------------------------- -Fri May 19 10:15:30 CEST 2006 - stbinner@suse.de - -- fix supplementary build - -------------------------------------------------------------------- -Mon May 15 17:14:14 CEST 2006 - stbinner@suse.de - -- update to KDE 3.5.2 and 3_5_BRANCH.diff - * Klipper - - Handle URLs as URLs and not as Text (bug #121114) - - Prevent crashes caused by corrupted history (bug #109161) - - XFixes support (especially helps with broken clipboard - implementations of some non-KDE applications) (bug #101087) - - Images are ignored by default, add 'IgnoreImages=false' to - '[General]' in klipperrc (bug #109032) - - Avoid repeated action popup with the same URL with some - non-KDE applications with broken clipboard implementations - * Konsole - - Correct issue where history size is unlimited when dealing - with History options in profiles (bug #120046) - - Correctly set Tab bar when set to Dynamic Hide after - session restore (bug #121688) - * Country settings - - Fix short date format for Switzerland (bug #122574) - - Fix address format (especially P.O. Box) for Switzerland - * KSysGuard - - Show the sensors with values of more than two digits - correctly in the applet - * Kicker - - Connect the applications to systray correctly on startup - - Panels properly reserve space at screen edges even for - differently sized Xinerama screens (bug #94470) - * Konqueror - - Resolve symlinks only on the desktop (bug #63014) - * KWin - - Added new window-specific rules for OpenOffice.org, XV and - Mozilla family applications for turning off focus stealing - prevention, as these applications don't work well with it - - Reverted a workaround that as a side-effect had broken - systray docking of some applications (bug #100177) - - Each virtual desktop has a separate focus chain (bug #33701) - * KDesktop - - Fixed stacking of some dialogs (bug #89951,bug #113556) -------------------------------------------------------------------- -Wed May 10 16:19:01 CEST 2006 - coolo@suse.de - -- line break if the message is too long for the screen (#157237) - -------------------------------------------------------------------- -Tue Apr 25 19:22:06 CEST 2006 - wstephenson@suse.de - -- Use a user writable directory for user indexing (#165308) - -------------------------------------------------------------------- -Mon Apr 24 13:24:18 CEST 2006 - stbinner@suse.de - -- pull libXt into plugin scan to find all NS plugins (#140485) - -------------------------------------------------------------------- -Fri Apr 21 17:04:13 CEST 2006 - stbinner@suse.de - -- don't show errors in kcm_kio without kdenetwork3-lan (#165318) - -------------------------------------------------------------------- -Mon Apr 17 18:07:32 CEST 2006 - ltinkl@suse.cz - -- fix "KDE Information Center fails to provide log info for samba" - (#98763) - -------------------------------------------------------------------- -Tue Apr 11 10:48:45 CEST 2006 - coolo@suse.de - -- update media_hal.diff to make mounting floppies work (#164488) - -------------------------------------------------------------------- -Mon Apr 10 13:22:01 CEST 2006 - wstephenson@suse.de - -- Fix failure to open Sound kcmodule (#164768) - -------------------------------------------------------------------- -Sat Apr 8 21:25:25 CEST 2006 - schwab@suse.de - -- Fix misplaced %endif [#58820]. - -------------------------------------------------------------------- -Wed Apr 5 12:19:14 CEST 2006 - dmueller@suse.de - -- update hinting default to full (#157441) - -------------------------------------------------------------------- -Mon Apr 3 19:00:25 CEST 2006 - stbinner@suse.de - -- fix possible Konsole crash on session saving/logout (#147286) - -------------------------------------------------------------------- -Mon Apr 3 14:34:35 CEST 2006 - stbinner@suse.de - -- don't remove obsolete from list of known kdesu options (#162790) -- fix panel configuration to not always ask to save (#157821) -- add missing kdm Provides: for transition from NLD9 (#162511) - -------------------------------------------------------------------- -Fri Mar 31 17:24:26 CEST 2006 - stbinner@suse.de - -- update media_hal.diff to make it possible that applications like - k3b can stop automounting (#160654) - -------------------------------------------------------------------- -Tue Mar 28 17:46:23 CEST 2006 - coolo@suse.de - -- update media_hal.diff to handle fstab entries more correctly - -------------------------------------------------------------------- -Thu Mar 23 10:34:38 CET 2006 - stbinner@suse.de - -- add patch to fix jumpy taskbar size (#156621) -- update media_hal.diff to fix setting of mount properties for a - removable device (#160002) and respect hal lockdown (#153241) -- fix kded application launch hang due to NFS (#160292) - -------------------------------------------------------------------- -Tue Mar 21 11:14:57 CET 2006 - stbinner@suse.de - -- make kdeeject work again (#159310) - -------------------------------------------------------------------- -Mon Mar 20 10:52:45 CET 2006 - stbinner@suse.de - -- remove "Keep password" checkbox from kdesu (#159224) - -------------------------------------------------------------------- -Sat Mar 18 22:26:30 CET 2006 - coolo@suse.de - -- update kicker to more changes to fix crashes on logout - (#155339) - -------------------------------------------------------------------- -Thu Mar 16 18:01:05 CET 2006 - dmueller@suse.de - -- fix klipper actions listing firefox twice -- fix klipper not linking against Xfixes -- fix klipper handling urls as plain text (KDE #121114) -- fix Xfixes detection - -------------------------------------------------------------------- -Mon Mar 13 19:00:07 CET 2006 - wstephenson@suse.de - -- make offline mode for accessible for konqueror - -------------------------------------------------------------------- -Mon Mar 13 15:13:11 CET 2006 - stbinner@suse.de - -- allow to hide wallpapers from configuration (#156170) -- install startkde.suse.sh only for older distributions - -------------------------------------------------------------------- -Sat Mar 11 14:36:23 CET 2006 - coolo@suse.de - -- hide kjobviewer startup info on quit (#156821) - -------------------------------------------------------------------- -Thu Mar 9 13:02:33 CET 2006 - coolo@suse.de - -- update kicker to latest changes to fix crashes on logout (#155339, - http://bugs.kde.org/121430) - -------------------------------------------------------------------- -Wed Mar 8 08:39:40 CET 2006 - dmueller@suse.de - -- fix permissions of README (#155946) -- make KDM_SHUTDOWN sysconfig migration complete - -------------------------------------------------------------------- -Tue Mar 7 10:59:00 CET 2006 - stbinner@suse.de - -- update media_hal.diff to fix mounting (#154652) -- give mini cli dialog parent to fix #155355 -- add %post for 10.1 to migrate KDM_SHUTDOWN (#148468) -- don't try to grep non-existing file in kdm %post (#154302) -- don't try to run artsshell on shutdown if not installed -- let kdm ignore unresolvable hosts in Xaccess (#135714) - -------------------------------------------------------------------- -Mon Mar 6 16:17:13 CET 2006 - dmueller@suse.de - -- Add XV to focus-stealing-prevention blacklist (#155250) - -------------------------------------------------------------------- -Mon Mar 6 08:23:40 CET 2006 - hpj@suse.de - -- Use susehelp to show docs. This enables preprocessing that - allows khelpcenter to show GNOME documentation. - -------------------------------------------------------------------- -Wed Mar 1 19:32:30 CET 2006 - stbinner@suse.de - -- unbreak Kicker menus when user-arranged (#151492) - -------------------------------------------------------------------- -Tue Feb 28 10:38:04 CET 2006 - stbinner@suse.de - -- no "Recommends:" for older distributions - -------------------------------------------------------------------- -Mon Feb 27 16:05:35 CET 2006 - coolo@suse.de - -- more files to translate (#144788) - -------------------------------------------------------------------- -Mon Feb 27 10:51:56 CET 2006 - coolo@suse.de - -- only use preload if it's the 10.1 version (#153543) - -------------------------------------------------------------------- -Fri Feb 24 21:36:02 CET 2006 - ltinkl@suse.cz - -- fix keyboard navigation in Theme Manager (#148299) - -------------------------------------------------------------------- -Tue Feb 21 16:17:23 CET 2006 - dmueller@suse.de - -- downgrade kdelibs3_doc require to recommends (#152504) - -------------------------------------------------------------------- -Mon Feb 20 19:14:40 CET 2006 - dmueller@suse.de - -- fix ksysguard killing hidden processes (#151804) - -------------------------------------------------------------------- -Fri Feb 17 14:25:10 CET 2006 - dmueller@suse.de - -- remove spec file sections for SL < 9.2 - -------------------------------------------------------------------- -Fri Feb 17 11:11:30 CET 2006 - coolo@suse.de - -- fix crash in HAL backend on stick removal (#151742) - -------------------------------------------------------------------- -Thu Feb 16 10:14:26 CET 2006 - dmueller@suse.de - -- add $HOME/.gtkrc-2.0 to GTK2_RC_FILES (#151344) - -------------------------------------------------------------------- -Wed Feb 15 16:57:42 CET 2006 - coolo@suse.de - -- update media_hal.diff to fix unmount (#149472) - -------------------------------------------------------------------- -Wed Feb 15 09:06:39 CET 2006 - stbinner@suse.de - -- fix %suse_update_desktop_file parameter order -- add intermediate kdebase3-khotkeys package to provides/obsoletes - -------------------------------------------------------------------- -Tue Feb 14 15:17:10 CET 2006 - llunak@suse.cz - -- discard old ksycoca during startup if rpm database has changed -- fix showing menu entries in short-menus.diff -- khelpcenter indexing fixes (#146618) - -------------------------------------------------------------------- -Fri Feb 10 11:45:40 CET 2006 - stbinner@suse.de - -- disable kwin focus stealing prevention for Mozilla family apps - and OpenOffice.org by default (#115417) - -------------------------------------------------------------------- -Thu Feb 9 11:55:34 CET 2006 - coolo@suse.de - -- adapt to new way of preload (#147673) - -------------------------------------------------------------------- -Wed Feb 8 15:53:05 CET 2006 - coolo@suse.de - -- reinit pam sessions as the pam handle stores user specific data - (#144804) - -------------------------------------------------------------------- -Tue Feb 7 13:46:57 CET 2006 - stbinner@suse.de - -- add "most common nsplugin crash" fix (KDE #121501) -- fix Konsole history saving being incomplete (KDE #116351) - -------------------------------------------------------------------- -Mon Feb 6 12:01:33 CET 2006 - dmueller@suse.de - -- move khotkeys-arts to kdebase3-extra -- rediff media_hal.diff to fix crash on logout - -------------------------------------------------------------------- -Mon Feb 6 01:35:13 CET 2006 - ro@suse.de - -- fix build for < 10.1 - -------------------------------------------------------------------- -Fri Feb 3 16:16:50 CET 2006 - coolo@suse.de - -- fix kicker menu extension (#147941) - -------------------------------------------------------------------- -Fri Feb 3 12:14:37 CET 2006 - coolo@suse.de - -- add patches to KDE SVN done by SUSE engineers -- add patch to fix severe problem with keyboard chooser (KDE #121087) - -------------------------------------------------------------------- -Fri Feb 3 12:08:33 CET 2006 - coolo@suse.de - -- Fix #74524 and merge kicker-fix-alphabetical into short-menus - (by Lubos) - -------------------------------------------------------------------- -Thu Feb 2 19:19:29 CET 2006 - coolo@suse.de - -- updating media patch as we fixed problems - -------------------------------------------------------------------- -Thu Feb 2 14:58:35 CET 2006 - coolo@suse.de - -- remove logrotate script (#144544) - -------------------------------------------------------------------- -Wed Feb 1 16:50:16 CET 2006 - dmueller@suse.de - -- fix kicker crashes caused by kicker-fix-alphabetical.diff -- add xfixes support to klipper - -------------------------------------------------------------------- -Wed Feb 1 16:15:19 CET 2006 - coolo@suse.de - -- fix wallpapers path - -------------------------------------------------------------------- -Mon Jan 30 18:22:25 CET 2006 - coolo@suse.de - -- make xdm pam service future proof (suggestion by kukuk) - -------------------------------------------------------------------- -Mon Jan 30 14:27:19 CET 2006 - stbinner@suse.de - -- update media_hal.diff -- drop workaround-xterm-size-bug.diff - -------------------------------------------------------------------- -Mon Jan 30 11:44:06 CET 2006 - stbinner@suse.de - -- update to 3.5 branch - -------------------------------------------------------------------- -Sun Jan 29 22:19:40 CET 2006 - coolo@suse.de - -- fix build - -------------------------------------------------------------------- -Sun Jan 29 15:21:26 CET 2006 - aj@suse.de - -- Require dbus-1-qt3-devel for build. - -------------------------------------------------------------------- -Sat Jan 28 16:08:11 CET 2006 - coolo@suse.de - -- fix kdm colors - -------------------------------------------------------------------- -Sat Jan 28 15:17:06 CET 2006 - coolo@suse.de - -- move wallpapers to /usr/share/wallpapers - -------------------------------------------------------------------- -Fri Jan 27 18:09:47 CET 2006 - coolo@suse.de - -- fix two media handling bugs - -------------------------------------------------------------------- -Fri Jan 27 11:33:35 CET 2006 - coolo@suse.de - -- samba maintainers changed their mind - -------------------------------------------------------------------- -Wed Jan 25 22:00:05 CET 2006 - coolo@suse.de - -- update to 3.5 branch for smb integration fix -- add Lubos' splash screen improvment patch -- update media handling patch -- add patch to support old plugger features - -------------------------------------------------------------------- -Wed Jan 25 21:33:03 CET 2006 - mls@suse.de - -- converted neededforbuild to BuildRequires - -------------------------------------------------------------------- -Mon Jan 23 22:36:31 CET 2006 - coolo@suse.de - -- wrote mount plugin for subfs replacement - -------------------------------------------------------------------- -Mon Jan 23 18:15:28 CET 2006 - stbinner@suse.de - -- fix alphabetic sorting of start menu entries (#143351) - -------------------------------------------------------------------- -Mon Jan 23 16:08:22 CET 2006 - coolo@suse.de - -- translate some more files - -------------------------------------------------------------------- -Sun Jan 22 13:34:23 CET 2006 - stbinner@suse.de - -- fix Bug 117636 - No printer entry in the control center - -------------------------------------------------------------------- -Sat Jan 21 20:25:30 CET 2006 - coolo@suse.de - -- update to KDE 3.5.1 -- use HAL in media:/ instead of subfs - -------------------------------------------------------------------- -Mon Jan 16 17:28:44 CET 2006 - wstephenson@suse.de - -- Add KHelpCenter rellinks support -- Don't prompt the user to create indices, now automatic. - -------------------------------------------------------------------- -Thu Jan 12 16:16:47 CET 2006 - stbinner@suse.de - -- Rename "Control Center" to "Personal Settings" -- Have "My System" and "Recent Documents" by default in kmenu - -------------------------------------------------------------------- -Tue Jan 10 09:08:57 CET 2006 - coolo@suse.de - -- adding a domain-label to kdm themes - -------------------------------------------------------------------- -Mon Jan 9 12:26:27 CET 2006 - stbinner@suse.de - -- update to 3_5_BRANCH -- disable kxkb_variants_3_5.diff (same functionality upstream) -- remove khotkeys.patch (committed upstream) - -------------------------------------------------------------------- -Sat Jan 7 22:55:24 CET 2006 - stbinner@suse.de - -- update to 3_5_BRANCH.diff before the first Beta - -------------------------------------------------------------------- -Thu Jan 5 15:17:51 CET 2006 - llunak@suse.cz - -- update performance patch, use same names like in kdebase-SuSE -- less verbal kdesu prompt (feature #4135) - -------------------------------------------------------------------- -Mon Jan 2 13:56:48 CET 2006 - ltinkl@suse.cz - -- fix KDE screen lock missing language switcher (#133244) - -------------------------------------------------------------------- -Fri Dec 23 11:41:01 CET 2005 - stbinner@suse.de - -- updated 3_5_BRANCH.diff (kdm winbind greeter etc.) -- updated kdm-make_it_cool.diff - -------------------------------------------------------------------- -Wed Dec 21 13:18:25 CET 2005 - stbinner@suse.de - -- fix build for released distributions - -------------------------------------------------------------------- -Mon Dec 19 11:58:53 CET 2005 - dmueller@suse.de - -- use dbus-1-qt3 - -------------------------------------------------------------------- -Wed Dec 14 14:04:32 CET 2005 - lmuelle@suse.de - -- Package fileshareset and filesharelist as a separate package named fileshare - for post 10.0 products and use %_bindir as install location. - -------------------------------------------------------------------- -Sun Dec 4 23:53:06 CET 2005 - lmuelle@suse.de - -- Revert libsmbclient renameing. - -------------------------------------------------------------------- -Fri Dec 2 11:38:19 CET 2005 - coolo@suse.de - -- update to 3.5 branch and adapt the patches accordingly -- add two more patches of Lubos - -------------------------------------------------------------------- -Tue Nov 29 14:17:40 CET 2005 - coolo@suse.de - -- uncommenting kxkb patch -- remove support for outdated suse versions -- remove the khotkeys package for now - -------------------------------------------------------------------- -Mon Nov 28 13:26:02 CET 2005 - ltinkl@suse.cz - -- update kxkb to fix KDE bug #116619 - -------------------------------------------------------------------- -Sun Nov 27 18:09:08 CET 2005 - coolo@suse.de - -- fix patch conflict - -------------------------------------------------------------------- -Sat Nov 26 10:09:51 CET 2005 - coolo@suse.de - -- update to version 3.5 - -------------------------------------------------------------------- -Fri Nov 25 11:47:09 CET 2005 - stbinner@suse.de - -- fix initial kmenu pos and last/most used section losing icons - -------------------------------------------------------------------- -Wed Nov 23 20:37:54 CET 2005 - coolo@suse.de - -- fix repainting - -------------------------------------------------------------------- -Tue Nov 22 21:52:24 CET 2005 - coolo@suse.de - -- add tooltips to the buttons as suggested by Eva - -------------------------------------------------------------------- -Mon Nov 21 15:25:27 CET 2005 - stbinner@suse.de - -- update to version 3.5 RC 2 - -------------------------------------------------------------------- -Mon Nov 21 11:12:28 CET 2005 - dmueller@suse.de - -- remove xorg-x11 dependency for SL < 9.2 - -------------------------------------------------------------------- -Fri Nov 18 08:45:51 CET 2005 - stbinner@suse.de - -- fix build after last patch on older distributions - -------------------------------------------------------------------- -Thu Nov 17 16:24:55 CET 2005 - stbinner@suse.de - -- fix kmenu search freezing computer for some seconds (#133593) - -------------------------------------------------------------------- -Mon Nov 14 22:41:14 CET 2005 - lmuelle@suse.de - -- Use samba-libs instead of libsmbclient. - -------------------------------------------------------------------- -Thu Nov 10 12:03:25 CET 2005 - stbinner@suse.de - -- update to version 3.5 RC 1 - -------------------------------------------------------------------- -Sat Nov 5 00:33:54 CET 2005 - coolo@suse.de - -- add patches to improve startup performance - -------------------------------------------------------------------- -Thu Nov 3 10:54:17 CET 2005 - coolo@suse.de - -- fix suseplugger integration to not create fork bombs - -------------------------------------------------------------------- -Mon Oct 31 11:50:24 CET 2005 - coolo@suse.de - -- update kdm patches - -------------------------------------------------------------------- -Mon Oct 31 09:43:52 CET 2005 - coolo@suse.de - -- update to 3.5 branch -- call suseplugger for unhandled UDIs - -------------------------------------------------------------------- -Thu Oct 20 13:43:18 CEST 2005 - ltinkl@suse.cz - -- update kstartupconfig for KDE 3.5 (from Seli) -- fixed window decorations messed up with maximized windows (#120027) -- implemented support for configuring multiple keyboard variants in kxkb (#120395) - -------------------------------------------------------------------- -Wed Oct 19 13:48:43 CEST 2005 - stbinner@suse.de - -- readd still needed parts of improve-panelservicemenu-geticonset.diff - -------------------------------------------------------------------- -Thu Oct 13 16:41:08 CEST 2005 - dmueller@suse.de - -- fix build -- disable accessibility feature if kdeaccessibility is not installed - -------------------------------------------------------------------- -Wed Oct 12 13:34:12 CEST 2005 - stbinner@suse.de - -- update to version 3.4.92 (3.5 Beta 2) - -------------------------------------------------------------------- -Tue Oct 11 21:11:14 CEST 2005 - stbinner@suse.de - -- add patch to teach mini-CLI the "lock" command - -------------------------------------------------------------------- -Fri Oct 7 17:56:00 CEST 2005 - coolo@suse.de - -- update to 3.5 branch to get some testing for media:/ changes - -------------------------------------------------------------------- -Sun Oct 2 10:22:57 CEST 2005 - stbinner@suse.de - -- in collapsed k menu group use category icon if entry has none - -------------------------------------------------------------------- -Fri Sep 30 17:45:12 CEST 2005 - stbinner@suse.de - -- fix wrongly upgraded patch (short-menus.diff) - -------------------------------------------------------------------- -Thu Sep 29 11:06:07 CEST 2005 - stbinner@suse.de - -- remove gdm support from kdmlib for 9.3-x86_64 to fix compilation - -------------------------------------------------------------------- -Wed Sep 28 18:36:49 CEST 2005 - stbinner@suse.de - -- never show broken looking icons in kicker start menu -- show nice disabled icons for smaller kicker menu icon sizes - -------------------------------------------------------------------- -Mon Sep 26 14:12:46 CEST 2005 - stbinner@suse.de - -- fix compilation on 9.2-x86_64, don't use Xfixes - -------------------------------------------------------------------- -Mon Sep 26 13:03:24 CEST 2005 - dmueller@suse.de - -- add 3_5_BRANCH.diff and try to fix fileconflicts - -------------------------------------------------------------------- -Mon Sep 26 09:32:45 CEST 2005 - coolo@suse.de - -- updating info about lame as given by legal - -------------------------------------------------------------------- -Sat Sep 24 16:08:27 CEST 2005 - stbinner@suse.de - -- fix dependencies of khotkeys package for <10.0 - -------------------------------------------------------------------- -Tue Sep 20 18:29:49 CEST 2005 - stbinner@suse.de - -- update to version 3.4.91 (3.5 Beta) - -------------------------------------------------------------------- -Wed Sep 14 22:54:52 CEST 2005 - dmueller@suse.de - -- fix kicker crashing on logout (#117100) - -------------------------------------------------------------------- -Wed Sep 14 08:46:39 CEST 2005 - dmueller@suse.de - -- drop kdelibs3-devel-doc dependendy - -------------------------------------------------------------------- -Fri Sep 9 10:46:20 CEST 2005 - coolo@suse.de - -- fix grubonce support (#106037) - -------------------------------------------------------------------- -Thu Sep 8 13:47:18 CEST 2005 - dmueller@suse.de - -- fix for theme-resetting from Lubos (#114951) - -------------------------------------------------------------------- -Wed Sep 7 20:05:46 CEST 2005 - dmueller@suse.de - -- fix deletion of folders via media:/ (#113583) - -------------------------------------------------------------------- -Tue Sep 6 21:58:30 CEST 2005 - dmueller@suse.de - -- add patch to smb:// to support kerberos authentication (#115245) - -------------------------------------------------------------------- -Tue Sep 6 21:37:46 CEST 2005 - coolo@suse.de - -- let the other init scripts do some IO too, so they don't run - into timeouts - -------------------------------------------------------------------- -Tue Sep 6 15:43:24 CEST 2005 - stbinner@suse.de - -- Fix quick launcher duplicating moved items (#113879) - -------------------------------------------------------------------- -Tue Sep 6 13:31:23 CEST 2005 - coolo@suse.de - -- be a bit more careful with disabling unmount for media (#80313) - -------------------------------------------------------------------- -Mon Sep 5 10:20:37 CEST 2005 - dmueller@suse.de - -- apply fixes for kcheckpass (CAN-2005-2494, #66218) - -------------------------------------------------------------------- -Mon Aug 29 16:03:09 CEST 2005 - coolo@suse.de - -- work around the xterm sizing bug again as we did on 9.2 (#61153) - -------------------------------------------------------------------- -Thu Aug 25 18:11:47 CEST 2005 - coolo@suse.de - -- fixing the screensaver picking - -------------------------------------------------------------------- -Tue Aug 23 17:52:58 CEST 2005 - coolo@suse.de - -- use better defaults for random screensaver -- use the new preload - -------------------------------------------------------------------- -Mon Aug 22 17:24:30 CEST 2005 - llunak@suse.cz - -- Use --embed-proxy instead of --embed for kcmshell with kcmyast, - so that there are no kcmshell buttons with embedded yast. - -------------------------------------------------------------------- -Mon Aug 22 16:16:04 CEST 2005 - llunak@suse.cz - -- Don't start kaccess unconditionally. - -------------------------------------------------------------------- -Mon Aug 22 15:24:42 CEST 2005 - ro@suse.de - -- fixed file list - -------------------------------------------------------------------- -Mon Aug 22 11:25:34 CEST 2005 - coolo@suse.de - -- fix file conflict - -------------------------------------------------------------------- -Sun Aug 21 16:22:30 CEST 2005 - coolo@suse.de - -- fix the kdm change for incomplete themes - -------------------------------------------------------------------- -Sat Aug 20 18:21:45 CEST 2005 - coolo@suse.de - -- trying to please Rudi's impatience (again saving - share holder value) -- some icons massage - -------------------------------------------------------------------- -Fri Aug 19 21:03:12 CEST 2005 - coolo@suse.de - -- update to 3.4 branch -- trying to fix floppy support - -------------------------------------------------------------------- -Thu Aug 18 14:03:25 CEST 2005 - coolo@suse.de - -- kdm sets config variable for xauth (#98627) - -------------------------------------------------------------------- -Tue Aug 16 10:28:44 CEST 2005 - coolo@suse.de - -- let kdm search in the global path even without SUSE theming - -------------------------------------------------------------------- -Mon Aug 15 10:36:49 CEST 2005 - coolo@suse.de - -- update for kdm's not themed user list (#95862) - -------------------------------------------------------------------- -Fri Aug 12 18:34:57 CEST 2005 - dmueller@suse.de - -- add dependency on xorg-x11 (bug #81848) - -------------------------------------------------------------------- -Thu Aug 11 16:39:47 CEST 2005 - llunak@suse.cz - -- Fix the k-menu search patch. - -------------------------------------------------------------------- -Thu Aug 11 12:26:51 CEST 2005 - werner@suse.de - -- Add /home to the nfs check of earlykdm (bug #104052) - -------------------------------------------------------------------- -Wed Aug 10 21:06:50 CEST 2005 - coolo@suse.de - -- update for the media slave (#102564) - -------------------------------------------------------------------- -Tue Aug 9 16:12:27 CEST 2005 - llunak@suse.cz - -- Don't show flags only in the language control module, - otherwise enable them again. - -------------------------------------------------------------------- -Fri Aug 5 11:44:44 CEST 2005 - coolo@suse.de - -- fix kdm to follow the aspect ratio of logos and dots -- some proofreadings - -------------------------------------------------------------------- -Wed Jul 27 11:09:50 CEST 2005 - coolo@suse.de - -- redone kdm patches - -------------------------------------------------------------------- -Tue Jul 26 13:13:09 CEST 2005 - coolo@suse.de - -- new patch for new powersave API - -------------------------------------------------------------------- -Fri Jul 22 14:24:23 CEST 2005 - coolo@suse.de - -- update to version 3.4.2 - -------------------------------------------------------------------- -Tue Jul 19 17:28:14 CEST 2005 - coolo@suse.de - -- Use double-buffered visual also for the screensaver kcm module - (#96605) - -------------------------------------------------------------------- -Sat Jul 16 13:55:53 CEST 2005 - dmueller@suse.de - -- fix typo in -fpie patch - -------------------------------------------------------------------- -Fri Jul 15 14:12:39 CEST 2005 - dmueller@suse.de - -- compile kcheckpass with -fPIE/pie for SL > 9.3 -- compile kdesud with -fpie/pie as well. - -------------------------------------------------------------------- -Wed Jul 6 02:50:35 CEST 2005 - dmueller@suse.de - -- add buffer overflow fix for genkdmconf - -------------------------------------------------------------------- -Fri Jun 24 16:22:46 CEST 2005 - coolo@suse.de - -- fix GL xscreensavers - -------------------------------------------------------------------- -Tue Jun 14 09:38:38 CEST 2005 - coolo@suse.de - -- fix build - -------------------------------------------------------------------- -Mon Jun 13 16:40:15 CEST 2005 - coolo@suse.de - -- another update for kdm - -------------------------------------------------------------------- -Tue Jun 7 14:42:12 CEST 2005 - coolo@suse.de - -- update to 3.4 branch, kdm to 3.5 branch -- add my chances to kdm for more advanced user list - -------------------------------------------------------------------- -Mon Jun 6 10:51:03 CEST 2005 - schwab@suse.de - -- Fix completely stupid and embarrassing CD polling code. - -------------------------------------------------------------------- -Thu Jun 2 11:18:34 CEST 2005 - adrian@suse.de - -- apply k-menu search patch from Fred Schaettgen for post 9.3 - -------------------------------------------------------------------- -Tue May 24 14:09:29 CEST 2005 - adrian@suse.de - -- update to version 3.4.1 - -------------------------------------------------------------------- -Mon May 23 11:22:11 CEST 2005 - adrian@suse.de - -- remove flag images for political reasons (#72452) - -------------------------------------------------------------------- -Tue May 17 11:39:40 CEST 2005 - adrian@suse.de - -- remove dummy TESTME enviroment variable - -------------------------------------------------------------------- -Thu Apr 21 14:30:37 CEST 2005 - adrian@suse.de - -- apply patch with experimental HAL 0.5 support from cvs HEAD - -------------------------------------------------------------------- -Thu Apr 14 17:17:06 CEST 2005 - sbrabec@suse.cz - -- Added audiofile-devel to neededforbuild. - -------------------------------------------------------------------- -Wed Apr 13 12:55:17 CEST 2005 - adrian@suse.de - -- update to current 3_4_BRANCH - * contains konqueror crash fix, when compiled with gcc 4 - -------------------------------------------------------------------- -Mon Apr 4 14:05:15 CEST 2005 - adrian@suse.de - -- do not reload kdm in logrotate (#75700) - -------------------------------------------------------------------- -Mon Apr 4 13:58:12 CEST 2005 - adrian@suse.de - -- fix build with gcc 4 - -------------------------------------------------------------------- -Fri Apr 1 15:14:47 CEST 2005 - adrian@suse.de - -- let libkonq use kdemm framework instead of arts for post 9.3 - -------------------------------------------------------------------- -Sun Mar 27 00:51:17 CET 2005 - schwab@suse.de - -- Fix crash in kwin. - -------------------------------------------------------------------- -Wed Mar 23 15:08:59 CET 2005 - coolo@suse.de - -- fix typo (#74357) - -------------------------------------------------------------------- -Tue Mar 22 18:40:00 CET 2005 - adrian@suse.de - -- avoid double entries from non-visible services in konqueror menu - -------------------------------------------------------------------- -Tue Mar 22 17:22:31 CET 2005 - adrian@suse.de - -- fix kicker layout, after adding items (#71831, by Waldo) - -------------------------------------------------------------------- -Tue Mar 22 15:18:13 CET 2005 - adrian@suse.de - -- create .kde and .kde/share with 0700 permissions again -- hide umount option in media slave for subfs systems - -------------------------------------------------------------------- -Mon Mar 21 17:19:42 CET 2005 - adrian@suse.de - -- move old kdmrc configurations away to avoid problems on - login time (#74072) - -------------------------------------------------------------------- -Sat Mar 19 13:52:49 CET 2005 - adrian@suse.de - -- hide menu entries below gnome, since gnome does require KDE - installed currently (#73539) -- move kthememgr icon to main package (#67133) - -------------------------------------------------------------------- -Fri Mar 18 15:09:02 CET 2005 - adrian@suse.de - -- make ksplashx configurable (by Lubos) - -------------------------------------------------------------------- -Wed Mar 16 21:19:42 CET 2005 - adrian@suse.de - -- fix redirection to kio_ipod - -------------------------------------------------------------------- -Wed Mar 16 08:53:11 CET 2005 - adrian@suse.de - -- fix OnlyShowIn typo in kcontrol.desktop (#72029) -- nsplugin fixes from BRANCH -- check for remote autologin users in earlykdm - -------------------------------------------------------------------- -Tue Mar 15 13:32:14 CET 2005 - coolo@suse.de - -- installing dummy flag for tw to apply to china's import - restrictions (#72503 #72452) - -------------------------------------------------------------------- -Mon Mar 14 09:56:27 CET 2005 - adrian@suse.de - -- let klipper ignore selections in firefox (#72352, by Lubos) -- 3_4_BRANCH update - * sftp protocol fix for non latin1 chars -- change earlykdm check for kbd startup (by jw) -- show kcontrol only within KDE -- disable gestures by default, they get enabled again when - kdeaccessibility3 get installed -- earlykdm does wait for resmgr - -------------------------------------------------------------------- -Thu Mar 10 20:38:41 CET 2005 - coolo@suse.de - -- handle ksplashx in kcontrol - -------------------------------------------------------------------- -Wed Mar 9 10:21:51 CET 2005 - adrian@suse.de - -- fix khelpcenter search (#66466 by Cornelius) -- disable firewire kcm module -- use current BRANCH for kwin - -------------------------------------------------------------------- -Tue Mar 8 14:29:41 CET 2005 - adrian@suse.de - -- fix gimp 2.0 icon pixmap name -- fix kcmfontinst issue (waldo, #66858) -- point the user to a possible configured firewall, if kio_smb - does fail - -------------------------------------------------------------------- -Tue Mar 8 10:16:52 CET 2005 - adrian@suse.de - -- add warning about firewall, if no smb shares got found. - -------------------------------------------------------------------- -Mon Mar 7 10:22:21 CET 2005 - coolo@suse.de - -- fix kdm auth (3_4_BRANCH) -- some kdm accessibility fixes -- shutdown ssh-agent and gpg-agent on logout - -------------------------------------------------------------------- -Fri Mar 4 17:29:55 CET 2005 - adrian@suse.de - -- update to version 3.4 final -- fix kio_smb for password protected shares - -------------------------------------------------------------------- -Wed Mar 2 16:37:02 CET 2005 - adrian@suse.de - -- move Requires: kdelibs3_doc from kdelibs3 to kdebase3 - -------------------------------------------------------------------- -Tue Mar 1 10:37:07 CET 2005 - adrian@suse.de - -- change default style from kicker clock, as requested by Ken - -------------------------------------------------------------------- -Mon Feb 28 17:17:57 CET 2005 - coolo@suse.de - -- porting the admin patch to themed greeter -- fix ksysguardd - -------------------------------------------------------------------- -Mon Feb 28 14:13:37 CET 2005 - coolo@suse.de - -- fix the shutdown entry - -------------------------------------------------------------------- -Mon Feb 28 08:01:25 CET 2005 - adrian@suse.de - -- apply fixes from 3_4_BRANCH - * acroread netscape plugin resize fixes - * enable mdns kcontrol module - -------------------------------------------------------------------- -Sat Feb 26 12:18:23 CET 2005 - adrian@suse.de - -- update to 3.4.0 RC 1 - -------------------------------------------------------------------- -Wed Feb 23 15:03:20 CET 2005 - adrian@suse.de - -- move permissions to aaa_base for 9.3 (#66312) -- remove /usr/X11R6/bin/setXF86Config from permissions - -------------------------------------------------------------------- -Wed Feb 23 09:23:02 CET 2005 - adrian@suse.de - -- hide .hidden/.directory in Gnome - -------------------------------------------------------------------- -Tue Feb 22 09:47:57 CET 2005 - adrian@suse.de - -- add Firefox entry to klipper - -------------------------------------------------------------------- -Mon Feb 21 14:56:10 CET 2005 - adrian@suse.de - -- call update93 script, if needed/possible - -------------------------------------------------------------------- -Fri Feb 18 11:54:18 CET 2005 - adrian@suse.de - -- no System icon on the desktop by default anymore - -------------------------------------------------------------------- -Fri Feb 18 10:54:02 CET 2005 - adrian@suse.de - -- update to current cvs - -------------------------------------------------------------------- -Thu Feb 17 15:38:10 CET 2005 - coolo@suse.de - -- reconfigure the clock afer kdesu yast finished - -------------------------------------------------------------------- -Wed Feb 16 21:49:58 CET 2005 - schwab@suse.de - -- Fix splash configuration in startkde. - -------------------------------------------------------------------- -Wed Feb 16 18:40:24 CET 2005 - adrian@suse.de - -- use ipod:/ slave for /media/iPod in kio_media, if this slave - does exist - -------------------------------------------------------------------- -Wed Feb 16 15:46:23 CET 2005 - coolo@suse.de - -- fixing konsole fonts - -------------------------------------------------------------------- -Wed Feb 16 14:33:02 CET 2005 - adrian@suse.de - -- fix menu shorting - -------------------------------------------------------------------- -Mon Feb 14 17:47:37 CET 2005 - adrian@suse.de - -- update from CVS - -------------------------------------------------------------------- -Fri Feb 11 16:18:16 CET 2005 - adrian@suse.de - -- add split provides for session sub package - -------------------------------------------------------------------- -Fri Feb 11 12:54:37 CET 2005 - coolo@suse.de - -- split kde startup link into an extra package to asure people do - not log into incomplete KDE setups because of dependencies - -------------------------------------------------------------------- -Fri Feb 11 10:31:49 CET 2005 - adrian@suse.de - -- update from CVS - -------------------------------------------------------------------- -Thu Feb 10 18:19:08 CET 2005 - adrian@suse.de - -- konsole-use-xft-font patch got obsoleted - -------------------------------------------------------------------- -Thu Feb 10 11:11:08 CET 2005 - adrian@suse.de - -- do not package a static kdmrc anymore, but generate it with genkdmconf - -------------------------------------------------------------------- -Mon Feb 7 11:37:49 CET 2005 - adrian@suse.de - -- update to beta 2 - -------------------------------------------------------------------- -Mon Jan 31 15:24:11 CET 2005 - coolo@suse.de - -- removed tip that is not true on SUSE (#45352) - -------------------------------------------------------------------- -Sat Jan 29 10:36:45 CET 2005 - coolo@suse.de - -- updated the mach_blass patch to do some really fancy stuff - -------------------------------------------------------------------- -Fri Jan 28 15:49:58 CET 2005 - adrian@suse.de - -- update to current snapshot -- add option in kdm/logout dialog to call suspend (coolo) - -------------------------------------------------------------------- -Tue Jan 25 16:47:15 CET 2005 - adrian@suse.de - -- fix export of GTK2_RC_FILES - -------------------------------------------------------------------- -Mon Jan 24 17:22:31 CET 2005 - coolo@suse.de - -- update to current snapshot (new kdm) - -------------------------------------------------------------------- -Fri Jan 21 10:42:16 CET 2005 - adrian@suse.de - -- update to current snapshot -- enable HAL in media slave -- remove update dialog - -------------------------------------------------------------------- -Thu Jan 20 19:22:23 CET 2005 - coolo@suse.de - -- activate earlykdm per default - -------------------------------------------------------------------- -Sat Jan 15 20:54:11 CET 2005 - schwab@suse.de - -- Use <owner>:<group> in permissions file. - -------------------------------------------------------------------- -Thu Jan 13 09:50:09 CET 2005 - coolo@suse.de - -- updated to HEAD -- patched startkde to prefer ksplashx - -------------------------------------------------------------------- -Wed Jan 12 13:34:39 CET 2005 - coolo@suse.de - -- fix order in startkde.suse - -------------------------------------------------------------------- -Mon Jan 10 18:49:24 CET 2005 - coolo@suse.de - -- fix earlykdm init script to use correct return values -- make use of earlysyslog - -------------------------------------------------------------------- -Sun Jan 9 10:01:53 CET 2005 - adrian@suse.de - -- final 3.4 beta 1 - -------------------------------------------------------------------- -Tue Jan 4 16:36:40 CET 2005 - coolo@suse.de - -- update to 3.4 beta 1 (snapshot) -- some work on kdm - -------------------------------------------------------------------- -Fri Dec 17 13:52:19 CET 2004 - coolo@suse.de - -- fixing exec call - -------------------------------------------------------------------- -Wed Dec 15 16:28:14 CET 2004 - coolo@suse.de - -- simplifying script - -------------------------------------------------------------------- -Tue Dec 14 11:46:45 CET 2004 - coolo@suse.de - -- convert fileshareset to automake syntax -- adding early kdm boot script - -------------------------------------------------------------------- -Mon Dec 13 17:32:25 CET 2004 - coolo@suse.de - -- get rid of own copy of startkde and split into suse specific - startup resource and default changing diff - -------------------------------------------------------------------- -Wed Dec 8 13:26:42 CET 2004 - adrian@suse.de - -- update to official 3.4 alpha 1 - -------------------------------------------------------------------- -Fri Dec 3 15:34:28 CET 2004 - adrian@suse.de - -- apply 3_3_BRANCH patch to fix konsole crash - -------------------------------------------------------------------- -Tue Nov 30 09:55:55 CET 2004 - adrian@suse.de - -- run krootimage in background on startup - -------------------------------------------------------------------- -Mon Nov 29 22:52:54 CET 2004 - adrian@suse.de - -- update to version 3.3.2 - -------------------------------------------------------------------- -Tue Nov 23 16:14:32 CET 2004 - adrian@suse.de - -- fix build for older distributions -- clean up startkde script a bit (removing themeing of GTK1 applications) - -------------------------------------------------------------------- -Thu Nov 18 15:46:19 CET 2004 - adrian@suse.de - -- add missing %suse_update_desktop_file calls - -------------------------------------------------------------------- -Thu Nov 18 15:37:21 CET 2004 - ro@suse.de - -- use kerberos-devel-packages - -------------------------------------------------------------------- -Thu Nov 11 22:22:07 CET 2004 - adrian@suse.de - -- add $prefix/env support from KDE startkde script - -------------------------------------------------------------------- -Mon Oct 25 18:33:09 CEST 2004 - adrian@suse.de - -- fix file sharing visibility (#43056) - -------------------------------------------------------------------- -Wed Oct 20 11:26:20 CEST 2004 - uli@suse.de - -- fixed KDM on 64-bit BE systems (bug #47202) - -------------------------------------------------------------------- -Thu Oct 14 17:43:40 CEST 2004 - adrian@suse.de - -- remove kdm-codec patch, it is not needed with the new xdm - script anymore and has a bad effect for chinese people - -------------------------------------------------------------------- -Tue Oct 12 13:11:34 CEST 2004 - adrian@suse.de - -- update to version 3.3.1 - -------------------------------------------------------------------- -Thu Oct 7 13:28:57 CEST 2004 - adrian@suse.de - -- fix file conflict between kdebase3 and kdebase3-extra - -------------------------------------------------------------------- -Tue Oct 5 17:21:05 CEST 2004 - adrian@suse.de - -- update to complete polish translations - -------------------------------------------------------------------- -Tue Oct 5 16:49:00 CEST 2004 - coolo@suse.de - -- updated translations - -------------------------------------------------------------------- -Tue Oct 5 13:31:36 CEST 2004 - adrian@suse.de - -- avoid error message on adding a desktop icon on first login. - (#46713) - -------------------------------------------------------------------- -Mon Oct 4 18:16:31 CEST 2004 - adrian@suse.de - -- fix for view gnome help pages with khelpcenter via help:$application - (by clahey, #45480) - -------------------------------------------------------------------- -Mon Oct 4 14:58:59 CEST 2004 - coolo@suse.de - -- don't show a trans slider by default (#46492) - -------------------------------------------------------------------- -Thu Sep 30 15:06:44 CEST 2004 - adrian@suse.de - -- workaround for a xterm size bug (by Lubos, #46153) -- workaround a problem with acrobat reader plugin on 64bit system - (by coolo, #45375) -- fix kstart behavior (by Lubos, #45919) - -------------------------------------------------------------------- -Wed Sep 29 10:18:10 CEST 2004 - adrian@suse.de - -- hide second entry for printer management - -------------------------------------------------------------------- -Wed Sep 29 09:58:37 CEST 2004 - coolo@suse.de - -- hiding the clean button again - -------------------------------------------------------------------- -Tue Sep 28 17:58:40 CEST 2004 - adrian@suse.de - -- disable XInitThread() call again., it has to moved a little bit - deeper ... - -------------------------------------------------------------------- -Mon Sep 27 17:27:59 CEST 2004 - coolo@suse.de - -- merged kdm patches for KDE 3.3 - -------------------------------------------------------------------- -Sun Sep 26 13:32:31 CEST 2004 - adrian@suse.de - -- use current 3_3_BRANCH - * fixes a possible crash of konsole -- disable the composite extension of konsole again, it cause a hang (#46098) -- update kwin composite patch -- fix hanging kparts using threads (like kaffeine/xine) again - -------------------------------------------------------------------- -Wed Sep 22 10:22:48 CEST 2004 - adrian@suse.de - -- create desktop icons also for root user - -------------------------------------------------------------------- -Mon Sep 20 23:41:08 CEST 2004 - adrian@suse.de - -- update to current 3_3_BRANCH - * various kio_fish fixes - -------------------------------------------------------------------- -Mon Sep 20 17:56:56 CEST 2004 - adrian@suse.de - -- update to current 3_3_BRANCH - * includes fix for desktop icon positions with panel on the left - (#45437) - -------------------------------------------------------------------- -Wed Sep 15 15:14:40 CEST 2004 - adrian@suse.de - -- add hook to startkde to disable IPv6 depending on - /etc/sysconfig/windowmanager - -------------------------------------------------------------------- -Tue Sep 14 14:44:16 CEST 2004 - adrian@suse.de - -- update to current BRANCH -- enable composite support in konsole (patch from Lubos) - -------------------------------------------------------------------- -Sat Sep 11 16:40:09 CEST 2004 - adrian@suse.de - -- update to current 3_3_BRANCH -- remove mad from nfb - -------------------------------------------------------------------- -Sat Sep 4 10:56:25 CEST 2004 - coolo@suse.de - -- replaced 3_2_BRANCH with 3_3_BRANCH (including fix for parallel build) -- going for unsermake (parallel build + no bugs with installing icons) - -------------------------------------------------------------------- -Sat Aug 21 20:54:16 CEST 2004 - adrian@suse.de - -- remove shadow patch -- some menu item fixes -- khelpcenter gnome support by clahey - -------------------------------------------------------------------- -Mon Aug 16 15:32:44 CEST 2004 - adrian@suse.de - -- update to version 3.3.0 final - -------------------------------------------------------------------- -Sat Aug 14 19:21:49 CEST 2004 - schwab@suse.de - -- ksysguard: rate limit SLP rescan [#43820]. - -------------------------------------------------------------------- -Fri Aug 13 11:39:02 CEST 2004 - adrian@suse.de - -- package libkfontinst for 8.2 - -------------------------------------------------------------------- -Tue Aug 10 08:58:24 CEST 2004 - adrian@suse.de - -- update to version 3.3.0 RC2 - -------------------------------------------------------------------- -Tue Aug 3 08:06:21 CEST 2004 - adrian@suse.de - -- use kde-open, if it exists - -------------------------------------------------------------------- -Mon Jul 26 21:08:06 CEST 2004 - adrian@suse.de - -- run ksysguardd as daemon (#38861) - -------------------------------------------------------------------- -Tue Jul 20 15:22:47 CEST 2004 - adrian@suse.de - -- update to KDE 3.2.92 (3.3 beta 2) - -------------------------------------------------------------------- -Tue Jun 29 09:48:30 CEST 2004 - adrian@suse.de - -- fix some aliasing warnings - -------------------------------------------------------------------- -Mon Jun 28 11:18:47 CEST 2004 - adrian@suse.de - -- update to version 3.3 beta 1 - -------------------------------------------------------------------- -Wed Jun 9 11:41:26 CEST 2004 - adrian@suse.de - -- fix ksysguardd sig11 due to slp implementation - (using a reg file now) - -------------------------------------------------------------------- -Wed Jun 2 09:58:36 CEST 2004 - adrian@suse.de - -- fix double entries in kicker quick browser. - (found by Joerg Seymer) -- fix double packaging of some icons - -------------------------------------------------------------------- -Tue Jun 1 08:33:58 CEST 2004 - adrian@suse.de - -- update to version 3.2.3 - -------------------------------------------------------------------- -Fri Apr 16 15:49:17 CEST 2004 - adrian@suse.de - -- fix compile on 8.1 - -------------------------------------------------------------------- -Fri Apr 16 12:04:19 CEST 2004 - adrian@suse.de - -- fix build for 9.0-x86_64 - -------------------------------------------------------------------- -Thu Apr 15 08:50:02 CEST 2004 - adrian@suse.de - -- fix build for < 9.1 distributions - -------------------------------------------------------------------- -Wed Apr 14 11:16:13 CEST 2004 - adrian@suse.de - -- update to version 3.2.2 - -------------------------------------------------------------------- -Tue Apr 6 18:21:30 CEST 2004 - adrian@suse.de - -- do also export locale enviroment with kdesu (#38527) - -------------------------------------------------------------------- -Tue Apr 6 08:10:02 CEST 2004 - adrian@suse.de - -- remove debug infobox on drive eject (#38294) -- fix wrong highlighted colors in gtk applications (#36935) - -------------------------------------------------------------------- -Mon Apr 5 18:16:59 CEST 2004 - adrian@suse.de - -- get KCMYAST2_CALL through kdesu -- fix yast module loading also when kcontrol already runs as root - -------------------------------------------------------------------- -Mon Apr 5 08:54:30 CEST 2004 - adrian@suse.de - -- remove second devices button in sidebar -- do use drives:/ on > 9.0 in the main devices button in the sidebar -- fix broken icon entry for sidebar services button -- kdm starts WindowMaker with "windowmaker" #38319 - -------------------------------------------------------------------- -Sun Apr 4 21:23:36 CEST 2004 - coolo@suse.de - -- update to kicker CVS for critical bug fix (replacing two other - former patches) - -------------------------------------------------------------------- -Sat Apr 3 08:52:35 CEST 2004 - coolo@suse.de - -- remove pointer to lan:/ in sidebar (#38174) -- fixing yet another place where the wrong string was used - -------------------------------------------------------------------- -Thu Apr 1 17:58:13 CEST 2004 - adrian@suse.de - -- apply fix for non-editable menu entries in kmenuedit (Waldo) - -------------------------------------------------------------------- -Thu Apr 1 15:06:58 CEST 2004 - coolo@suse.de - -- adding fix for kicker to not increase menu size because of newer - Qt (KDE #78556) - -------------------------------------------------------------------- -Thu Apr 1 09:20:05 CEST 2004 - adrian@suse.de - -- better icon for fish:/ -- don't show "mount" menu items for > 9.0 (we have subfs) - -------------------------------------------------------------------- -Wed Mar 31 17:10:35 CEST 2004 - coolo@suse.de - -- adding switchuser translations -- don't give the warning in kdesktop_lock -- add an icon to the kdm menu so that it doesn't look ugly in - thinkeramik - -------------------------------------------------------------------- -Tue Mar 30 16:35:30 CEST 2004 - adrian@suse.de - -- remove random user list file -- remove help menu entry in kdesktop to not existing help pages -- Honour global defaults & kiosk restrictions in kcmstyle (Waldo) -- ksysguardd runlevel fixes (#37614) -- fix klipperrc patch -- don't wait for arts shutdown - -------------------------------------------------------------------- -Sun Mar 28 18:39:40 CEST 2004 - adrian@suse.de - -- fix eject via kio_drives (#37156) - -------------------------------------------------------------------- -Sat Mar 27 09:23:54 CET 2004 - adrian@suse.de - -- apply fix for kicker crash by Lubos (#36360) -- use current BRANCH for kdesktop/ - * kiosk, minicli fixes and translation updates -- fixes a problem with focus stealing prevention with klipper (Lubos) -- use current BRANCH from kwin/ - * fixes pop-up windows below main window (#36682) -- fix several icons in kcontrol - -------------------------------------------------------------------- -Fri Mar 26 13:36:08 CET 2004 - coolo@suse.de - -- fixing kdm layout on personal theme -- default to shutdown when auto logined (#36856) - -------------------------------------------------------------------- -Wed Mar 24 16:12:26 CET 2004 - coolo@suse.de - -- fixing konsole pasting (#34892) -- fixing window shadow - -------------------------------------------------------------------- -Wed Mar 24 15:30:21 CET 2004 - adrian@suse.de - -- export $KDESU_USER with kdesu session - -------------------------------------------------------------------- -Mon Mar 22 09:22:59 CET 2004 - adrian@suse.de - -- update to current 3_2_BRANCH - * kcminit fixes, qt apps are using the default KDE widget style now - * Alt F2 dialog layout fixes -- call 9.1 update script -- apply default-fonts.diff again - -------------------------------------------------------------------- -Sun Mar 21 16:54:58 CET 2004 - adrian@suse.de - -- fix kcontrol yast integration - -------------------------------------------------------------------- -Wed Mar 17 23:51:12 CET 2004 - adrian@suse.de - -- move krandrtray menu entry -- move some .desktop files to correct sub package - -------------------------------------------------------------------- -Wed Mar 17 20:49:31 CET 2004 - coolo@suse.de - -- fixing NFS URLs (#36032, #36275) - -------------------------------------------------------------------- -Tue Mar 16 14:37:38 CET 2004 - coolo@suse.de - -- increasing rudi's screen space for higher stock holder value - (#36065) - -------------------------------------------------------------------- -Mon Mar 15 16:02:26 CET 2004 - coolo@suse.de - -- updating branch diff for konsole fixes (mutt, vim, irssi) - -------------------------------------------------------------------- -Fri Mar 12 17:38:58 CET 2004 - coolo@suse.de - -- fixing file test - -------------------------------------------------------------------- -Thu Mar 11 22:08:45 CET 2004 - coolo@suse.de - -- fixing user switching - -------------------------------------------------------------------- -Thu Mar 11 10:25:26 CET 2004 - coolo@suse.de - -- replace Xservers with a symlink to the real file from XFree86 -- fixing kdm layout -- fixing konsole font - -------------------------------------------------------------------- -Wed Mar 10 16:43:58 CET 2004 - coolo@suse.de - -- adding switchuser for kdm user switch support -- removing untranslated shadow from popup -- artwork.diff update for services - -------------------------------------------------------------------- -Tue Mar 9 13:34:12 CET 2004 - coolo@suse.de - -- reworked admin mode patch -- adding patch by Lubos to enhance xcursor support -- updating to latest 3_2_BRANCH (including at least 3 #s) -- adding patch by Matz to reintroduce window shadows -- adding support for HideMenu=true in kdm (#35209) - -------------------------------------------------------------------- -Mon Mar 8 11:27:23 CET 2004 - adrian@suse.de - -- use original Home folder icon again - -------------------------------------------------------------------- -Sat Mar 6 22:17:57 CET 2004 - coolo@suse.de - -- fix build with gcc 2.95 - -------------------------------------------------------------------- -Sat Mar 6 15:08:02 CET 2004 - coolo@suse.de - -- huge cleanup in the patches -- update 3_2_BRANCH diff - -------------------------------------------------------------------- -Thu Mar 4 09:55:52 CET 2004 - adrian@suse.de - -- use gtk-qt-engine only as fallback -- fix gnome startup call for kdm - -------------------------------------------------------------------- -Wed Mar 3 19:16:35 CET 2004 - coolo@suse.de - -- give us back the kdm user pictures - -------------------------------------------------------------------- -Mon Mar 1 10:34:30 CET 2004 - coolo@suse.de - -- update to version 3.2.1 - -------------------------------------------------------------------- -Fri Feb 27 19:34:12 CET 2004 - coolo@suse.de - -- adding font overwrites (again) to startkde (#30760) - -------------------------------------------------------------------- -Fri Feb 27 10:05:20 CET 2004 - coolo@suse.de - -- updated 3_2_BRANCH for kdesktop wallpaper fix (taking out - experimental patches do no longer apply because of this) -- install xdm-np pam service to fix autologin (#34674) -- fixing warnings build dislikes - -------------------------------------------------------------------- -Thu Feb 26 20:25:39 CET 2004 - adrian@suse.de - -- add kwin shadow patch again (prepared by Matz) - -------------------------------------------------------------------- -Tue Feb 24 17:51:26 CET 2004 - coolo@suse.de - -- removing kdm-xconsole - went upstream -- adding mach_blass for getting feedback -- adding kiosk patch by Waldo -- adding user switch patch for kdm - -------------------------------------------------------------------- -Sat Feb 21 17:02:14 CET 2004 - adrian@suse.de - -- one KControl menu entry is enough - -------------------------------------------------------------------- -Wed Feb 18 10:25:06 CET 2004 - coolo@suse.de - -- updating two patches -- updating mp3-info (#33151) -- removed ssh protocol -- disable kwin shadow patch again (too broken atm) - -------------------------------------------------------------------- -Tue Feb 17 15:15:54 CET 2004 - coolo@suse.de - -- fixing kdesktop icon aligning again - -------------------------------------------------------------------- -Mon Feb 16 17:46:23 CET 2004 - adrian@suse.de - -- update to current 3_2_BRANCH - * includes the kicker clock flickering fix - -------------------------------------------------------------------- -Wed Feb 11 12:03:20 CET 2004 - adrian@suse.de - -- update to current 3_2_BRANCH -- justify kcm modules in kdesktop configure dialog -- use gtk-qt-engine by default for Gtk2 apps, if installed - -------------------------------------------------------------------- -Tue Feb 10 10:13:12 CET 2004 - adrian@suse.de - -- update to current 3_2_BRANCH -- enable firewire support -- build kdm backend and pam code with -fno-strict-aliasing - -------------------------------------------------------------------- -Sun Feb 8 21:30:49 CET 2004 - adrian@suse.de - -- update to current 3_2_BRANCH -- add current kwin shadow patch - -------------------------------------------------------------------- -Mon Feb 2 10:00:36 CET 2004 - adrian@suse.de - -- fix build for older distributions -- add kickerrc config for < 9.1, because deinstallation of - kdebase3-SuSE will mess up the kicker otherwise - -------------------------------------------------------------------- -Wed Jan 28 13:48:10 CET 2004 - adrian@suse.de - -- fish can also used view ssh:/ now - -------------------------------------------------------------------- -Wed Jan 28 11:03:41 CET 2004 - adrian@suse.de - -- fix file list - -------------------------------------------------------------------- -Tue Jan 27 21:42:10 CET 2004 - adrian@suse.de - -- update to version 3.2.0 final -- cleanup and fix some more patches from 3.1 - -------------------------------------------------------------------- -Mon Jan 19 10:43:08 CET 2004 - adrian@suse.de - -- add logrotate config for kdm - -------------------------------------------------------------------- -Sun Jan 18 21:43:52 CET 2004 - adrian@suse.de - -- update to version 3.1.95 ( KDE 3.2 RC1 ) - -------------------------------------------------------------------- -Fri Jan 16 17:12:13 CET 2004 - adrian@suse.de - -- implement short menus again -- make icon size of KDE menu configurable - -------------------------------------------------------------------- -Fri Jan 16 12:56:42 CET 2004 - kukuk@suse.de - -- Add pam-devel to neededforbuild - -------------------------------------------------------------------- -Tue Jan 13 13:40:32 CET 2004 - adrian@suse.de - -- update to snapshot 2004011309 -- rename kdebase3-nsplugin to kdebase3-nsplugin64 for 64bit archs - -------------------------------------------------------------------- -Tue Dec 30 15:08:10 CET 2003 - adrian@suse.de - -- update to snapshot 2003123011 - -------------------------------------------------------------------- -Wed Dec 17 17:54:02 CET 2003 - adrian@suse.de - -- update to snapshot 2003121718 -- fix kdesktop sig11 due to extensions - -------------------------------------------------------------------- -Mon Dec 15 15:33:18 CET 2003 - adrian@suse.de - -- update to snapshot 2003121511 -- apply needed kdesktop extensions again - -------------------------------------------------------------------- -Tue Dec 2 11:38:53 CET 2003 - adrian@suse.de - -- use 3.1.94, second try tar ball - -------------------------------------------------------------------- -Mon Dec 1 22:00:31 CET 2003 - adrian@suse.de - -- update to 3.1.94 ( KDE 3.2 beta 2 ) - -------------------------------------------------------------------- -Thu Nov 13 23:14:30 CET 2003 - adrian@suse.de - -- update to new snapshot from 2003102409 -- fix kwin startup -- add SLP support for ksysguard - -------------------------------------------------------------------- -Wed Oct 29 09:59:01 CET 2003 - adrian@suse.de - -- update to KDE 3.2 beta1 - -------------------------------------------------------------------- -Tue Oct 21 09:34:51 CEST 2003 - adrian@suse.de - -- update to snapshot 2003102008 - -------------------------------------------------------------------- -Sun Oct 5 14:31:09 CEST 2003 - adrian@suse.de - -- update to snapshot 2003100510 - -------------------------------------------------------------------- -Mon Sep 29 15:59:09 CEST 2003 - adrian@suse.de - -- update to version 1.1.92 (KDE 3.2 alpha 2) - -------------------------------------------------------------------- -Sat Sep 20 16:29:17 CEST 2003 - adrian@suse.de - -- fix from Waldo, to update kicker menu, when sycoca has changed - -------------------------------------------------------------------- -Fri Sep 19 12:37:43 CEST 2003 - adrian@suse.de - -- Add Screensaver Categories, needed for Gnome (#31282) - -------------------------------------------------------------------- -Fri Sep 19 09:37:42 CEST 2003 - adrian@suse.de - -- redo nsplugin silence patch, the output is needed for the GUI - progress bar - -------------------------------------------------------------------- -Thu Sep 18 17:52:36 CEST 2003 - adrian@suse.de - -- fix a handling of shortet menu names, broken encoding for - non-latin1 (#31248) - -------------------------------------------------------------------- -Thu Sep 18 10:56:56 CEST 2003 - adrian@suse.de - -- update konsole_compose fix from Waldo (fixes issues with screen) -- silence during nspluginscan - -------------------------------------------------------------------- -Wed Sep 17 09:18:01 CEST 2003 - adrian@suse.de - -- disable kthemegr completely. It can mess up the complete setup - (#30727) -- fix touch of update90 file - -------------------------------------------------------------------- -Tue Sep 16 17:16:08 CEST 2003 - adrian@suse.de - -- apply fix from Lubos for the Double Focus problem (#29467) - -------------------------------------------------------------------- -Tue Sep 16 10:34:13 CEST 2003 - adrian@suse.de - -- higher nsplugin service priority - (pdf's are shown in embedded acroread) -- use correct background setup during autologin - -------------------------------------------------------------------- -Mon Sep 15 21:48:32 CEST 2003 - coolo@suse.de - -- providing function for the suseplugger - -------------------------------------------------------------------- -Mon Sep 15 17:30:13 CEST 2003 - coolo@suse.de - -- have pkgconfig in the neededforbuilds to get fontconfig - support (that you get if you don't calculate build dependencies - automatically) - -------------------------------------------------------------------- -Mon Sep 15 14:38:37 CEST 2003 - adrian@suse.de - -- fix typo in startkde - -------------------------------------------------------------------- -Mon Sep 15 11:33:03 CEST 2003 - adrian@suse.de - -- apply patch from coolo to fix mouse cursor settings from kcontrol - (#30760) -- clean up obsolete/double patch -- apply fix from Waldo for the kicker update script (#30767) - -------------------------------------------------------------------- -Sun Sep 14 23:33:54 CEST 2003 - coolo@suse.de - -- fixes for suseplugger placement - -------------------------------------------------------------------- -Sat Sep 13 13:56:31 CEST 2003 - adrian@suse.de - -- apply fix from Waldo for editing icon entries in kicker (#30606) -- fix Unimportant entries finaly. -- update suse_default_move.diff patch to new verions from coolo - * fixes icon placement finally, hopefully -- implement second level menu sorting - -------------------------------------------------------------------- -Fri Sep 12 15:55:00 CEST 2003 - coolo@suse.de - -- fixing the aligning of the default icons - -------------------------------------------------------------------- -Fri Sep 12 11:33:14 CEST 2003 - coolo@suse.de - -- set background even on autologin users - -------------------------------------------------------------------- -Thu Sep 11 08:33:28 CEST 2003 - adrian@suse.de - -- redone 3.1.4 tar ball, whith kdesu enviroment fix -- apply branch patch with kdesktop rename fix -- add new console font from mfabian with an EUR char -- fix copy quoting of kdesktop addIcon -- export $STYLE to get a matching look in xmms -- new version for krdb-gtk2 patch from coolo -- fix from Waldo to show UTF-8 in konsole correct (#25146) -- prepare startkde script to call the 9.0 update script - -------------------------------------------------------------------- -Wed Sep 10 13:23:15 CEST 2003 - coolo@suse.de - -- check a specific dcop interface (kdesktop). that's less likely to - stay stale (#30148) - -------------------------------------------------------------------- -Tue Sep 9 15:58:30 CEST 2003 - coolo@suse.de - -- remove unused patch7 -- add patch to force xft2 usage on qt3 in konsole (#29164) - -------------------------------------------------------------------- -Tue Sep 9 01:17:23 CEST 2003 - adrian@suse.de - -- do even apply coolos patch -- further kcontrol yast patch. we need only one line in the - desktop file now and can keep a usual Exec line - -------------------------------------------------------------------- -Tue Sep 9 00:13:49 CEST 2003 - adrian@suse.de - -- update to version 3.1.4 -- some missing bits, to be able to load YaST embedded into kcontrol - again - -------------------------------------------------------------------- -Mon Sep 8 20:23:34 CEST 2003 - coolo@suse.de - -- update smb code in CVS to include more detailed error message -- add debug code as found a problem in our windows network which - might hit more users - -------------------------------------------------------------------- -Mon Sep 8 15:22:33 CEST 2003 - coolo@suse.de - -- fixing kdesktop to read .directory on new files -- updating short-menus diff from adrian - -------------------------------------------------------------------- -Fri Sep 5 13:52:05 CEST 2003 - adrian@suse.de - -- honor also X-SuSE-Unimportant entries during menu shorting -- new kmenuedit from Waldo, fixing creation of new entries -- add gtk2-set-enviroment patch from Lubos to fix encoding problems -- handle special flags for folder (no shorting and name usage) -- new handling of GTK theme, made by Stanislav Brabec -- kfontinst: reload instead of restart the xfs -- kfontinst: call also SuSEconfig --module fonts -- make KControl visible in main menu - -------------------------------------------------------------------- -Thu Sep 4 16:42:43 CEST 2003 - adrian@suse.de - -- remove clock kcm module. it breaks the system and we have a - YaST modul for this purpose. -- new patch from Waldo to fix kcontrol yast module menu -- stop/restart ksysguardd on update/remove - -------------------------------------------------------------------- -Thu Sep 4 14:12:19 CEST 2003 - adrian@suse.de - -- some desktop Categories tuning - -------------------------------------------------------------------- -Tue Sep 2 13:16:53 CEST 2003 - adrian@suse.de - -- kwrite becomes unimportant - -------------------------------------------------------------------- -Mon Sep 1 14:48:24 CEST 2003 - adrian@suse.de - -- update to current 3_1_BRANCH - * contains kwin resize fix for xmms from Lubos -- implement X-SuSE-Unimportant support -- apply crash fix for khelpcenter from Cornelius -- coolo: add check in startkde for already running kde - -------------------------------------------------------------------- -Sun Aug 31 16:58:23 CEST 2003 - adrian@suse.de - -- implement menu auto shorting in kicker - -------------------------------------------------------------------- -Sat Aug 30 21:20:22 CEST 2003 - adrian@suse.de - -- fix kdm startup error -- disable password field for no-password-for-all-users mode - -------------------------------------------------------------------- -Sat Aug 30 14:33:43 CEST 2003 - adrian@suse.de - -- update xdg patch to new version from Waldo. - -------------------------------------------------------------------- -Fri Aug 29 17:26:55 CEST 2003 - adrian@suse.de - -- update to current 3_1_BRANCH for kdm security fixes - -------------------------------------------------------------------- -Wed Aug 27 08:20:45 CEST 2003 - adrian@suse.de - -- fixing smb:/ protocol by using libsmbclient from samba 3 -- hide "Open In Terminal" entries in kicker by default - -------------------------------------------------------------------- -Tue Aug 26 13:58:02 CEST 2003 - adrian@suse.de - -- implement the kdm admin mode - -------------------------------------------------------------------- -Tue Aug 26 08:19:20 CEST 2003 - adrian@suse.de - -- apply fix from Lubos for maximised windows of GTK apps - -------------------------------------------------------------------- -Sun Aug 24 19:44:55 CEST 2003 - adrian@suse.de - -- let kthumbnailcreator use ksvgiconengine - -------------------------------------------------------------------- -Sat Aug 23 22:35:16 CEST 2003 - adrian@suse.de - -- update to 3_1_BRANCH - -------------------------------------------------------------------- -Wed Aug 20 18:30:27 CEST 2003 - adrian@suse.de - -- apply fix from Lubos for khotkey support with XDG - -------------------------------------------------------------------- -Sat Aug 16 20:23:35 CEST 2003 - adrian@suse.de - -- rpm -V fixes - -------------------------------------------------------------------- -Fri Aug 15 10:25:34 CEST 2003 - adrian@suse.de - -- set Categories for KControl via patch - -------------------------------------------------------------------- -Thu Aug 14 16:17:44 CEST 2003 - adrian@suse.de - -- add %ghost /var/run/xdmctl - -------------------------------------------------------------------- -Wed Aug 13 15:40:04 CEST 2003 - adrian@suse.de - -- use new places of gtkrc-$STYLE files -- use current 3_1_BRANCH - -------------------------------------------------------------------- -Tue Aug 12 13:18:38 CEST 2003 - adrian@suse.de - -- justify Categories -- new XDG patch from Waldo - -------------------------------------------------------------------- -Thu Aug 7 17:09:02 CEST 2003 - adrian@suse.de - -- update XDG patch - -------------------------------------------------------------------- -Thu Aug 7 14:43:29 CEST 2003 - adrian@suse.de - -- new code from Waldo: kmenuedit can handle XDG now -- require smbclnt, if samba 3 is not used - -------------------------------------------------------------------- -Sun Aug 3 15:11:32 CEST 2003 - adrian@suse.de - -- fix build for 8.2 - -------------------------------------------------------------------- -Fri Aug 1 19:49:47 CEST 2003 - adrian@suse.de - -- disable shadow text at all -- add patch to support kwin shadow windows instead - -------------------------------------------------------------------- -Tue Jul 29 15:59:21 CEST 2003 - adrian@suse.de - -- disable shadow text for 8.2 -- fix build for 8.2 (now it really works everywhere for sure, I hope) - -------------------------------------------------------------------- -Tue Jul 29 10:36:18 CEST 2003 - adrian@suse.de - -- fix build for < 8.0 - -------------------------------------------------------------------- -Mon Jul 28 14:06:58 CEST 2003 - cschum@suse.de - -- Updated KHelpcenter tarball. Fixes bug #24374. - -------------------------------------------------------------------- -Fri Jul 25 11:36:34 CEST 2003 - cschum@suse.de - -- Added KHelpcenter from CVS HEAD. - -------------------------------------------------------------------- -Fri Jul 25 09:24:51 CEST 2003 - adrian@suse.de - -- fix build for < 8.1 -- add Categories - -------------------------------------------------------------------- -Sat Jul 19 22:29:07 CEST 2003 - adrian@suse.de - -- add XDG patch from Waldo -- add backported patch from 3.2 for shadow text on icons. - kcontrol changes are not included for i18n compliance - (written by Laur Ivan <laurivan@eircom.net>) - -------------------------------------------------------------------- -Wed Jul 16 15:07:55 CEST 2003 - adrian@suse.de - -- update to version 3.1.3 - -------------------------------------------------------------------- -Wed Jun 25 09:13:07 CEST 2003 - coolo@suse.de - -- updating 3_1_BRANCH diff (heading 3.1.3) - -------------------------------------------------------------------- -Mon Jun 23 16:22:33 CEST 2003 - schwab@suse.de - -- Remove trailing spaces from Xpdf.ad. - -------------------------------------------------------------------- -Fri Jun 13 11:01:30 CEST 2003 - coolo@suse.de - -- package directories - -------------------------------------------------------------------- -Fri May 30 15:20:18 CEST 2003 - adrian@suse.de - -- fix build on non-fast-malloc architectures - -------------------------------------------------------------------- -Mon May 26 15:45:14 CEST 2003 - adrian@suse.de - -- use $INSTALL_TARGET -- all config files are %config(noreplace) now -- startkde.lib is obsolete in future - -------------------------------------------------------------------- -Mon May 26 11:14:12 CEST 2003 - adrian@suse.de - -- do not save original startkde (fix build for rpm4) - -------------------------------------------------------------------- -Wed May 21 14:01:41 CEST 2003 - adrian@suse.de - -- add fix from Lubos to start preloaded Konq on correct screen -- drop patch which ignores global malloc - -------------------------------------------------------------------- -Thu May 15 07:49:15 CEST 2003 - adrian@suse.de - -- 3.1.2, take four - -------------------------------------------------------------------- -Mon May 12 18:08:54 CEST 2003 - adrian@suse.de - -- update to 3.1.2, take three -- use $HOME/.fonts path also via XLFD - -------------------------------------------------------------------- -Thu May 8 16:43:08 CEST 2003 - ro@suse.de - -- fileshareset2: include errno in fssConfigNfs.cpp - -------------------------------------------------------------------- -Thu May 8 09:33:32 CEST 2003 - adrian@suse.de - -- update to 3.1.2 - * cleanup patches - -------------------------------------------------------------------- -Fri Apr 18 16:26:25 CEST 2003 - adrian@suse.de - -- merge 8.2 and 8.3 stream - -------------------------------------------------------------------- -Wed Apr 9 17:34:22 CEST 2003 - adrian@suse.de - -- security fix, call ghostscript in safe mode. -- replace fileshareset utility with a working one - (written by Uwe Gansert, reviewed by security-team) - Only samba exports for now, nfs is disabled for security reasons -- add global gtkrc to enviroment variable to fix used encoding -- fix kdm behaviour after wrong password (#25727) - -------------------------------------------------------------------- -Sun Mar 16 19:22:16 CET 2003 - adrian@suse.de - -- fix console font size also in konsole code -- workaround a qt bug to find a fixed font (#25430) - (do not recalculate the pixelSize via dpi) - -------------------------------------------------------------------- -Sat Mar 15 18:58:45 CET 2003 - adrian@suse.de - -- xmms can't handle .m3u files in a stream -- ensure that $kdehome is set during startkde run -- remove xset font calls in startkde - (reduces warnings during KDE startup and is not needed with fontconfig) - -------------------------------------------------------------------- -Fri Mar 14 10:00:16 CET 2003 - adrian@suse.de - -- fix from Lubos to disable kdesu parameters, when running in - kcmshell already (first part to fix #25230) -- remove senseless permissions file (we don't have a suid perl) - -------------------------------------------------------------------- -Wed Mar 12 18:00:19 CET 2003 - adrian@suse.de - -- fix the last place of hardcoded kdmrc path -- fix build for < 8.2 - -------------------------------------------------------------------- -Wed Mar 12 17:08:09 CET 2003 - adrian@suse.de - -- add sensors support to ksysguard again -- apply fix from Lubos for kdm mouse cursor - -------------------------------------------------------------------- -Wed Mar 12 14:25:58 CET 2003 - adrian@suse.de - -- fix kxkb extension for XFree 4.3 -- fix nsplugin scan init - -------------------------------------------------------------------- -Tue Mar 11 11:26:06 CET 2003 - adrian@suse.de - -- fix kdm layout/position -- disable unneeded Menu and Erase button -- use standard button ordering in kdm -- fix encoding usage for user names -- add fix from Lubos for Konqueror session management -- add fix from Coolo for pam-error-message handling in kdm -- add PreReq: aaa_base in kdebase3-ksysguardd to be able to update - from 7.3 -- add fix from Cornelius to let khelpcenter use the correct language -- fallback gtkrc style is keramik/geramik - -------------------------------------------------------------------- -Sun Mar 9 00:30:15 CET 2003 - adrian@suse.de - -- apply kdm patches again for console -- use better icon for "new session" -- use console8x16 font from HEAD to fix freetype2 issues -- check only for lowercase gtkrc-$STYLE's -- fix remote .pls file handling with xmms -- run update script, if present - -------------------------------------------------------------------- -Tue Mar 4 18:33:10 CET 2003 - adrian@suse.de - -- add missing Provides/Obsoletes kdialog -- use a better icon for Home directory items - -------------------------------------------------------------------- -Sat Mar 1 23:23:42 CET 2003 - adrian@suse.de - -- update to version 3.1.1 - * kwin fixes: don't show toplevel menus for non-active windows. - * konq fixes: don't repost data on reload, if url changes - sidebar crash fix - * nsplugin viewer: fixes and NPN_PostURL* support. -- update kcmrandr and patches from Lubos - * restoring resolution by kcminit works now -- Konqueror preloading fixes from Lubos - * creating KonqMainWindow on --preload -- disable klipper actions of not installed apps -- add /usr/lib{,64}/browser-plugins/ path to scan list -- fix build on non-ia32/x86_64 -- drop obsoletes patches - -------------------------------------------------------------------- -Fri Feb 28 00:31:38 CET 2003 - adrian@suse.de - -- update 3_1_BRANCH patch -- update preloaded konq patch from Lubos -- drop Obsoletes kdebase again -- fix quickbrowser patch to show entries only once - -------------------------------------------------------------------- -Wed Feb 26 12:14:15 CET 2003 - adrian@suse.de - -- update 3_1_BRANCH patch -- follow susewatcher directory change -- Obsoletes kdebase - -------------------------------------------------------------------- -Mon Feb 24 11:27:16 CET 2003 - adrian@suse.de - -- update 3_1_BRANCH patch -- fix kdmrc path in kcm_kdm -- use yast for setting the clock in kicker/applet/clock - -------------------------------------------------------------------- -Sat Feb 22 14:37:31 CET 2003 - kukuk@suse.de - -- If we provide kdebase, we should also obsolete the old one. - -------------------------------------------------------------------- -Thu Feb 20 11:49:36 CET 2003 - cschum@suse.de - -- Fixed check, if khelpcenter index builder needs root permissions. - -------------------------------------------------------------------- -Wed Feb 19 13:19:57 CET 2003 - adrian@suse.de - -- fix typo in Provides for kdm, fixes update from kde 2 - -------------------------------------------------------------------- -Tue Feb 18 14:05:31 CET 2003 - adrian@suse.de - -- fix build for < 8.2 - -------------------------------------------------------------------- -Tue Feb 18 11:58:45 CET 2003 - adrian@suse.de - -- add Provides kdebase3-konqueror - -------------------------------------------------------------------- -Mon Feb 17 14:16:08 CET 2003 - adrian@suse.de - -- use gtk[2]rc-$STYLE to be more flexible - -------------------------------------------------------------------- -Mon Feb 17 10:03:02 CET 2003 - adrian@suse.de - -- set enviroment to use special kde themings for gtk apps - -------------------------------------------------------------------- -Sun Feb 16 16:56:13 CET 2003 - adrian@suse.de - -- install kappfinder_install, fixes susewm build -- disable obsolete quick browser patch - -------------------------------------------------------------------- -Sun Feb 16 01:35:35 CET 2003 - adrian@suse.de - -- create susewatcher Desktop icon on the fly -- remove unneeded requires - -------------------------------------------------------------------- -Sat Feb 15 16:58:59 CET 2003 - adrian@suse.de - -- update 3_1_BRANCH patch -- fix qt/xrandr signal usage -- add konqueror preload patches from Lubos -- extend kdesktop addIcon api -- add additional Desktop path for kdesktop for susewatcher icons -- let kicker accept $HOME pathes - -------------------------------------------------------------------- -Tue Feb 11 01:30:10 CET 2003 - adrian@suse.de - -- let kdesktop use susewatcher directory -- add RandR tools - -------------------------------------------------------------------- -Fri Feb 7 13:28:53 CET 2003 - cschum@suse.de - -- new search index generation for khelpcenter which doesn't - necessarily need root permissions - -------------------------------------------------------------------- -Fri Jan 24 18:06:29 CET 2003 - adrian@suse.de - -- apply patches from Lubos to use XrandR -- add check for prelinked systems in startkde - -------------------------------------------------------------------- -Wed Jan 22 09:01:39 CET 2003 - adrian@suse.de - -- fix file list -- disable xsetroot in startkde - -------------------------------------------------------------------- -Fri Jan 17 14:50:13 CET 2003 - adrian@suse.de - -- use RC7-try2 tar ball - -------------------------------------------------------------------- -Thu Jan 16 16:29:09 CET 2003 - adrian@suse.de - -- update to RC7 -- merge kdebase3-konqueror into kdebase3 again -- do not link kdesysguardd against libkdefakes - -------------------------------------------------------------------- -Mon Jan 13 10:50:14 CET 2003 - adrian@suse.de - -- clean up #neededforbuild - -------------------------------------------------------------------- -Fri Jan 10 09:47:53 CET 2003 - coolo@suse.de - -- adding metadata to fillup -- use KDE_FAST_MALLOC only for distribution versions - < 8.2 (without metadata for them) - -------------------------------------------------------------------- -Wed Jan 8 17:16:41 CET 2003 - coolo@suse.de - -- using the real euro symbol instead of the subscript - (#21779) - -------------------------------------------------------------------- -Wed Jan 8 16:34:45 CET 2003 - coolo@suse.de - -- making cursor changes in kcontrol work (#21777) - -------------------------------------------------------------------- -Tue Jan 7 15:08:32 CET 2003 - adrian@suse.de - -- update to RC6 - -------------------------------------------------------------------- -Thu Dec 5 12:09:05 CET 2002 - adrian@suse.de - -- fix build - -------------------------------------------------------------------- -Tue Dec 3 16:45:23 CET 2002 - adrian@suse.de - -- apply kdesktop icon placement patches again. - -------------------------------------------------------------------- -Mon Dec 2 15:48:56 CET 2002 - adrian@suse.de - -- update startkde script to 3.1 - * fixes session handling - -------------------------------------------------------------------- -Sat Nov 30 21:49:13 CET 2002 - adrian@suse.de - -- new try of RC5 tar ball. BRANCH fixes are disabled again. - -------------------------------------------------------------------- -Fri Nov 29 14:45:59 CET 2002 - adrian@suse.de - -- revert kicker changes (compile failed with 2.95) - -------------------------------------------------------------------- -Thu Nov 28 16:07:58 CET 2002 - adrian@suse.de - -- use current 3_1_BRANCH fixes - -------------------------------------------------------------------- -Mon Nov 25 20:26:17 CET 2002 - adrian@suse.de - -- update to RC5 - -------------------------------------------------------------------- -Sun Nov 24 00:29:31 CET 2002 - adrian@suse.de - -- move kcm samba module into samba subpackage -- move thememgr into extra package - -------------------------------------------------------------------- -Sat Nov 23 17:59:54 CET 2002 - adrian@suse.de - -- fix build for < SuSE 7.3 - -------------------------------------------------------------------- -Wed Nov 20 12:09:05 CET 2002 - adrian@suse.de - -- remove obsolete kdm-xconsole patch - -------------------------------------------------------------------- -Wed Nov 20 11:24:05 CET 2002 - adrian@suse.de - -- update to version 3.1-RC4 (final ?) - -------------------------------------------------------------------- -Wed Nov 20 11:15:22 CET 2002 - adrian@suse.de - -- update to version 3.1-RC4 (final ?) - -------------------------------------------------------------------- -Fri Nov 15 10:46:41 CET 2002 - coolo@suse.de - -- removed one more patch that isn't needed with - the later CVS snapshot - -------------------------------------------------------------------- -Tue Nov 12 14:12:45 CET 2002 - coolo@suse.de - -- sorted patches out -- update snapshot to include a last minute fix for - new kdelibs - -------------------------------------------------------------------- -Wed Nov 6 17:36:07 CET 2002 - adrian@suse.de - -- update to snapshot 3.0.8.20021106 - -------------------------------------------------------------------- -Tue Nov 5 14:26:38 CET 2002 - adrian@suse.de - -- update to snapshot 20021030 - ( fixes file conflicts with kdelibs ) - -------------------------------------------------------------------- -Sun Nov 3 13:16:21 CET 2002 - adrian@suse.de - -- update to version 3.0.9.20021030 ~= RC1 - -------------------------------------------------------------------- -Tue Oct 8 21:23:32 CEST 2002 - adrian@suse.de - -- update to version 3.0.4 - -------------------------------------------------------------------- -Thu Sep 26 16:28:19 CEST 2002 - adrian@suse.de - -- limit kconsole log lines to 100 (fixes the memory "leak") -- kate encoding fix from HEAD (#20139) - -------------------------------------------------------------------- -Tue Sep 17 17:53:44 CEST 2002 - adrian@suse.de - -- fix kdesktop lock behaviour with "focus under mouse" settings - (credit for finding it goes to Lubos) - -------------------------------------------------------------------- -Fri Sep 13 14:19:07 CEST 2002 - coolo@suse.de - -- fixing the fix for nspluginscan - -------------------------------------------------------------------- -Wed Sep 11 01:00:30 CEST 2002 - adrian@suse.de - -- disable Console Login option in kdm menu - -------------------------------------------------------------------- -Mon Sep 9 17:54:53 CEST 2002 - adrian@suse.de - -- add fix from ossi to suppress "new session" buttons, when not - started via kdm -- use launch icon for "new session" entries -- fix acroread default colors - -------------------------------------------------------------------- -Mon Sep 9 13:49:55 CEST 2002 - coolo@suse.de - -- fixing #19212 in showing all printers if there is no - printer defined to be used - -------------------------------------------------------------------- -Mon Sep 9 02:31:07 CEST 2002 - adrian@suse.de - -- fix compile - -------------------------------------------------------------------- -Mon Sep 9 01:21:35 CEST 2002 - adrian@suse.de - -- fix focus handling with locking screensavers -- make kdm quiet - -------------------------------------------------------------------- -Sun Sep 8 13:50:27 CEST 2002 - adrian@suse.de - -- fixes from Ossi for chooser. I disable it anyway by default to - get sure. -- disable auto-new-session on lock -- use own Xsetup script (fix the double root window setup) -- fix kcontrol/kdm to write the right (superior) kdmrc file -- update the fallback kdmrc to fix values from kdebase3-SuSE -- move krootimage to kdm package -- add split alias for -kdm and -konqueror package - -------------------------------------------------------------------- -Fri Sep 6 01:08:50 CEST 2002 - adrian@suse.de - -- apply last bits from Ossi - * adds "create new session" feature -- remove chooser from menu button in kdm, since it does not work atm -- we still use kdmrc for kdm desktop settings, so kdm must some settings - (we do not need to replace the kcm module) -- disable the nohang patch, we are fast enough to live without now :) - -------------------------------------------------------------------- -Thu Sep 5 14:42:53 CEST 2002 - coolo@suse.de - -- found work around for nsplugin and real player plugin - (major PR 18083) - -------------------------------------------------------------------- -Wed Sep 4 10:44:22 MEST 2002 - coolo@suse.de - -- applying fix for PR18629 (suse tour broken) -- fixing rcksysguardd -- don't line up icons on font change - -------------------------------------------------------------------- -Wed Sep 4 01:11:43 CEST 2002 - adrian@suse.de - -- update to latest kdm version from ossi - * fixes possible seg fault / support user defined log file - * adds chooser - * GUI cleanup -- set background color after installing theme - -------------------------------------------------------------------- -Mon Sep 2 11:54:50 CEST 2002 - coolo@suse.de - -- don't crash kicker on switching desktops while renaming - -------------------------------------------------------------------- -Fri Aug 30 07:48:49 CEST 2002 - adrian@suse.de - -- fix for kfindpart crash ( it does since memory leak fix) -- install root theme also when kdesu has been used from a user - account before -- move kpersonalizer pictures to main package, the greeter is using it - -------------------------------------------------------------------- -Fri Aug 23 08:17:54 CEST 2002 - adrian@suse.de - -- we do not need kdm_position patch anymore (xconsole will go away :) -- add patch to check for kdmrc in /etc and /opt -- install and package kappfinder_install (used by susewm) -- do not create a sub menu for Terminal and Konq in kicker/quickbrowser -- disable tracing of kdesud via prctl() instead of set gid bit (hint from okir) -- hot fix for kdm xconsole - -------------------------------------------------------------------- -Wed Aug 21 00:19:34 CEST 2002 - adrian@suse.de - -- apply kdm xconsole patch from ossi with some changes -- let konqueror->Go->Applications go to {/etc/,}opt/kde3/share/applnk -- set explicit kcheckpass permissions in %files section -- use default kdmrc in /opt only and make /etc free for theme package -- add extra hooks for additional UL calls -- coolo: fix kicker_default patch -- coolo: fix khelpcenter startup - -------------------------------------------------------------------- -Tue Aug 20 10:49:57 CEST 2002 - coolo@suse.de - -- fixing kicker default for smaller resolutions - -------------------------------------------------------------------- -Mon Aug 19 21:27:19 CEST 2002 - adrian@suse.de - -- unset also QTDIR in startkde -- update khelpcenter to current HEAD snapshot - -------------------------------------------------------------------- -Mon Aug 19 15:07:15 CEST 2002 - coolo@suse.de - -- changed ShowUsers from All to NotHidden - -------------------------------------------------------------------- -Mon Aug 19 14:27:29 CEST 2002 - coolo@suse.de - -- use Nimbus Sans l when installed instead of helvetica - -------------------------------------------------------------------- -Sun Aug 18 12:19:18 CEST 2002 - adrian@suse.de - -- fix PreRequires - -------------------------------------------------------------------- -Wed Aug 14 14:52:46 CEST 2002 - coolo@suse.de - -- 400 is too few on 800x600 - 480 is minimum (6 buttons remaining) - -------------------------------------------------------------------- -Tue Aug 13 10:59:19 CEST 2002 - coolo@suse.de - -- changed kcheckpass to suid root again as discussed with kukuk - (needed for nisplus+ldap) - -------------------------------------------------------------------- -Mon Aug 12 15:09:54 CEST 2002 - coolo@suse.de - -- don't name the default_desktop stuff suse_ -- let the scripts specify the row/col -- fix the name of the resulting icons -- remove the file from auto start after having done the work -- keep 100 pixels more for the taskbar - -------------------------------------------------------------------- -Sun Aug 11 12:55:30 CEST 2002 - coolo@suse.de - -- splitting the kdesktop moving patch from the suse_default patch - and fixing both - -------------------------------------------------------------------- -Sat Aug 10 22:30:42 CEST 2002 - coolo@suse.de - -- changed the way kicker sets the default config - -------------------------------------------------------------------- -Sat Aug 10 20:46:47 CEST 2002 - adrian@suse.de - -- disable kdesktop patch for now - -------------------------------------------------------------------- -Sat Aug 10 18:58:21 CEST 2002 - adrian@suse.de - -- second try of gcc 3 fix for suse_move_default_desktop - (yes, again untested ;) - -------------------------------------------------------------------- -Sat Aug 10 18:40:15 CEST 2002 - adrian@suse.de - -- fix build for 7.3 and older - -------------------------------------------------------------------- -Sat Aug 10 11:28:23 CEST 2002 - adrian@suse.de - -- fix build of suse_move_default_desktop for gcc 3 - -------------------------------------------------------------------- -Fri Aug 9 17:38:38 CEST 2002 - adrian@suse.de - -- add workaround for plugins when compiled with gcc 3.x (from malte) - -------------------------------------------------------------------- -Fri Aug 9 15:41:09 CEST 2002 - coolo@suse.de - -- adding suse_move_default_desktop - to be used through - kdebase-SuSE (the name of the tool isn't visible to the - user, so other UL parties can use it too :) - -------------------------------------------------------------------- -Fri Aug 9 12:05:37 CEST 2002 - adrian@suse.de - -- fix build for older distributions - -------------------------------------------------------------------- -Thu Aug 8 17:43:07 CEST 2002 - adrian@suse.de - -- fix stupid typo in spec file - -------------------------------------------------------------------- -Thu Aug 8 02:55:20 CEST 2002 - adrian@suse.de - -- update to version 3.0.3 -- update khelpcenter from current HEAD - -------------------------------------------------------------------- -Wed Aug 7 09:52:22 CEST 2002 - coolo@suse.de - -- show the default printer's jobs by default - -------------------------------------------------------------------- -Tue Aug 6 15:37:14 CEST 2002 - coolo@suse.de - -- fixing the fix - -------------------------------------------------------------------- -Tue Aug 6 12:49:11 CEST 2002 - coolo@suse.de - -- extending konsole fix - -------------------------------------------------------------------- -Tue Aug 6 11:27:33 CEST 2002 - coolo@suse.de - -- fixing konsole on PPC - -------------------------------------------------------------------- -Fri Aug 2 14:05:08 CEST 2002 - coolo@suse.de - -- don't use lilo reboot option by default - -------------------------------------------------------------------- -Thu Aug 1 11:00:20 CEST 2002 - adrian@suse.de - -- fix PreRequires -- set default kdmrc greeting string to "United Linux 1.0" -- fix %post / %pre scripts - -------------------------------------------------------------------- -Wed Jul 24 20:20:44 CEST 2002 - adrian@suse.de - -- fix #neededforbuild - -------------------------------------------------------------------- -Mon Jul 22 10:55:34 CEST 2002 - coolo@suse.de - -- fixing scope of the lib64 patch - -------------------------------------------------------------------- -Fri Jul 19 15:03:18 CEST 2002 - adrian@suse.de - -- do not export KDE_MALLOC anymore - -------------------------------------------------------------------- -Thu Jul 18 23:34:11 CEST 2002 - adrian@suse.de - -- fix file list - -------------------------------------------------------------------- -Wed Jul 17 16:26:26 CEST 2002 - adrian@suse.de - -- split samba dependend libs into -samba subpackage -- use updated lib64 patches from coolo -- fix build for several changes in base system - -------------------------------------------------------------------- -Tue Jul 16 16:51:22 CEST 2002 - coolo@suse.de - -- fixing location for ldap on lib64 architectures -- fixing cddb entries for Schwab's CD - -------------------------------------------------------------------- -Sun Jul 14 19:18:36 CEST 2002 - adrian@suse.de - -- split sub-packages for kdm, konqueror and unneeded extra stuff. -- do not start kinternet for 8.1 and higher by startkde -- apply fix for smb kio from coolo -- apply fix for kpager from coolo -- apply fix to fix time stamps when handle with konqueror from coolo -- fix USE_FAM variable in startscript - -------------------------------------------------------------------- -Mon Jul 1 14:03:40 CEST 2002 - adrian@suse.de - -- fix default settings for klipper to start Netscape and Mozilla - -------------------------------------------------------------------- -Mon Jun 24 21:00:55 CEST 2002 - adrian@suse.de - -- update to version 3.0.2 - -------------------------------------------------------------------- -Wed Jun 12 14:24:38 CEST 2002 - coolo@suse.de - -- cleanup around $configkde - -------------------------------------------------------------------- -Mon Jun 10 20:11:45 CEST 2002 - adrian@suse.de - -- fix memory leak in kfind (partitial, but the bigger one ;) - -------------------------------------------------------------------- -Mon Jun 10 14:11:37 CEST 2002 - coolo@suse.de - -- adding fix for cddb computation - -------------------------------------------------------------------- -Mon Jun 10 00:56:03 CEST 2002 - adrian@suse.de - -- fix build on lib64 (audiocd slave) - -------------------------------------------------------------------- -Wed May 29 11:17:41 CEST 2002 - adrian@suse.de - -- use update_admin -- add extra optional script directory /opt/kde3/share/addon-scripts/ -- check for tmp-$HOST symlinks in startscript - -------------------------------------------------------------------- -Tue May 14 12:55:35 CEST 2002 - adrian@suse.de - -- update to 3.0.1, second try -- memory leak fixes for kicker - -------------------------------------------------------------------- -Fri May 10 13:43:31 CEST 2002 - adrian@suse.de - -- update to 3.0.1 - -------------------------------------------------------------------- -Tue May 7 15:28:30 CEST 2002 - meissner@suse.de - -- generic KDE Libdir fixes, fixed updatedialog compilation. - -------------------------------------------------------------------- -Wed Apr 17 14:04:55 CEST 2002 - adrian@suse.de - -- do not overwrite root-user settings - -------------------------------------------------------------------- -Mon Apr 15 13:12:58 CEST 2002 - adrian@suse.de - -- add pre install script to check for a /opt/kde3/share/config/kdm - directory. -- rename ksysguardd3 back to ksysguardd - -------------------------------------------------------------------- -Wed Mar 27 18:01:22 CET 2002 - adrian@suse.de - -- do not start kpersonilzer (fix it really) - -------------------------------------------------------------------- -Wed Mar 27 12:08:09 CET 2002 - adrian@suse.de - -- remove wrong double quotes around the Desktop copy routine -- disable kpersonalizer on autostart - (it mess up some systems during update) - -------------------------------------------------------------------- -Wed Mar 27 12:07:04 CET 2002 - kukuk@suse.de - -- Remove last konsole patch - -------------------------------------------------------------------- -Tue Mar 26 15:16:37 CET 2002 - adrian@suse.de - -- crash fix for konqueror, when browsing not readable directorys - (made by Andreas Schwab) - -------------------------------------------------------------------- -Mon Mar 25 20:33:10 CET 2002 - adrian@suse.de - -- update tar ball to 3.0 final, second try -- add window raise fix for ktaskbar in kicker - -------------------------------------------------------------------- -Mon Mar 25 11:25:49 CET 2002 - adrian@suse.de - -- update to 3.0 final (everything is wonderfull release) -- unset $KDEDIRS instead of exporting, we have /etc/kde3rc now - -------------------------------------------------------------------- -Thu Mar 21 17:43:25 CET 2002 - adrian@suse.de - -- update to 3.0rc3 -- change to new SuSE background, if the user is still using the - old version - -------------------------------------------------------------------- -Mon Mar 18 09:04:00 CET 2002 - adrian@suse.de - -- fix ~/.kde2->~/.kde copy routine - -------------------------------------------------------------------- -Fri Mar 15 00:33:20 CET 2002 - ro@suse.de - -- changed neededforbuild <ssh> to <openssh> - -------------------------------------------------------------------- -Sun Mar 10 23:07:19 CET 2002 - adrian@suse.de - -- fix %pre install script - -------------------------------------------------------------------- -Sun Mar 10 17:05:52 CET 2002 - adrian@suse.de - -- update to 3.0rc2 - -------------------------------------------------------------------- -Tue Mar 5 09:14:54 CET 2002 - ro@suse.de - -- fixed pre-install - -------------------------------------------------------------------- -Mon Mar 4 17:38:37 CET 2002 - adrian@suse.de - -- update to 3.0rc1 - -------------------------------------------------------------------- -Tue Feb 26 15:49:14 CET 2002 - adrian@suse.de - -- fix startscript (use changed sysconfig variables) - -------------------------------------------------------------------- -Tue Feb 26 14:41:14 CET 2002 - adrian@suse.de - -- fix updatedialog install - -------------------------------------------------------------------- -Tue Feb 26 13:03:32 CET 2002 - adrian@suse.de - -- update to snapshot 2.92.2002022519 - -------------------------------------------------------------------- -Thu Feb 14 01:11:30 CET 2002 - adrian@suse.de - -- update to snapshot 2.92.2002021421 -- move Doug Lea's malloc to kdelibs3 - (can be configured via kdebase3-SuSE) -- fix samba support -- add KDE 2 -> 3 update tool - -------------------------------------------------------------------- -Tue Feb 12 02:39:22 CET 2002 - adrian@suse.de - -- add optional Doug Lea's fast malloc implementation -- fix ownership of files - -------------------------------------------------------------------- -Mon Feb 11 15:14:13 CET 2002 - adrian@suse.de - -- update to snapshot 2.92.2002021111 -- add rckdm symlink -- kdm follows qtrc - -------------------------------------------------------------------- -Wed Feb 6 21:57:56 CET 2002 - adrian@suse.de - -- update to version 2.92 (KDE 3.0 beta 2) -- use common_compile_flags - -------------------------------------------------------------------- -Tue Jan 29 12:56:23 CET 2002 - adrian@suse.de - -- fix startkde script to call startkde.theme early enough - -------------------------------------------------------------------- -Mon Jan 28 16:52:04 CET 2002 - adrian@suse.de - -- fix $KDEDIRS - -------------------------------------------------------------------- -Mon Jan 28 15:21:04 CET 2002 - adrian@suse.de - -- update to snapshot 2.91.2002012811 - -------------------------------------------------------------------- -Sun Jan 27 16:47:04 CET 2002 - schwab@suse.de - -- Remove invalid use of PAGE_SHIFT. - -------------------------------------------------------------------- -Wed Jan 23 00:46:05 CET 2002 - adrian@suse.de - -- update to snapshot 2.91.2002012221 -- move all distribution version depending configure stuff - to kdebase3-SuSE - -------------------------------------------------------------------- -Wed Jan 16 14:39:09 CET 2002 - adrian@suse.de - -- really fix the kde start link - -------------------------------------------------------------------- -Tue Jan 15 18:29:37 CET 2002 - adrian@suse.de - -- update to snapshot 2.91.2002011511 -- fix kde start link for 7.3.99 development version - -------------------------------------------------------------------- -Tue Jan 8 17:34:22 CET 2002 - adrian@suse.de - -- use current CVS snapshot -- disable rpath linking depending on kdelibs - -------------------------------------------------------------------- -Tue Dec 18 01:01:14 CET 2001 - adrian@suse.de - -- update to version 2.91 (3.0 beta1) - -------------------------------------------------------------------- -Tue Dec 4 20:14:18 CET 2001 - adrian@suse.de - -- use current cvs snapshot - -------------------------------------------------------------------- -Fri Nov 2 12:32:18 CET 2001 - adrian@suse.de - -- using cvs snapshot from 01 Nov. 2001 - ( compiles again with qt 3 final ) - -------------------------------------------------------------------- -Tue Sep 25 19:08:50 CEST 2001 - adrian@suse.de - -- remove a part of setuid-kdm patch, which caused hanging and - killing a bit too much processes -- added diff to avoid killing arbitrary processes - -------------------------------------------------------------------- -Mon Sep 24 10:50:04 CEST 2001 - adrian@suse.de - -- add setuid-kdm patch (SECURITY FIX) -- remove export $LANGUAGE from startkde -- remove testing patch from kdm -- fix KOffice icon really -- add fixes for IconDialog in kmenuedit and kicker - (all icons are back) - -------------------------------------------------------------------- -Fri Sep 21 17:17:30 CEST 2001 - adrian@suse.de - -- fix icon positions again -- change ktip picture -- add dcopserver_shutdown also before a new session is started - (no more login problems;) -- kdm greeter will do not cover xconsole anymore -- fix kcmkdm to use the right kdmrc file (and not to remove the link) -- fix SuSEconfig.kdm2 for security non-easy mode ("NoStars"->"NoEcho") -- fix Home/End keys in konsole _really_ -- fix SegFault in audiocd+lame after first title -- add some last fixes for kdm (thanks a lot, ossi) -- fix ksysguardd start script (kill only, if pid file present) -- change koffice icon from unkown->xedit - -------------------------------------------------------------------- -Thu Sep 20 23:00:34 CEST 2001 - adrian@suse.de - -- add dcopserver_shutdown from HEAD branch and call it in startkde - -------------------------------------------------------------------- -Thu Sep 20 18:41:33 CEST 2001 - adrian@suse.de - -- add fix for wrong ownership of $HOME/.wmrc - -------------------------------------------------------------------- -Thu Sep 20 12:37:43 CEST 2001 - adrian@suse.de - -- change icon for kwintv template - -------------------------------------------------------------------- -Wed Sep 19 00:18:35 CEST 2001 - mfabian@suse.de - -- fix for bug #10464: - make Japanese input possible even when UNIX-style application - shortcuts are selected (Japanese input becomes impossible - when the keyboard shortcut for "SelectAll" is empty. This - workaround sets it to "Alt+Ctrl+Shift+A" instead). -- patch for kpersonalizer to handle encoding as well - -------------------------------------------------------------------- -Tue Sep 18 15:24:30 CEST 2001 - adrian@suse.de - -- add signal handler fix for smbro: -- revert patch for konsole, which breaks the Home/End keys -- minor theme improvements -- add fixes kcontrol: - * size for YaST2 - * broken about page for Menus with sub folders - * rename Modify button to root button - -------------------------------------------------------------------- -Wed Sep 12 13:47:54 CEST 2001 - adrian@suse.de - -- apply cvs branch fix (fix icon desktop handling) -- improve startkde.devices script for better icon positioning - -------------------------------------------------------------------- -Tue Sep 11 20:03:15 CEST 2001 - adrian@suse.de - -- update to second try of kdebase 2.2.1 tar ball - -------------------------------------------------------------------- -Sat Sep 8 21:00:27 CEST 2001 - adrian@suse.de - -- update to 2.2.1 -- fix sane check for kooka icon -- make the Euro char working again in konsole -- fix CD-R icon on desktop - -------------------------------------------------------------------- -Wed Sep 5 17:01:07 CEST 2001 - adrian@suse.de - -- add kwintv and kooka to start scripts -- fix file conflicts -- apply patch from kukuk: do not show lilo menu on non i386 architectures - -------------------------------------------------------------------- -Tue Sep 4 16:55:46 CEST 2001 - adrian@suse.de - -- update to current KDE_2_2_BRANCH ( 04.09.2001 ) - * konsole fixes again - * translation updates - * audiocd fix for Xing tag writing - * charset define fix in kcontrol title -- fix startkde & SuSEconfig scripts - -------------------------------------------------------------------- -Sun Sep 2 10:46:05 CEST 2001 - adrian@suse.de - -- update to current KDE_2_2_BRANCH ( 02.09.2001 ) - * ksmserver checks disk-space in error handling - * removed startup notification for kpager - * fix x screen savers - * kate fixes - * konsole fixes -- add fallbackAppliation lines to templates -- fix startkde scripts for new theme - -------------------------------------------------------------------- -Wed Aug 29 08:22:56 CEST 2001 - adrian@suse.de - -- fix logo patch - -------------------------------------------------------------------- -Tue Aug 28 12:01:34 CEST 2001 - adrian@suse.de - -- update to current KDE_2_2_BRANCH ( 28.08.2001 ) - * better gui in kcontrol file handling - * konsole fixes - * crash fix for konqueror about:blank - * translation updates -- kdm pam support fix - -------------------------------------------------------------------- -Tue Aug 28 02:24:23 CEST 2001 - adrian@suse.de - -- fix startkde scripts for new theme - -------------------------------------------------------------------- -Mon Aug 27 00:51:40 CEST 2001 - ro@suse.de - -- fix typo in specfile (build-root dir was missing in one place) - -------------------------------------------------------------------- -Sat Aug 25 10:30:24 CEST 2001 - adrian@suse.de - -- update to current KDE_2_2_BRANCH - * several fixes for konsole -- split and cleanup SuSE startkde script -- do not apply kcm modules twice on KDE start - -------------------------------------------------------------------- -Tue Aug 21 18:01:42 CEST 2001 - adrian@suse.de - -- update to current KDE_2_2_BRANCH - * fixes for icon handling on desktop - * konsole fixes and enhencements - * kpersonalizer fixes - * icon cleaning - * several kicker fixes -- dlopen libmp3lame if present -- add README and spec file to compile lame -- obsolete kdebase-i686 until objprelink does work better -- move ksysguardd to /usr/bin/ - -------------------------------------------------------------------- -Mon Aug 6 12:47:43 CEST 2001 - adrian@suse.de - -- update to final 2.2 -- add optimized -i686 package for i386 architecture -- add start scripts for ksysguardd -- add SuSE menu kicker patch - -------------------------------------------------------------------- -Wed Aug 1 16:46:21 CEST 2001 - adrian@suse.de - -- update to 2.2rc1 - -------------------------------------------------------------------- -Fri Jun 29 15:39:23 CEST 2001 - adrian@suse.de - -- 2.2beta1 - -------------------------------------------------------------------- -Mon May 28 10:39:45 CEST 2001 - adrian@suse.de - -- 2.2alpha2 - -------------------------------------------------------------------- -Tue May 22 12:59:22 CEST 2001 - adrian@suse.de - -- switch greeting font in kdm to helvetica -- write correct codec numbers for ja,ko,zh -- fix anti_xsnow_pro_netscape fix - -------------------------------------------------------------------- -Tue May 15 19:16:32 CEST 2001 - adrian@suse.de - -- fix kdialog dialog - -------------------------------------------------------------------- -Tue May 15 18:03:03 CEST 2001 - adrian@suse.de - -- add hack to workaround a segfault from Flash6 plugin -- fix root warning in startkde - -------------------------------------------------------------------- -Mon May 14 19:01:28 CEST 2001 - adrian@suse.de - -- my last try to get the top icons in line - (startkde script changes) - -------------------------------------------------------------------- -Sat May 12 08:18:59 CEST 2001 - adrian@suse.de - -- set rc.config variable back to auto - (the users get a asterix in passwd field by default) -- set konsole keytab to XFree86 3 by default, F-Keys are working now -- change picture in ktip - -------------------------------------------------------------------- -Fri May 11 13:18:15 CEST 2001 - adrian@suse.de - -- fix SuSEconfig.kdm2 for LANG=C -- improve icon positions on desktop - -------------------------------------------------------------------- -Thu May 10 14:26:34 CEST 2001 - adrian@suse.de - -- fix lock up if $LANG is not set -- fix not translated Floppy -- add bookmarks to menu -- add SuSE icon to desktop - -------------------------------------------------------------------- -Mon May 7 22:06:49 CEST 2001 - adrian@suse.de - -- fix permissions in kdebase-conf.tar.bz2 -- big icons on panel only for >1280x1024 -- revert coolo's xsnow hack - (it is summer, netscape is more important and it reduces the load) - (BTW: dpms was also broken by this hack ...) -- check for broken SM entry for kicker in kwin:* -- change KDM_SHUTDOWN default to local - -------------------------------------------------------------------- -Sun May 6 14:11:52 CEST 2001 - adrian@suse.de - -- reorganize startkde script to use old and new mountpoints and - translate application icons on desktop -- update to current KDE_2_1_BRANCH -- fix kdm to use Language from kdmrc and not configuration from root -- fix SuSEconfig.kdm2 to write language depended GreetString -- make kcontrol widther by default for YaST2 -- ignore LastLogin in kdmrc for md5sum -- add own kickerrc for resolution 1024 and more -- fix wmlist handling -- drop libkicker_internal.la to fix crashes as suggested by Waldo -- add public_html link to konqueror tree -- add drives folder to konqueror tree -- fix broken line in proxy.desktop - -------------------------------------------------------------------- -Tue May 1 17:41:08 CEST 2001 - adrian@suse.de - -- kcmshell reposition for YaST2 modules -- use iso-8895-15 to support the EUR - -------------------------------------------------------------------- -Wed Apr 25 00:18:14 CEST 2001 - adrian@suse.de - -- drop sensors support (do it really destroy thinkpads ?, not my ;-) -- add konsole patch from mls for latin9 - -------------------------------------------------------------------- -Mon Apr 23 21:41:12 CEST 2001 - adrian@suse.de - -- use SuSEwizard for setup -- strip leading /media/ for device icons -- cleanup startkde - -------------------------------------------------------------------- -Wed Apr 18 14:34:25 CEST 2001 - adrian@suse.de - -- switch off --enable-final for axp - -------------------------------------------------------------------- -Fri Apr 13 11:23:57 CEST 2001 - adrian@suse.de - -- show currency symbol/Euro() in kcontrol font dialog - -------------------------------------------------------------------- -Wed Apr 11 17:21:08 CEST 2001 - adrian@suse.de - -- fix SuSEconfig.kdm2 -- fix conflicts in sub packages - -------------------------------------------------------------------- -Mon Apr 9 17:30:32 CEST 2001 - adrian@suse.de - -- added dialog box while root login. Hopefully no more magazines - will write about our ugly red standard desktop. - But I do not believe it. -- disable alsa for 7.0-ppc - -------------------------------------------------------------------- -Fri Apr 6 13:21:43 CEST 2001 - adrian@suse.de - -- -O2 for axp - apply NOnostdlib patch (resolve hopefully ppc link problems) - -------------------------------------------------------------------- -Fri Mar 30 01:52:53 CEST 2001 - ro@suse.de - -- neededforbuild fix - -------------------------------------------------------------------- -Thu Mar 29 00:56:47 CEST 2001 - mfabian@suse.de - -- I didn't apply the patch for my last changelog entry correctly. - fixed. - -------------------------------------------------------------------- -Tue Mar 27 21:48:17 CEST 2001 - mfabian@suse.de - -- use correct charset for Japanese, Korean, and Chinese in - "startkde" -- use "default" as the font for Japanese, Korean, and Chinese - in /sbin/conf.d/SuSEconfig.kdm2 -- add "GreetString[ja]" to /opt/kde2/share/config/SuSE/config/kdmrc -- add "windowmanager" to "Provides:" - -------------------------------------------------------------------- -Tue Mar 27 12:08:52 CEST 2001 - ro@suse.de - -- changed neededforbuild <docbkdsl> to <docbook-dsssl-stylesheets> - -------------------------------------------------------------------- -Sat Mar 24 11:52:42 CET 2001 - adrian@suse.de - -- go back to -O0 for ppc - disable cdparanoia support for 6.3 - -------------------------------------------------------------------- -Wed Mar 21 20:55:31 CET 2001 - adrian@suse.de - -- remove QT_XFT=yes from startkde to reduce problems with - NVidia Vanta cards - -------------------------------------------------------------------- -Tue Mar 20 21:57:33 CET 2001 - adrian@suse.de - -- enable -O2 for ppc - -------------------------------------------------------------------- -Tue Mar 20 18:53:25 CET 2001 - adrian@suse.de - -- update to 2.1.1 (official tar ball) - -------------------------------------------------------------------- -Tue Mar 20 14:53:56 CET 2001 - adrian@suse.de - -- add feature to kicker (SuSE menu as main menu now possible) - -------------------------------------------------------------------- -Mon Mar 19 22:12:11 CET 2001 - adrian@suse.de - -- fix patches again :-( - -------------------------------------------------------------------- -Sun Mar 18 18:43:10 CET 2001 - adrian@suse.de - -- fix patches - -------------------------------------------------------------------- -Sat Mar 17 14:22:54 CET 2001 - adrian@suse.de - -- update to current 2_1_BRANCH - -------------------------------------------------------------------- -Thu Mar 15 18:23:12 CET 2001 - ro@suse.de - -- changed neededforbuild <mesaglu> to <xf86glu> -- changed neededforbuild <mesaglu-devel> to <xf86glu-devel> - -------------------------------------------------------------------- -Thu Mar 15 01:08:35 CET 2001 - ro@suse.de - -- fixed neededforbuild for openldap - -------------------------------------------------------------------- -Tue Mar 13 10:06:50 CET 2001 - ro@suse.de - -- removed second occurence of docbk30 from neededforbuild - -------------------------------------------------------------------- -Tue Mar 13 01:12:28 CET 2001 - ro@suse.de - -- changed neededforbuild <docbk30> to <docbook_3> - -------------------------------------------------------------------- -Wed Mar 7 16:58:40 CET 2001 - ro@suse.de - -- changed neededforbuild <mesadev> to <mesa-devel> - -------------------------------------------------------------------- -Wed Feb 28 17:38:47 CET 2001 - schwab@suse.de - -- kcontrol: Use getpagesize() to determine page size. - -------------------------------------------------------------------- -Tue Feb 27 11:20:53 CET 2001 - ro@suse.de - -- changed neededforbuild <cyrus-sasl> to <cyrus-sasl cyrus-sasl-devel> - -------------------------------------------------------------------- -Wed Feb 21 18:15:39 CET 2001 - adrian@suse.de - -- update to final 2.1.0 - -------------------------------------------------------------------- -Mon Feb 19 14:38:11 CET 2001 - adrian@suse.de - -- update to 2.1 post beta 2 - -------------------------------------------------------------------- -Wed Jan 24 15:18:37 CET 2001 - adrian@suse.de - -- fix konsole for non iso8859-1 - add Mozilla to desktop, if Netscape is not installed - make SuSEconfig.kdm2 output nicer - a little bit heigher welcome screen - -------------------------------------------------------------------- -Mon Jan 22 18:13:46 CET 2001 - adrian@suse.de - -- fix maximize button in SuSE decoration - -------------------------------------------------------------------- -Mon Jan 22 15:45:55 CET 2001 - adrian@suse.de - -- set nr of mixer in kcontrol to 1 bye default, this fix the - error lines in xconsole -- fix not translated icons on desktop - -------------------------------------------------------------------- -Wed Jan 17 17:40:28 CET 2001 - adrian@suse.de - -- changed kcheckpass to setgroudid shadow instead of setuserid root - add kinternet call to startkde - fixed web font sizes - fixed kde menu icons - fixed non iso-8859-1 language support - -------------------------------------------------------------------- -Wed Jan 17 11:13:54 CET 2001 - adrian@suse.de - -- fix locolor config for standard user and root user settings - -------------------------------------------------------------------- -Mon Jan 15 19:07:42 CET 2001 - adrian@suse.de - -- fix info service - -------------------------------------------------------------------- -Mon Jan 15 13:31:24 CET 2001 - adrian@suse.de - -- fix welcome page size for resolutions>1152 - switch to small desktop font, which looks better - fix czech trash bin name on desktop - update logo on desktop - -------------------------------------------------------------------- -Sun Jan 14 17:12:46 CET 2001 - adrian@suse.de - -- fix hang in SuSEconfig.kdm2, when REAL_LANG is empty - -------------------------------------------------------------------- -Sat Jan 13 18:52:49 CET 2001 - adrian@suse.de - -- fix fallback icon for applications in kicker - fix welcome page start (does not start anymore in second login) - fix SuSE decoration close function from menu - -------------------------------------------------------------------- -Fri Jan 12 11:31:41 CET 2001 - adrian@suse.de - -- new tar ball from KDE_2_0_BRANCH (fix ksysguard bug) - change kcontrol root button label - a little work on the logo - fix rc.config template - fix $LANG problem in welcome page startup - -------------------------------------------------------------------- -Thu Jan 11 23:16:43 CET 2001 - adrian@suse.de - -- changed logo - changed inactive text color in window header - -------------------------------------------------------------------- -Thu Jan 11 10:11:55 CET 2001 - adrian@suse.de - -- delete debug lines in SuSEconfig.kdm2 (cause a hang) - -------------------------------------------------------------------- -Wed Jan 10 17:11:15 CET 2001 - adrian@suse.de - -- fix SuSEconfig.kdm2 for czech people - workaround KDE bug in charset selection via script - fix startkde function for suppress double desktop icons - -------------------------------------------------------------------- -Tue Jan 9 21:21:53 CET 2001 - adrian@suse.de - -- fix welcome page start - fix bg colors. 220,220,220 again. - added security fix for kdesud from Waldo - -------------------------------------------------------------------- -Sun Jan 7 16:44:24 CET 2001 - adrian@suse.de - -- fix update problems due to changed icon handling - -------------------------------------------------------------------- -Sun Jan 7 14:55:50 CET 2001 - adrian@suse.de - -- change icon handling - -------------------------------------------------------------------- -Thu Jan 4 15:58:53 CET 2001 - adrian@suse.de - -- changes in SuSE theme - workaround slow mouse acceleration from XFree 4 - added fix for stolen focus in kdm (Thanks Waldo) - fix ktip start on every KDE start - do not set $LANG new anymore, since kdelibs are fixed - new tar ball with Kernel 2.4 fix in ksysguard (Thanks Chris) - -------------------------------------------------------------------- -Tue Jan 2 21:54:08 CET 2001 - adrian@suse.de - -- font handling fix for AA (thanks Kurt) - -------------------------------------------------------------------- -Mon Jan 1 19:59:35 CET 2001 - adrian@suse.de - -- add kdm resize patch for little resolutions - fix SuSEconfig.kdm2 for languages with no defined charsets - set $LANG for KDE 2 in startkde (for a desktop with native language) - -------------------------------------------------------------------- -Sat Dec 30 20:05:15 CET 2000 - adrian@suse.de - -- fixed two .desktop files for kcontrol - minor fix in startkde - new version of SuSE decoration - -------------------------------------------------------------------- -Fri Dec 22 11:19:45 CET 2000 - adrian@suse.de - -- switch off the X11 resource manager by default - set TERM=kvt for konsole (several Keys like Pos1 are working now) - minor fix in startkde - -------------------------------------------------------------------- -Wed Dec 20 18:38:54 CET 2000 - adrian@suse.de - -- fix SuSEconfig.kdm2 for non iso-8859-1 - added option to disable SuSE theme - added --SuSE function to ksplash - added kdm sec patch from waldo - -------------------------------------------------------------------- -Mon Dec 18 16:13:24 CET 2000 - adrian@suse.de - -- make symbol labels nicer - do not show double icons - added rc.config entrys for kdm - -------------------------------------------------------------------- -Sun Dec 10 23:15:40 CET 2000 - adrian@suse.de - -- extend startkde for dvd and cdrecorder - added logo background mode - changed kicker configuration - fixed line up function for icons on root window - enabled Mesa support again - -------------------------------------------------------------------- -Sat Dec 9 12:49:12 CET 2000 - adrian@suse.de - -- fixing startkde and working on the SuSE theme - -------------------------------------------------------------------- -Wed Dec 6 12:48:53 MET 2000 - adrian@suse.de - -- fixed kde link - -------------------------------------------------------------------- -Wed Nov 29 23:03:42 CET 2000 - adrian@suse.de - -- update to 2.0.1 - -------------------------------------------------------------------- -Tue Nov 21 09:20:25 CET 2000 - ro@suse.de - -- switch to openmotif - -------------------------------------------------------------------- -Tue Nov 21 00:10:43 CET 2000 - adrian@suse.de - -- moved non kde icon support to kdelibs - added drive icon creation to startkde - -------------------------------------------------------------------- -Fri Nov 17 15:15:26 CET 2000 - adrian@suse.de - -- fixed kdm - -------------------------------------------------------------------- -Fri Nov 17 14:57:54 CET 2000 - ro@suse.de - -- fixed neededforbuild: += libmng-devel - -------------------------------------------------------------------- -Thu Nov 16 15:51:08 CET 2000 - adrian@suse.de - -- update to newer snapshot from KDE_2_0_BRANCH - -------------------------------------------------------------------- -Fri Nov 3 08:54:32 CET 2000 - adrian@suse.de - -- fixed needed for build - -------------------------------------------------------------------- -Thu Nov 2 20:40:00 CET 2000 - adrian@suse.de - -- fixed file list - -------------------------------------------------------------------- -Tue Oct 17 05:36:10 CEST 2000 - adrian@suse.de - -- update to 2.0.0 -- added SuSE decoration -- splitted package into - * kdebase - * kdebase-devel - -------------------------------------------------------------------- -Tue Sep 12 08:58:16 CEST 2000 - adrian@suse.de - -- update to RC 1 - -------------------------------------------------------------------- -Mon Aug 21 16:49:08 CEST 2000 - adrian@suse.de - -- update to beta 4 / 1.93 - -------------------------------------------------------------------- -Mon Jul 31 17:10:27 CEST 2000 - adrian@suse.de - -- added workaround for localized startup - (KDE2 can not handle aliases) - -------------------------------------------------------------------- -Mon Jul 24 18:00:53 CEST 2000 - adrian@suse.de - -- update to second try of beta 3 - -------------------------------------------------------------------- -Fri Jul 21 22:54:34 CEST 2000 - adrian@suse.de - -- update to beta 3 - -------------------------------------------------------------------- -Mon Jul 17 19:27:38 CEST 2000 - adrian@suse.de - -- update to snapshot from 17.07.2000 - -------------------------------------------------------------------- -Thu Jul 13 22:58:33 CEST 2000 - adrian@suse.de - -- fixed really the filelist - -------------------------------------------------------------------- -Wed Jul 12 11:37:22 CEST 2000 - adrian@suse.de - -- fixed filelist and fix for older distris - -------------------------------------------------------------------- -Mon Jul 10 17:30:49 CEST 2000 - adrian@suse.de - -- fix start script - -------------------------------------------------------------------- -Mon Jul 10 08:05:46 CEST 2000 - adrian@suse.de - -- update to snapshot from 06.07.2000 - -------------------------------------------------------------------- -Sun Jun 11 12:23:21 CEST 2000 - adrian@suse.de - -- added netscape plugin support - -------------------------------------------------------------------- -Fri Jun 9 17:16:56 CEST 2000 - adrian@suse.de - -- added workarounds in startkde - -------------------------------------------------------------------- -Fri Jun 9 08:03:53 CEST 2000 - adrian@suse.de - -- update to 1.91; beta 2 - -------------------------------------------------------------------- -Sun May 28 09:24:03 CEST 2000 - adrian@suse.de - -- snapshot from 28.05.2000 - new type of spec file - -------------------------------------------------------------------- -Fri May 12 18:09:02 CEST 2000 - adrian@suse.de - -- update to 1.90 - -------------------------------------------------------------------- -Thu Apr 27 18:25:40 CEST 2000 - adrian@suse.de - -- snapshot from 25.04.2000 - -------------------------------------------------------------------- -Wed Apr 19 17:19:28 CEST 2000 - adrian@suse.de - -- snapshot from 17.04.2000 - -------------------------------------------------------------------- -Fri Mar 31 17:05:43 CEST 2000 - adrian@suse.de - -- the first KDE 2 snapshot. still PRE 1.90 - diff --git a/opensuse/tdebase/tdebase.fillup b/opensuse/tdebase/tdebase.fillup deleted file mode 100644 index d2e2beeb8..000000000 --- a/opensuse/tdebase/tdebase.fillup +++ /dev/null @@ -1,25 +0,0 @@ -## Type: yesno -## Default: no -## Path: Desktop/KDE -## Description: KDE uses fam support -# -# KDE use the fam daemon -# (makes only sense on NFS mounted directorys) -# -KDE_USE_FAM="no" - -## Type: string -## Default: -# -# space separated list of users for which icons should be shown in KDM -# if empty, then take system defaults -# -KDM_USERS="" - -## Type: string -## Default: -# -# Special greeting words in kdm -# -KDM_GREETSTRING="" - diff --git a/opensuse/tdebase/tdebase.spec b/opensuse/tdebase/tdebase.spec deleted file mode 100644 index 52d6c3c81..000000000 --- a/opensuse/tdebase/tdebase.spec +++ /dev/null @@ -1,1851 +0,0 @@ -# -# spec file for package kdebase3 -# -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. -# -# All modifications and additions to the file contributed by third parties -# remain the property of their copyright owners, unless otherwise agreed -# upon. The license for this file, and modifications and additions to the -# file, is the same license as for the pristine package itself (unless the -# license for the pristine package is not an Open Source License, in which -# case the license is the MIT License). An "Open Source License" is a -# license that conforms to the Open Source Definition (Version 1.9) -# published by the Open Source Initiative. - -# Please submit bugfixes or comments via http://bugs.opensuse.org/ -# - -# norootforbuild - -%if %suse_version < 1210 || 0%{?is_kde_kde3} > 0 -%define with_hal 1 -%else -%define with_hal 0 -%endif - -Name: kdebase3 -BuildRequires: OpenEXR-devel cups-devel db-devel doxygen graphviz kdelibs3-devel krb5-devel libsmbclient-devel mDNSResponder-devel openldap2 openldap2-devel openmotif openmotif-devel openslp-devel openssh pam-devel pcsc-lite-devel qt3-devel-doc samba-client utempter xorg-x11 -BuildRequires: unsermake xorg-x11-libfontenc-devel -BuildRequires: liblazy-devel -%if %suse_version >= 1130 -BuildRequires: libusb-compat-devel -%endif -%if 0%{?with_hal} > 0 -BuildRequires: hal-devel -Provides: kdebase3-with-hal-enabled -%endif -BuildRequires: fdupes libbz2-devel -%ifnarch s390 s390x -BuildRequires: libsensors4-devel -%endif -%define qt_path /usr/lib/qt3 -%define kde_path /opt/kde3 -Provides: windowmanager kfontinst kdebase3-konqueror kdebase3-khotkeys -Obsoletes: kfontinst kdebase3-konqueror kdebase3-khotkeys -# bug437293 -%ifarch ppc64 -Obsoletes: kdebase3-64bit -%endif -# -Requires: kdelibs3 >= %( echo `rpm -q --queryformat '%{VERSION}' kdelibs3`) -Requires: xorg-x11 misc-console-font -Recommends: kdelibs3_doc -Recommends: gdb -PreReq: fileshareset -%define fileshare_prefix %{_prefix} -Conflicts: kdebase3-SuSE <= 9.0 -PreReq: /bin/sh fileutils permissions -%if %suse_version < 1120 -Requires: kdebase3-apps kdebase3-workspace -%endif -%if %suse_version > 1130 -Provides: kdebase3-beagle = 3.5.10 -Obsoletes: kdebase3-beagle <= 3.5.10 -%endif -License: GPLv2+ -Group: System/GUI/KDE -Summary: The KDE Core Components -BuildRoot: %{_tmppath}/%{name}-%{version}-build -Url: http://www.kde.org/ -Version: 3.5.10.1 -Release: 17 -%define kde_version 3.5.10 -Requires: kdebase3-runtime == %{version} -Source0: kdebase-%{kde_version}.tar.bz2 -Source1: baselibs.conf -Source3: startkde.suse.sh -Source4: kdebase3.fillup -Source6: ksysguardd.init -# we append this file for older dist verions -Source8: mp3-info.tar.bz2 -Source9: wizard_small.png -# kicker gets messed up, if it got deinstalled -Source11: kickerrc -# from HEAD/3.2: -Source12: console8x16.pcf.gz -Source13: fileshareset2.tar.bz2 -Source914: kdm-pam-np-legacy -Source15: ksysguardd.reg -Source16: stopkde.suse.sh -Source17: zh_TW.flag.png -Source18: fileshareset.8.gz -Source19: kcheckpass.8.gz -Source20: kickoff-data.tar.bz2 -Source21: kcheckpass-pam-11.1 -Source921: kcheckpass-pam-11.0 -Source9921: kcheckpass-pam-legacy -Source22: bnc.desktop -Source23: sourceforge.desktop -Source24: devmon-automounter.sh -Patch0: 3_5_BRANCH.diff -Patch3: startkde.diff -Patch5: media-iPod.diff -Patch6: ksysguardd-openslp.diff -Patch7: fix-kio-smb-auth.diff -Patch8: konsole_keytab.diff -Patch10: kdesud-security.diff -Patch11: clock-applet-style.diff -Patch12: dont-always-start-kaccess.diff -Patch14: autorun.patch -Patch15: artwork.diff -# TODO -Patch16: kfontinst.diff -Patch17: nsplugin-Preference.diff -Patch20: ksplashml.patch -Patch21: media_suse.diff -Patch22: libkonq-kdemm.diff -Patch39: kdesktop_icons.diff -Patch40: suse_default_move.diff -Patch44: clock-suse-integrate.diff -Patch45: klipperrc.diff -Patch46: lock-xvkbd.diff -Patch51: kcontrol.diff -Patch60: short-menus.diff -# from http://fred.hexbox.de/kde_patches/kmenu-search-fs20050503.diff -Patch61: kmenu-search-fs20050503-fixed.diff -Patch62: fix-kcontrol-yast.diff -Patch63: quick_browser_menu.diff -Patch64: default_fonts.diff -#kdm -Patch69: kdm-cope-with-new-grub.diff -Patch70: kdm-aliasing.diff -Patch71: kdm-mark_autologin.diff -Patch72: kdm-all-users-nopass.diff -Patch74: kdm-sysconfig-values.diff -# svn diff $BASE/branches/KDE/3.5/kdebase/kdm@599257 $BASE/branches/work/coolos_kdm | sed -e "s,^+++ ,+++ kdm/," -Patch75: kdm-make_it_cool.diff -Patch76: kdm-admin-mode.diff -Patch77: kdm-suspend-hal.diff -Patch78: kdm-relaxed-auth.diff -Patch79: kdm-wordbreak.diff -Patch80: non-fast-malloc.diff -Patch81: ksmserver-defaulttohalt.diff -Patch82: fix-lockup-from-gnome-apps.diff -Patch83: ksmserver-suspend.diff -Patch84: default-kdeprintfax.diff -Patch85: ksmserver-tooltips.diff -Patch88: hide-only-showin-entries.diff -Patch92: kcminit-ignore-arts.diff -Patch94: mach_blass.diff -Patch96: khelpcenter-gnome-support.patch -Patch996: khelpcenter-gnome-support-legacy.patch -Patch98: workaround-pdf-on64bit-nsplugin-bug.diff -Patch99: xcursor.diff -Patch100: ksysguard-slp-ratelimit.diff -Patch104: locale-dont-show-flag.diff -Patch105: kscreensaver-random-NG.diff -Patch111: fix_default_theme_reset.diff -Patch114: improve-panelservicemenu-geticonset.diff -Patch116: teach-minicli-lock.diff -Patch117: access.diff -Patch120: kmenu-search-slowdown-fix.diff -Patch123: less_verbal_kdesu.patch -Patch125: kicker-defaults.diff -Patch126: kdebase_khc_rellinks.diff -Patch127: khelpcenter-use-suseconfig-indexer.diff -Patch131: background_default.diff -Patch141: khelpcenter-use-susehelp.diff -Patch144: make-wallpapers-hideable.diff -Patch145: kdebase_networkstatus_branch.diff -Patch149: kdeeject.diff -Patch155: use-full-hinting-by-default.diff -Patch156: kcmshell_use_kde-sound.diff -Patch157: kcmsamba_log.diff -Patch160: khelpcenter-localindices.patch -Patch161: applet-lock-logout.diff -# svn diff $BASE/branches/KDE/3.5/kdebase/kicker@849788 $BASE/branches/work/suse_kickoff_qstyle/kicker | clean_patch -Patch162: kickoff.diff -Patch1629: kickoff-beagle.diff -# svn diff $BASE/branches/KDE/3.5/kdebase/kcontrol/kicker@755866 $BASE/branches/work/suse_kickoff_qstyle/kcontrol/kicker -Patch158: kickoff-kcm.diff -# svn diff -r 551296:HEAD khelpcenter -Patch159: khelpcenter-beagle.diff -Patch163: xinerama.patch -Patch165: optional-compmgr.diff -Patch166: lowdiskspace.patch -Patch167: ksmserver-timed.diff -Patch169: systray_order.diff -Patch170: khotkeys-multimedia-action.diff -Patch171: khotkeys-multimedia-action2.diff -Patch172: select-wm-gui.diff -Patch173: suspend-unmount.diff -Patch174: ksmserver-kdeinit.diff -Patch177: kio-media-errorhandling.diff -Patch179: restore-description-parens.diff -Patch180: kompmgr_use_defaults.diff -Patch189: runupdater.patch -Patch190: kcontrol-energy.diff -Patch195: ioslaveinfo-icon.diff -Patch197: rotate-wacom-pointers.diff -Patch198: konsole-schema-update.diff -Patch199: media-cryptosupport.diff -Patch200: kdm-use-rpmoptflags.diff -Patch203: show-konqueror-in-menu.diff -Patch204: fix-desktop-icons.diff -Patch205: kcmkdm-default-grub.diff -Patch206: simplify-randr-settings.diff -Patch207: spellcheck-default-utf8.diff -Patch208: kdm-audit-log.diff -Patch209: kwinbindings.diff -Patch211: konq-combo-editor.diff -Patch212: minicli-combo-editor.diff -Patch214: kdm-color-scheme.diff -Patch215: kdm-consolekit.diff -Patch216: krandr-0.5.2.1.diff.bz2 -Patch217: kickoff-install-software.diff -Patch218: kdm-align-userlist-labels.diff -Patch219: kxkb-include-latin-layout.diff -Patch220: mediamanager-mount-point-utf8.diff -Patch222: khelpcenter-delayed-indexcheck.cpp -Patch225: system-folder_man.diff -Patch227: arts-start-on-demand.diff -Patch228: media-teardown_crypto.diff -Patch229: beagle-0.3.diff -Patch230: remove-beagle-stuff.diff -Patch231: kde3-session.diff -Patch232: kde3-session-restore.diff -Patch233: uninit.diff -Patch234: kpamgreeter.diff -Patch235: use-pam-before-classic.diff -Patch236: kdesu-remember-keep-password.diff -Patch237: suspend-kpowersave.diff -Patch238: knetattach-show.diff -Patch239: gcc44.diff -Patch240: bnc584223.diff -Patch241: openssl1.patch -Patch242: nsplugin-init-gtk.diff -Patch243: taskbar.patch -Patch244: mtab-reenable.patch - -%description -This package contains kdebase, one of the basic packages of the K -Desktop Environment. It contains, among others, kwin (the KDE window -manager), Konqueror (the KDE Web browser), and KControl (the -configuration program) - -This package is needed if you want to use the KDE Desktop. It is not -needed if you only want to start some KDE applications. - - - -Authors: --------- - The KDE Team <kde@kde.org> - -%package -n misc-console-font -License: GPLv2+ -Group: System/GUI/KDE -Summary: A font for terminal usage - -%description -n misc-console-font -This package contains the Misc Console font as shipped with KDE. - - - -Authors: --------- - The KDE Team <kde@kde.org> - -%package runtime -License: GPLv2+ -Summary: Runtime Dependencies of KDE3 Applications -Group: System/GUI/KDE -Provides: kio_fish -Obsoletes: kio_fish -Provides: kdebase3:/opt/kde3/%_lib/libkonq.so.4 - -%description runtime -This package contains runtime dependencies of KDE3 applications like -KIO-slaves. - - - -Authors: --------- - The KDE Team <kde@kde.org> - -%package workspace -License: GPLv2+ -Summary: Workspace Components of KDE3 Desktop -Group: System/GUI/KDE -Requires: kdebase3 == %{version} -Provides: kdebase3:/opt/kde3/bin/kicker -Recommends: kdebase3-ksysguardd == %{version} -%if 0%{?with_hal} > 0 -Recommends: kdebase3-with-hal-enabled -%endif - -%description workspace -This package contains the wrkspace components of kdebase3 like -kdesktop, kicker and kwin. - - -Authors: --------- - The KDE Team <kde@kde.org> - -%package apps -License: GPLv2+ -Summary: Major Applications KDE3 Desktop -Group: System/GUI/KDE -Requires: kdebase3 == %{version} -Provides: kdebase3:/opt/kde3/bin/konsole - -%description apps -This package contains the major applications kdebase3 like -Kate, Konqueror and KWrite. - - -Authors: --------- - The KDE Team <kde@kde.org> - -%package devel -License: GPLv2+ -Requires: kdelibs3-devel kdebase3 = %version kdebase3-apps = %version kdebase3-runtime = %version kdebase3-workspace = %version -Summary: KDE Base Package: Base, Build Environment -Group: System/GUI/KDE - -%description devel -This package contains KDEbase, one of the basic packages of the K -Desktop Environment. It contains, among other things, KWIN, the KDE -window manager; Konqueror, the KDE web and file browser; and KControl, -the KDE configuration program. - -This package is not needed if you do not want to compile high level KDE -applications. - - - -Authors: --------- - The KDE Team <kde@kde.org> - -%package kdm -License: GPLv2+ -# usesubdirs kdm -Summary: The KDE login and display manager -Provides: kdebase3:/opt/kde3/bin/kdm -Provides: kdebase:/opt/kde2/bin/kdm -Provides: kdebase3-kdm-SLD:/opt/kde3/bin/kdm -Requires: xorg-x11 -Requires: kdebase3-runtime >= %version -Group: System/GUI/KDE -PreReq: %fillup_prereq /bin/grep - -%description kdm -This package contains kdm, the login and session manager for KDE. - - - -Authors: --------- - The KDE Team <kde@kde.org> - -%package samba -License: GPLv2+ -# usesubdirs kioslave/smb kcontrol/samba -Summary: KDE Base package: Windows Connection Module -Group: System/GUI/KDE - -%description samba -This package provides the "smb://" protocol, to connect to and from -Windows and Samba shares. - - - -Authors: --------- - The KDE Team <kde@kde.org> - -%package extra -License: GPLv2+ -# usesubdirs kpersonalizer kcontrol/thememgr -Summary: KDE Base package: Extra Applications -Group: System/GUI/KDE - -%description extra -This package contains applications which are usually not needed on -SUSE. - -- kpersonalizer - sets different settings - -- khotkeys aRts support - for voice triggered shortcuts - - - -Authors: --------- - The KDE Team <kde@kde.org> - -%package nsplugin -License: GPLv2+ -%ifarch x86_64 ppc64 s390x ia64 -Requires: nspluginwrapper -%endif -Supplements: kdebase3 >= %version -Requires: kdebase3 = %version -Summary: Netscape plugin support for KDE -Group: System/GUI/KDE - -%description nsplugin -This package contains support for Netscape plug-ins in konqueror. You -have to enable JavaScript for this. - - - -Authors: --------- - The KDE Team <kde@kde.org> - - -%package ksysguardd -License: GPLv2+ -PreReq: %insserv_prereq %fillup_prereq aaa_base -Summary: KDE base package: ksysguard daemon -Group: System/GUI/KDE -Provides: kdebase4-workspace-ksysguardd - -%description ksysguardd -This package contains the ksysguard daemon. It is needed for ksysguard. - -This package can be installed on servers without any other KDE packages -to guard the system from remote computers. - - - -Authors: --------- - The KDE Team <kde@kde.org> - - -%package session -License: GPLv2+ -Summary: The KDE Session -Group: System/GUI/KDE -Provides: kdebase3:/usr/bin/kde -Requires: kdebase3-workspace - -%description session -This package contains the startup scripts necessary to start a KDE -session from kdm. - - - -Authors: --------- - The KDE Team <kde@kde.org> - -%if %suse_version < 1140 - -%package beagle -License: GPLv2+ -Summary: Beagle dependent plugins for KDE desktop -Group: System/GUI/KDE -Requires: beagle >= 0.3.0 -Requires: kdebase3-workspace = %version -Supplements: packageand(kdebase3-session:beagle) -BuildRequires: libbeagle-devel - -%description beagle -This package contains kdebase plugins which provide additional search -functionality via Beagle. - - - -Authors: --------- - The KDE Team <kde@kde.org> - -%endif - -%package -n fileshareset -License: GPLv2+ -Summary: Set and list fileshares -Group: System/Management -Version: 2.0 -Release: 578 - -%description -n fileshareset -This package contains the the fileshareset utility to allow users to -add or remove file shares. It's also possible to list currently shared -locations. /etc/security/fileshare.conf is the main configuration file. - - - -Authors: --------- - Uwe Gansert <uwe.gansert at SuSE dot de> - -%define sysconfdir /etc - -%prep -%setup -q -b 8 -b 13 -n kdebase-%{kde_version} -%patch0 -%patch3 -%patch5 -# causes hangs (bnc#158239) -#%patch6 -#%patch100 -%patch7 -%patch8 -%patch10 -%patch11 -%patch12 -%patch14 -# do we really still need it ? -#%patch16 -%patch15 -%patch17 -%patch20 -%patch21 -%patch85 -%patch39 -%patch40 -%patch44 -%patch45 -%patch46 -%patch51 -%patch63 -%patch60 -%patch64 -%patch94 -%patch98 -# all the kdm changes -%patch75 -%patch70 -%patch71 -%patch72 -%patch74 -%patch76 -%patch78 -%patch79 -# default-to-halt -%patch81 -%patch82 -%if %suse_version > 1010 -%patch83 -%patch77 -%endif -%patch200 -%patch215 -%patch84 -%patch61 -%patch120 -%patch22 -%patch92 -%patch88 -%if %suse_version > 1020 -%patch96 -%else -%patch996 -%endif -# xcursor -%patch99 -%ifnarch %ix86 x86_64 -%patch80 -%endif -%patch62 -%patch69 -%patch104 -%patch105 -%patch111 -%patch114 -%patch116 -%patch117 -%patch123 -%patch126 -%patch131 -%patch141 -p1 -%patch127 -%patch144 -%patch145 -%patch149 -%patch155 -%patch156 -%patch157 -%patch160 -%if %suse_version > 1010 -%patch161 -pushd kicker -%patch162 -pushd ../kcontrol/kicker -%patch158 -popd -popd -%if %suse_version > 1010 -%if %suse_version < 1140 -%patch159 -%endif -%endif -%patch165 -%patch166 -%patch167 -tar xvfj %SOURCE20 -%endif -%patch163 -%patch125 -%patch169 -%patch170 -%patch171 -%patch172 -%patch173 -%patch174 -%patch177 -%patch179 -%patch180 -%if %suse_version > 1010 -%patch189 -%endif -%patch190 -%patch195 -%if %suse_version > 1020 -%patch198 -%patch199 -%endif -%patch203 -%patch204 -%patch205 -%patch207 -%patch208 -%patch209 -%patch211 -%patch212 -%patch214 -pushd kcontrol -%patch216 -popd -%patch217 -%patch218 -%patch219 -%patch220 -%patch222 -%patch225 -%patch197 -%patch206 -%patch227 -%patch228 -%if %suse_version > 1030 -%if %suse_version < 1140 -pushd kicker -%patch1629 -popd -%patch229 -%patch230 -%endif -%endif -%patch231 -%patch232 -%patch233 -%patch234 -%patch235 -%patch236 -%if %suse_version > 1010 -%patch237 -%endif -%patch238 -%patch239 -%patch240 -p1 -%patch241 -p0 -%patch242 -p0 -%patch243 -%patch244 -p1 - -rm -rf kappfinder -rm pics/crystalsvg/cr??-*emacs.png -cp %SOURCE17 l10n/tw/flag.png -. /etc/opt/kde3/common_options -cd ../fileshareset2 -aclocal -autoconf -automake -a -c -cd ../kdebase-%{kde_version} -update_admin - -%build -. /etc/opt/kde3/common_options -DEBUG="--disable-debug" -FINAL="--enable-final" -PARANOIA="" -%ifnarch s390 -PARANOIA="--with-cdparanoia" -%endif - LDAP="--with-ldap" -%if %suse_version > 1010 - MOTIF_INCLUDE="/usr/include" -X_SERVER=/usr/bin/X RUN_KAPPFINDER=no \ -%else - MOTIF_INCLUDE="/usr/X11R6/include" -X_SERVER=/usr/X11R6/bin/X RUN_KAPPFINDER=no \ -%endif -./configure \ - $configkde \ - $PARANOIA \ - $LDAP \ - $FLAGS \ - $XINERAMA \ -%if %suse_version > 1010 - --with-motif-libraries=/usr/%{_lib}/ \ -%else - --with-motif-libraries=/usr/X11R6/%{_lib}/ \ -%endif - --with-motif-includes=$MOTIF_INCLUDE \ - --with-samba-libs \ - --with-pam=xdm \ - --with-kdm-xconsole \ - --with-kdm-pam=xdm \ - --with-kcp-pam=kcheckpass \ - --with-kss-pam=kcheckpass - do_make %{?_smp_mflags} -cd ../fileshareset2 - ./configure --prefix=%{fileshare_prefix} - make %{?_smp_mflags} - -%install -. /etc/opt/kde3/common_options -# relabel smb icon -grep -v ^Icon= kioslave/smb/smb-network.desktop | grep -v ^Name > w -mv w kioslave/smb/smb-network.desktop -echo "Icon=samba" >> kioslave/smb/smb-network.desktop -echo "Name=SMB Shares" >> kioslave/smb/smb-network.desktop -# install -do_make DESTDIR=$RPM_BUILD_ROOT $INSTALL_TARGET -rm $RPM_BUILD_ROOT/opt/kde3/share/applnk/System/kmenuedit.desktop -rm $RPM_BUILD_ROOT/opt/kde3/share/applnk/System/kpersonalizer.desktop -rm $RPM_BUILD_ROOT/opt/kde3/share/applnk/Utilities/kpager.desktop -rm $RPM_BUILD_ROOT/opt/kde3/share/applnk/Internet/keditbookmarks.desktop -rm $RPM_BUILD_ROOT/opt/kde3/share/applnk/Toys/ktip.desktop -install -m 0644 %SOURCE12 $RPM_BUILD_ROOT/opt/kde3/share/fonts/ -%if %suse_version > 1100 -install -D -m 0644 %SOURCE21 $RPM_BUILD_ROOT/etc/pam.d/kcheckpass -%else -%if %suse_version > 1010 -install -D -m 0644 %SOURCE921 $RPM_BUILD_ROOT/etc/pam.d/kcheckpass -%else -install -D -m 0644 %SOURCE914 $RPM_BUILD_ROOT/etc/pam.d/xdm-np -install -D -m 0644 %SOURCE9921 $RPM_BUILD_ROOT/etc/pam.d/kcheckpass -%endif -%endif -install -m 0644 %SOURCE22 $RPM_BUILD_ROOT/opt/kde3/share/services/searchproviders/ -install -m 0644 %SOURCE23 $RPM_BUILD_ROOT/opt/kde3/share/services/searchproviders/ -%if %suse_version < 1011 -mkdir -p $RPM_BUILD_ROOT/usr/X11R6/bin -%endif -mkdir -p ${RPM_BUILD_ROOT}/usr/bin \ - ${RPM_BUILD_ROOT}/usr/sbin \ - ${RPM_BUILD_ROOT}/var/run/xdmctl -%if %suse_version > 1010 - ln -fs /opt/kde3/bin/startkde $RPM_BUILD_ROOT/usr/bin/kde - ln -fs /opt/kde3/bin/startkde $RPM_BUILD_ROOT/usr/bin/startkde3 -%else - ln -fs /opt/kde3/bin/startkde $RPM_BUILD_ROOT/usr/X11R6/bin/kde -%endif -ln -sf rcxdm ${RPM_BUILD_ROOT}/usr/sbin/rckdm -#%if %suse_version > 1020 -#rm ${RPM_BUILD_ROOT}/opt/kde3/bin/ksysguardd -#rm ${RPM_BUILD_ROOT}/etc/ksysguarddrc -#%else -mv ${RPM_BUILD_ROOT}/opt/kde3/bin/ksysguardd ${RPM_BUILD_ROOT}/usr/bin/ksysguardd -ln -sf /usr/bin/ksysguardd ${RPM_BUILD_ROOT}/opt/kde3/bin/ksysguardd -#%endif -install -d ${RPM_BUILD_ROOT}/opt/kde3/env -%if %suse_version < 1001 -install -m 0755 %SOURCE3 ${RPM_BUILD_ROOT}/opt/kde3/env -%endif -install -D -m 0755 %SOURCE16 ${RPM_BUILD_ROOT}/opt/kde3/shutdown/stopkde.suse.sh -mkdir -p "${RPM_BUILD_ROOT}"/etc/security/ -echo "RESTRICT=yes" > "${RPM_BUILD_ROOT}"/etc/security/fileshare.conf -# -# install pixmaps and configuration -# -mkdir -p $RPM_BUILD_ROOT/var/adm/fillup-templates -mkdir -p $RPM_BUILD_ROOT/etc/init.d/ -install -m 0644 %SOURCE9 ${RPM_BUILD_ROOT}/opt/kde3/share/apps/kdewizard/pics/wizard_small.png -#%if %suse_version < 1031 -install -m 0744 %SOURCE6 $RPM_BUILD_ROOT/etc/init.d/ksysguardd -#%endif -mkdir -p $RPM_BUILD_ROOT/opt/kde3/share/apps/kdm/faces/ -ln -s ../pics/users/root1.png $RPM_BUILD_ROOT/opt/kde3/share/apps/kdm/faces/root.face.icon -ln -s ../pics/users/default2.png $RPM_BUILD_ROOT/opt/kde3/share/apps/kdm/faces/.default.face.icon -#%if %suse_version < 1031 -ln -sf /etc/init.d/ksysguardd $RPM_BUILD_ROOT/usr/sbin/rcksysguardd -install -D -m 644 %SOURCE15 $RPM_BUILD_ROOT/etc/slp.reg.d/ksysguardd.reg -#%endif -# even if we use smbro -install -D -m 644 kioslave/smb/smb-network.desktop $RPM_BUILD_ROOT/opt/kde3/share/apps/konqueror/dirtree/remote/smb-network.desktop -# -# install kde session file -# -install -m 0755 -d $RPM_BUILD_ROOT/usr/share/xsessions/ -mv $RPM_BUILD_ROOT/opt/kde3/share/apps/kdm/sessions/kde.desktop $RPM_BUILD_ROOT/usr/share/xsessions/ -# for those we have a package for remove the backup and rely on the package -for wm in gnome xfce4 xfce wmaker blackbox fvwm95 fvwm icewm enlightenment; do - rm -f $RPM_BUILD_ROOT/opt/kde3/share/apps/kdm/sessions/$wm.desktop -done -%suse_update_desktop_file $RPM_BUILD_ROOT/usr/share/xsessions/kde.desktop -# -# delete unwanted/double files -# -rm $RPM_BUILD_ROOT/opt/kde3/share/apps/kdesktop/DesktopLinks/Home.desktop -rm $RPM_BUILD_ROOT/opt/kde3/share/apps/kdesktop/DesktopLinks/System.desktop -rm $RPM_BUILD_ROOT/opt/kde3/share/icons/*/*/apps/kvirc.* -mkdir -p $RPM_BUILD_ROOT/usr/share -mv $RPM_BUILD_ROOT/opt/kde3/share/wallpapers $RPM_BUILD_ROOT/usr/share -cd ../fileshareset2/src -rm -f $RPM_BUILD_ROOT/opt/kde3/bin/fileshare{set,list} -make DESTDIR=$RPM_BUILD_ROOT install -chmod 0755 $RPM_BUILD_ROOT/%{fileshare_prefix}/bin/fileshareset -cd .. -FILLUP_DIR=$RPM_BUILD_ROOT/var/adm/fillup-templates -install -m 644 -D %SOURCE4 $FILLUP_DIR/sysconfig.windowmanager-kdebase3 -mkdir -p $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/{16x16,22x22,32x32,48x48,64x64,128x128}/apps/ -for i in {16,32,48,64,128}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/mimetypes/misc.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmcomponentchooser.png;done -for i in {16,22,32,48,128}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/actions/launch.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmperformance.png;done -cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/16x16/actions/services.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/16x16/apps/kcmkded.png -for i in {16,22,32,48}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/actions/exit.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmsmserver.png;done -for i in {16,22,32}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/actions/spellcheck.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmspellchecking.png;done -for i in {16,22,32,48,64,128}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/filesystems/desktop.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmdesktopbehavior.png;done -for i in {16,22,32,48,64,128}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/filesystems/desktop.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmdesktop.png;done -for i in {16,22,32,48,64,128}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/apps/kmenu.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmtaskbar.png;done -for i in {16,22,32,48,64,128}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/mimetypes/colorscm.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmcolors.png;done -for i in {16,22,32,48,128}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/actions/launch.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmlaunch.png;done -for i in {16,22,32}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/actions/filter.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmkhtml_filter.png;done -for i in {16,22,32}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/actions/run.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmcgi.png;done -for i in {16,22}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/actions/history.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmhistory.png;done -for i in {16,22,32,48,64,128}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/filesystems/network.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmnetpref.png;done -for i in {16,32,48,64,128}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/devices/blockdevice.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmkdnssd.png;done -for i in {16,22,32,48,64}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/devices/joystick.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmjoystick.png;done -for i in {16,32,48,64,128}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/devices/mouse.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmmouse.png;done -for i in {16,22,32,48,64,128}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/devices/system.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmmedia.png;done -for i in {16,22,32}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/actions/encrypted.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmcrypto.png;done -for i in {16,22,32,48,64,128}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/filesystems/trashcan_empty.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmprivacy.png;done -for i in {16,22,32,48,64,128}; do cp $BUILD_ROOT/opt/kde3/share/icons/crystalsvg/"$i"x"$i"/filesystems/network.png $RPM_BUILD_ROOT/opt/kde3/share/icons/hicolor/"$i"x"$i"/apps/kcmnic.png;done -# -# solve file conflicts with theme packages ... -# -mv $RPM_BUILD_ROOT/opt/kde3/share/apps/ksplash/pics $RPM_BUILD_ROOT/opt/kde3/share/apps/ksplash/pics-default -ln -s pics-default $RPM_BUILD_ROOT/opt/kde3/share/apps/ksplash/pics -chmod 0755 $RPM_BUILD_ROOT/%{fileshare_prefix}/bin/fileshareset -%suse_update_desktop_file kate TextEditor -%suse_update_desktop_file kwrite TextEditor -%suse_update_desktop_file Help Documentation Viewer -%suse_update_desktop_file Home System FileManager core -%suse_update_desktop_file KControl X-SuSE-core -%suse_update_desktop_file konqbrowser WebBrowser -%suse_update_desktop_file Kfind System Filesystem core -%suse_update_desktop_file kinfocenter System Monitor -%suse_update_desktop_file kmenuedit Core-Configuration -%suse_update_desktop_file konsole TerminalEmulator -%suse_update_desktop_file konsolesu TerminalEmulator -%suse_update_desktop_file ksysguard System Monitor -%suse_update_desktop_file -r klipper System TrayIcon -%suse_update_desktop_file kpager Utility DesktopUtility -%suse_update_desktop_file -u ktip System Utility -%suse_update_desktop_file konqfilemgr System FileManager -%suse_update_desktop_file konquerorsu System FileManager -%suse_update_desktop_file kdeprintfax PrintingUtility -%suse_update_desktop_file kjobviewer PrintingUtility -%suse_update_desktop_file kpersonalizer DesktopUtility -%suse_update_desktop_file kcmkicker X-KDE-settings-desktop -%suse_update_desktop_file knetattach System Network -%suse_update_desktop_file -r kfontview Graphics Viewer -%suse_update_desktop_file -r krandrtray Applet X-KDE-settings-desktop -%suse_update_desktop_file $RPM_BUILD_ROOT/opt/kde3/share/apps/remoteview/smb-network.desktop -for i in $RPM_BUILD_ROOT/opt/kde3/share/applnk/System/ScreenSavers/*.desktop ; do - sed -e '/^\[Desktop Entry\]/a\ -Categories=Screensaver;' $i > ${i}_ - mv ${i}_ $i - %suse_update_desktop_file "$i" -done -install -d $RPM_BUILD_ROOT/opt/kde3/share/applnk/apps -ln -sf /opt/kde3/share/applnk/System/ScreenSavers $RPM_BUILD_ROOT/opt/kde3/share/applnk/apps/ScreenSavers - -for i in $RPM_BUILD_ROOT/opt/kde3/share/applications/kde/*.desktop \ - $RPM_BUILD_ROOT/opt/kde3/share/apps/konqueror/servicemenus/*.desktop \ - $RPM_BUILD_ROOT/opt/kde3/share/apps/kicker/*/*.desktop \ - $RPM_BUILD_ROOT/opt/kde3/share/apps/kicker/*/*/*.desktop \ - $RPM_BUILD_ROOT/opt/kde3/share/apps/kicker/*/*/*.desktop \ - $RPM_BUILD_ROOT/usr/share/wallpapers/*.desktop \ - $RPM_BUILD_ROOT/opt/kde3/share/apps/konqsidebartng/virtual_folders/services/*.desktop; do - [ "`sed -n '/^\[Desktop Entry\]/,/^\[/ s,NoDisplay=\(.*\),\1,p' "$i"`" = "true" ] && continue - [ "`sed -n '/^\[Desktop Entry\]/,/^\[/ s,Hidden=\(.*\),\1,p' "$i"`" = "true" ] && continue - grep -q X-SuSE-translate "$i" && continue - %suse_update_desktop_file "$i" -done -rm -f $RPM_BUILD_ROOT/opt/kde3/share/config/kdm/README -rm -f $RPM_BUILD_ROOT/opt/kde3/share/apps/kdm/sessions/icewm.desktop -# -# gimp 2.0 does have a different named icon -# -for i in $RPM_BUILD_ROOT//opt/kde3/share/icons/*/*/apps/gimp.png; do - ln "$i" "${i%/*}/wilber-icon.png" -done -mkdir -p -m 755 $RPM_BUILD_ROOT/%_mandir/man8 -cp %SOURCE18 $RPM_BUILD_ROOT/%_mandir/man8 -cp %SOURCE19 $RPM_BUILD_ROOT/%_mandir/man8 -# don't conflict with man pages from KDE4 packages -rm $RPM_BUILD_ROOT/%_mandir/man1/kate.* -rm $RPM_BUILD_ROOT/%_mandir/man1/kdesu.* -rm $RPM_BUILD_ROOT/%_mandir/man1/kbookmarkmerger.* -rm $RPM_BUILD_ROOT/%_mandir/man1/kfind.* -kde_post_install -%if %suse_version > 1020 -%fdupes $RPM_BUILD_ROOT/opt/kde3/share -%endif -# move konqueror.desktop back to old position (#281572) -mv $RPM_BUILD_ROOT/opt/kde3/share/applications/kde/konqueror.desktop $RPM_BUILD_ROOT/opt/kde3/share/applnk/konqueror.desktop - -%if 0%{?with_hal} == 0 -cp -f %{SOURCE24} $RPM_BUILD_ROOT/opt/kde3/bin -chmod +x $RPM_BUILD_ROOT/opt/kde3/bin/devmon-automounter.sh -sed -i 5i\ '/opt/kde3/bin/devmon-automounter.sh &' $RPM_BUILD_ROOT/opt/kde3/bin/startkde -%endif - -%pre -# we have this as link -if test -e opt/kde3/share/apps/ksplash/pics -a ! -L opt/kde3/share/apps/ksplash/pics ; - then - if test -e opt/kde3/share/apps/ksplash/pics-default; then - rm -rf opt/kde3/share/apps/ksplash/pics - else - mv opt/kde3/share/apps/ksplash/pics opt/kde3/share/apps/ksplash/pics-default - fi -fi -kdmrc=/opt/kde3/share/config/kdm/kdmrc -# if the /opt/kde3 one is obviously wrong and we have one in /etc we move that one over to -# avoid confusion on update what's the right kdmrc -if test -f $kdmrc && grep -q "Session=/opt/kde3/share/config/kdm/Xsession" $kdmrc && test -f /etc$kdmrc; then - mv /etc$kdmrc $kdmrc -fi - -%post -/sbin/ldconfig -%run_permissions - -%post kdm -%{fillup_only -an windowmanager-kdebase3} -/opt/kde3/bin/genkdmconf -if test -f /etc/sysconfig/displaymanager ; then - . /etc/sysconfig/displaymanager -fi -%{fillup_only -n displaymanager -s kdebase3-SuSE} -%{remove_and_set -n displaymanager KDM_SHUTDOWN} -if test -n "$KDM_SHUTDOWN" -a "$KDM_SHUTDOWN" != "no"; then - if test "$KDM_SHUTDOWN" = "local" ; then - KDM_SHUTDOWN=all - fi - case "$KDM_SHUTDOWN" in - "auto" | "none" | "root") - sed -i -e "s/^DISPLAYMANAGER_SHUTDOWN=.*/DISPLAYMANAGER_SHUTDOWN=\"$KDM_SHUTDOWN\"/" /etc/sysconfig/displaymanager - ;; - esac -fi - -%post -n fileshareset -%run_permissions - -%postun kdm -%insserv_cleanup - -%postun -%insserv_cleanup -/sbin/ldconfig -%if %suse_version < 1031 - -%post ksysguardd -%{fillup_and_insserv -sn kdebase3-ksysguardd ksysguardd RUN_KSYSGUARDD} -%verifyscript -%verify_permissions -e /opt/kde3/bin/kcheckpass -%verify_permissions -e /opt/kde3/bin/kdesud -%verify_permissions -e /opt/kde3/bin/khc_indexbuilder - -%postun ksysguardd -%restart_on_update ksysguardd -%insserv_cleanup - -%preun ksysguardd -%stop_on_removal ksysguardd -%endif - -%post runtime -p /sbin/ldconfig - -%postun runtime -p /sbin/ldconfig - -%post workspace -p /sbin/ldconfig -%if %suse_version > 1110 && 0%{?with_hal} > 0 -chkconfig haldaemon on -%endif - -%postun workspace -p /sbin/ldconfig - -%post apps -p /sbin/ldconfig - -%postun apps -p /sbin/ldconfig - -%clean -rm -rf $RPM_BUILD_ROOT - -%files -n misc-console-font -%defattr(-,root,root) -%doc COPYING -/opt/kde3/share/fonts/console8x16.pcf.gz - -%files -%defattr(-,root,root) -%doc AUTHORS COPYING README README.pam ../lame.spec ../README.mp3 -%exclude /opt/kde3/share/fonts/console8x16.pcf.gz -%dir /opt/kde3/share/icons/hicolor/* -%dir /opt/kde3/%_lib/kconf_update_bin -%dir /opt/kde3/share/apps/plugin -%dir /opt/kde3/share/applnk/ -%dir /opt/kde3/share/applnk/Settings -%dir /opt/kde3/share/applnk/Settings/WebBrowsing -%dir /opt/kde3/share/applnk/System/ScreenSavers -%dir /opt/kde3/share/applnk/apps -/opt/kde3/share/applnk/apps/ScreenSavers -/etc/xdg/menus/*.menu -/etc/xdg/menus/applications-merged -%verify(not mode) %attr(2755,root,nogroup) /opt/kde3/bin/kdesud -%verify(not mode) %attr(0755,root,man) /opt/kde3/bin/khc_indexbuilder -/opt/kde3/env -/opt/kde3/bin/arts-start -/opt/kde3/bin/drkonqi -/opt/kde3/bin/kaccess -/opt/kde3/bin/kblankscrn.kss -/opt/kde3/bin/kbookmarkmerger -/opt/kde3/bin/kcminit -/opt/kde3/bin/kcminit_startup -/opt/kde3/%_lib/kde3/kcminit_startup.* -/opt/kde3/bin/kcontrol* -/opt/kde3/bin/kdeinstallktheme -/opt/kde3/bin/kdepasswd -/opt/kde3/bin/kdcop -/opt/kde3/bin/kdebugdialog -/opt/kde3/bin/kdeeject -/opt/kde3/bin/kdeprintfax -/opt/kde3/bin/keditfiletype -/opt/kde3/bin/khelpcenter -/opt/kde3/bin/kjobviewer -/opt/kde3/bin/kcheckrunning -/opt/kde3/bin/kpm -/opt/kde3/bin/krandom.kss -/opt/kde3/bin/krdb -/opt/kde3/bin/kxkb -/opt/kde3/bin/kdialog -/opt/kde3/bin/klocaldomainurifilterhelper -/opt/kde3/bin/kio_media_mounthelper -/opt/kde3/bin/knetattach -/opt/kde3/bin/ktrash -/opt/kde3/bin/khc_docbookdig.pl -/opt/kde3/bin/khc_mansearch.pl -/opt/kde3/bin/khc_htdig.pl -/opt/kde3/bin/khc_htsearch.pl -/opt/kde3/bin/kapplymousetheme -/opt/kde3/bin/kio_system_documenthelper -%if %suse_version > 1010 -/opt/kde3/bin/runupdater -%endif -/opt/kde3/bin/kstart -/opt/kde3/bin/ksystraycmd -/opt/kde3/%_lib/kde3/cursorthumbnail.* -/opt/kde3/%_lib/kde3/htmlthumbnail.* -/opt/kde3/%_lib/kde3/imagethumbnail.* -/opt/kde3/%_lib/kde3/kcm_a* -/opt/kde3/%_lib/kde3/kcm_bell* -/opt/kde3/%_lib/kde3/kcm_keyboard* -/opt/kde3/%_lib/kde3/kcm_c* -/opt/kde3/%_lib/kde3/kcm_d* -/opt/kde3/%_lib/kde3/kcm_e* -/opt/kde3/%_lib/kde3/kcm_f* -/opt/kde3/%_lib/kde3/kcm_h* -/opt/kde3/%_lib/kde3/kcm_i* -/opt/kde3/%_lib/kde3/kcm_l* -/opt/kde3/%_lib/kde3/kcm_nic.* -/opt/kde3/%_lib/kde3/kcm_p* -/opt/kde3/%_lib/kde3/kcm_smserver.* -/opt/kde3/%_lib/kde3/kcm_spellchecking.* -/opt/kde3/%_lib/kde3/kcm_style.* -/opt/kde3/%_lib/kde3/kcm_usb.* -/opt/kde3/%_lib/kde3/khelpcenter.* -/opt/kde3/%_lib/kde3/kcm_xinerama.* -/opt/kde3/%_lib/kde3/kxkb.* -/opt/kde3/%_lib/kde3/djvuthumbnail.* -/opt/kde3/%_lib/kde3/kaccess.* -/opt/kde3/%_lib/kde3/kcminit.* -/opt/kde3/%_lib/kde3/kcm_nsplugins.* -/opt/kde3/%_lib/kde3/kcontrol.* -/opt/kde3/%_lib/kde3/keditbookmarks.* -/opt/kde3/%_lib/kde3/kfmclient.* -/opt/kde3/%_lib/kde3/kjobviewer.* -/opt/kde3/%_lib/kde3/kprinter.* -/opt/kde3/%_lib/kde3/libkdeprint_part.* -/opt/kde3/%_lib/kde3/libkshorturifilter.* -/opt/kde3/%_lib/kde3/libkuri* -/opt/kde3/%_lib/kde3/libkonsolepart.* -/opt/kde3/%_lib/kde3/textthumbnail.* -/opt/kde3/%_lib/kde3/kcm_joystick.* -/opt/kde3/%_lib/kde3/kcm_useraccount.* -/opt/kde3/%_lib/kde3/kcontroledit.* -/opt/kde3/%_lib/kde3/kded_kwrited.* -/opt/kde3/%_lib/kde3/kstyle_keramik_config.* -/opt/kde3/%_lib/kde3/libkmanpart.* -/opt/kde3/%_lib/kde3/liblocaldomainurifilter.* -%if %suse_version > 1010 -/opt/kde3/%_lib/kde3/runupdater.* -/opt/kde3/%_lib/libkdeinit_runupdater.so -%endif -/opt/kde3/%_lib/libkdeinit_kaccess.so -/opt/kde3/%_lib/libkdeinit_kcminit.so -/opt/kde3/%_lib/libkdeinit_kcminit_startup.so -/opt/kde3/%_lib/libkdeinit_kcontrol.so -/opt/kde3/%_lib/libkdeinit_kcontroledit.so -/opt/kde3/%_lib/libkdeinit_keditbookmarks.so -/opt/kde3/%_lib/libkdeinit_kfmclient.so -/opt/kde3/%_lib/libkdeinit_khelpcenter.so -/opt/kde3/%_lib/libkdeinit_kjobviewer.so -/opt/kde3/%_lib/libkdeinit_kxkb.so -/opt/kde3/%_lib/kde3/libnsplugin.* -/opt/kde3/%_lib/kde3/kded_remotedirnotify.* -/opt/kde3/%_lib/kde3/kded_systemdirnotify.* -/opt/kde3/%_lib/kde3/libkhtmlkttsdplugin.* -/opt/kde3/%_lib/kde3/kcm_media.la -/opt/kde3/%_lib/kde3/kcm_media.so -/opt/kde3/%_lib/kde3/kded_homedirnotify.la -/opt/kde3/%_lib/kde3/kded_homedirnotify.so -/opt/kde3/%_lib/kde3/kded_medianotifier.la -/opt/kde3/%_lib/kde3/kded_medianotifier.so -%if 0%{?with_hal} > 0 -/opt/kde3/%_lib/kde3/media_propsdlgplugin.* -%endif -/opt/kde3/%_lib/kde3/kcm_kded.* -/opt/kde3/%_lib/kde3/kcm_kdnssd.* -/opt/kde3/%_lib/kde3/kcm_keyboard.* -/opt/kde3/%_lib/kde3/kcm_keys.* -/opt/kde3/%_lib/kde3/kcm_kio.* -/opt/kde3/%_lib/kde3/kcm_knotify.* -/opt/kde3/%_lib/kde3/kcm_konq.* -/opt/kde3/%_lib/kde3/kcm_konqhtml.* -/opt/kde3/%_lib/kde3/kcm_kthememanager.* -/opt/kde3/%_lib/kde3/kcm_kurifilt.* -/opt/kde3/share/applications/kde/khtml_filter.desktop -/opt/kde3/share/applications/kde/media.desktop -/opt/kde3/share/applications/kde/joystick.desktop -/opt/kde3/share/applications/kde/kcm_useraccount.desktop -/opt/kde3/share/applications/kde/kdepasswd.desktop -/opt/kde3/share/applications/kde/kthememanager.desktop -/opt/kde3/share/applications/kde/Help.desktop -/opt/kde3/share/applications/kde/KControl.desktop -/opt/kde3/share/applications/kde/arts.desktop -/opt/kde3/share/applications/kde/bell.desktop -/opt/kde3/share/applications/kde/cache.desktop -/opt/kde3/share/applications/kde/colors.desktop -/opt/kde3/share/applications/kde/componentchooser.desktop -/opt/kde3/share/applications/kde/cookies.desktop -/opt/kde3/share/applications/kde/crypto.desktop -/opt/kde3/share/applications/kde/display.desktop -/opt/kde3/share/applications/kde/dma.desktop -/opt/kde3/share/applications/kde/ebrowsing.desktop -/opt/kde3/share/applications/kde/filebrowser.desktop -/opt/kde3/share/applications/kde/filetypes.desktop -/opt/kde3/share/applications/kde/fonts.desktop -/opt/kde3/share/applications/kde/clock.desktop -/opt/kde3/share/applications/kde/icons.desktop -/opt/kde3/share/applications/kde/interrupts.desktop -/opt/kde3/share/applications/kde/installktheme.desktop -/opt/kde3/share/applications/kde/ioports.desktop -/opt/kde3/share/applications/kde/ioslaveinfo.desktop -/opt/kde3/share/applications/kde/kcmaccess.desktop -/opt/kde3/share/applications/kde/kcmcgi.desktop -/opt/kde3/share/applications/kde/kcmcss.desktop -/opt/kde3/share/applications/kde/kcmhistory.desktop -/opt/kde3/share/applications/kde/kcmkded.desktop -/opt/kde3/share/applications/kde/kcmlaunch.desktop -/opt/kde3/share/applications/kde/kcm_kdnssd.desktop -/opt/kde3/share/applications/kde/kcmnotify.desktop -/opt/kde3/share/applications/kde/kcmperformance.desktop -/opt/kde3/share/applications/kde/kcmusb.desktop -/opt/kde3/share/applications/kde/kdeprintfax.desktop -/opt/kde3/share/applications/kde/keyboard.desktop -/opt/kde3/share/applications/kde/keyboard_layout.desktop -/opt/kde3/share/applications/kde/keys.desktop -/opt/kde3/share/applications/kde/kfmclient.desktop -/opt/kde3/share/applications/kde/kfmclient_dir.desktop -/opt/kde3/share/applications/kde/kfmclient_html.desktop -/opt/kde3/share/applications/kde/kfmclient_war.desktop -/opt/kde3/share/applications/kde/khtml_behavior.desktop -/opt/kde3/share/applications/kde/khtml_fonts.desktop -/opt/kde3/share/applications/kde/khtml_java_js.desktop -/opt/kde3/share/applications/kde/khtml_plugins.desktop -/opt/kde3/share/applications/kde/kjobviewer.desktop -/opt/kde3/share/applications/kde/lanbrowser.desktop -/opt/kde3/share/applications/kde/language.desktop -/opt/kde3/share/applications/kde/memory.desktop -/opt/kde3/share/applications/kde/mouse.desktop -/opt/kde3/share/applications/kde/netpref.desktop -/opt/kde3/share/applications/kde/nic.desktop -/opt/kde3/share/applications/kde/partitions.desktop -/opt/kde3/share/applications/kde/pci.desktop -/opt/kde3/share/applications/kde/printers.desktop -/opt/kde3/share/applications/kde/privacy.desktop -/opt/kde3/share/applications/kde/processor.desktop -/opt/kde3/share/applications/kde/proxy.desktop -/opt/kde3/share/applications/kde/scsi.desktop -/opt/kde3/share/applications/kde/smbstatus.desktop -/opt/kde3/share/applications/kde/sound.desktop -/opt/kde3/share/applications/kde/spellchecking.desktop -/opt/kde3/share/applications/kde/style.desktop -/opt/kde3/share/applications/kde/useragent.desktop -/opt/kde3/share/applications/kde/xserver.desktop -/opt/kde3/share/applications/kde/cdinfo.desktop -/opt/kde3/share/applnk/.hidden -/opt/kde3/share/applnk/Settings/Information -/opt/kde3/share/applnk/Settings/LookNFeel -/opt/kde3/share/applnk/Settings/WebBrowsing/khtml_appearance.desktop -/opt/kde3/share/applnk/Settings/WebBrowsing/smb.desktop -/opt/kde3/share/apps/drkonqi -/opt/kde3/share/apps/kc* -/opt/kde3/share/apps/kdcop -/opt/kde3/share/apps/kdeprint* -/opt/kde3/share/apps/kdewizard -/opt/kde3/share/apps/kdisplay -/opt/kde3/share/apps/khelpcenter/searchhandlers/docbook.desktop -/opt/kde3/share/apps/khelpcenter -/opt/kde3/share/apps/kio* -/opt/kde3/share/apps/kjobviewer -/opt/kde3/share/apps/konsole -/opt/kde3/share/apps/khtml/kpartplugins -/opt/kde3/share/apps/kthememanager -/opt/kde3/share/apps/remoteview -/opt/kde3/share/apps/systemview -/opt/kde3/share/apps/kaccess -/opt/kde3/share/config.kcfg/klaunch.kcfg -/opt/kde3/share/config.kcfg/khelpcenter.kcfg -/opt/kde3/share/config.kcfg/keditbookmarks.kcfg -/opt/kde3/share/config.kcfg/launcherapplet.kcfg -/opt/kde3/share/config.kcfg/mediamanagersettings.kcfg -/opt/kde3/share/mimelnk/inode/system_directory.desktop -/opt/kde3/share/services/kded/remotedirnotify.desktop -/opt/kde3/share/services/kded/systemdirnotify.desktop -%if 0%{?with_hal} > 0 -/opt/kde3/share/services/media_propsdlgplugin.desktop - -%endif -%config(noreplace) /opt/kde3/share/config/kshorturifilterrc -%config(noreplace) /opt/kde3/share/config/kxkb_groups -/opt/kde3/share/desktop-directories -%exclude /opt/kde3/share/doc/HTML/en/kioslave -%dir /opt/kde3/share/fonts -%dir /opt/kde3/share/fonts/override -%verify(not md5 size mtime) /opt/kde3/share/fonts/override/fonts.dir -%dir /opt/kde3/share/icons/*/*/* -/opt/kde3/share/config.kcfg/kcm_useraccount.kcfg -/opt/kde3/share/config.kcfg/kcm_useraccount_pass.kcfg -%exclude /opt/kde3/share/icons/*/*/*/style.* -%exclude /opt/kde3/share/icons/*/*/*/looknfeel.* -%exclude /opt/kde3/share/icons/*/*/*/energy.* -%exclude /opt/kde3/share/icons/*/*/*/date.* -%exclude /opt/kde3/share/icons/*/*/*/filetypes.* -%exclude /opt/kde3/share/icons/*/*/*/personal.* -/opt/kde3/share/icons/*/*/*/a*.* -/opt/kde3/share/icons/*/*/*/b*.* -/opt/kde3/share/icons/*/*/*/c*.* -/opt/kde3/share/icons/*/*/*/d*.* -/opt/kde3/share/icons/*/*/*/f*.* -/opt/kde3/share/icons/*/*/*/g*.* -/opt/kde3/share/icons/*/*/*/help_index.* -/opt/kde3/share/icons/*/*/*/icons.* -/opt/kde3/share/icons/*/*/*/input_devices_settings.* -/opt/kde3/share/icons/*/*/*/kcmx.* -/opt/kde3/share/icons/*/*/*/kcmdf.* -/opt/kde3/share/icons/*/*/*/kbinaryclock.* -/opt/kde3/share/icons/*/*/apps/kcmcgi.* -/opt/kde3/share/icons/*/*/apps/kcmcolors.* -/opt/kde3/share/icons/*/*/apps/kcmcomponentchooser.* -/opt/kde3/share/icons/*/*/apps/kcmcrypto.* -/opt/kde3/share/icons/*/*/apps/kcmhistory.* -/opt/kde3/share/icons/*/*/apps/kcmjoystick.* -/opt/kde3/share/icons/*/*/apps/kcmkded.* -/opt/kde3/share/icons/*/*/apps/kcmkdnssd.* -/opt/kde3/share/icons/*/*/apps/kcmkhtml_filter.* -/opt/kde3/share/icons/*/*/apps/kcmlaunch.* -/opt/kde3/share/icons/*/*/apps/kcmmedia.* -/opt/kde3/share/icons/*/*/apps/kcmmouse.* -/opt/kde3/share/icons/*/*/apps/kcmnetpref.* -/opt/kde3/share/icons/*/*/apps/kcmnic.* -/opt/kde3/share/icons/*/*/apps/kcmperformance.* -/opt/kde3/share/icons/*/*/apps/kcmprivacy.* -/opt/kde3/share/icons/*/*/apps/kcmspellchecking.* -/opt/kde3/share/icons/*/*/*/ieee1394.* -/opt/kde3/share/icons/*/*/*/kdeprintfax.* -/opt/kde3/share/icons/*/*/*/kdisknav.* -/opt/kde3/share/icons/*/*/*/knetattach.* -/opt/kde3/share/icons/*/*/*/key_bindings.* -/opt/kde3/share/icons/*/*/*/keyboard_layout.* -/opt/kde3/share/icons/*/*/*/kfm_home.* -/opt/kde3/share/icons/*/*/*/khelpcenter.* -/opt/kde3/share/icons/*/*/*/kjobviewer.* -/opt/kde3/share/icons/*/*/*/konsole.* -/opt/kde3/share/icons/*/*/*/l*.* -/opt/kde3/share/icons/*/*/*/m*.* -/opt/kde3/share/icons/*/*/*/ne*.* -/opt/kde3/share/icons/*/*/*/opera.* -/opt/kde3/share/icons/*/*/*/r*.* -/opt/kde3/share/icons/*/*/*/s*.* -/opt/kde3/share/icons/*/*/*/usb.* -/opt/kde3/share/icons/*/*/*/vnc.* -/opt/kde3/share/icons/*/*/*/w*.* -/opt/kde3/share/icons/*/*/*/e*.* -/opt/kde3/share/icons/*/*/*/kcmdevices.* -/opt/kde3/share/icons/*/*/*/kcmdrkonqi.* -/opt/kde3/share/icons/*/*/*/kcmmemory.* -/opt/kde3/share/icons/*/*/*/kcmmidi.* -/opt/kde3/share/icons/*/*/*/kcmpartitions.* -/opt/kde3/share/icons/*/*/*/kcmpci.* -/opt/kde3/share/icons/*/*/*/kcmprocessor.* -/opt/kde3/share/icons/*/*/*/kcmscsi.* -/opt/kde3/share/icons/*/*/*/kthememgr.* -/opt/kde3/share/icons/*/*/*/kcontrol.* -/opt/kde3/share/icons/*/*/*/kxkb.* -/opt/kde3/share/icons/*/*/*/p*.* -/opt/kde3/share/icons/*/*/*/t*.* -/opt/kde3/share/icons/*/*/*/qtella.* -/opt/kde3/share/icons/*/*/*/x*.* -# these have no PNG -/opt/kde3/share/icons/*/scalable/apps/hardware.svgz -/opt/kde3/share/icons/*/scalable/apps/kate2.svgz -/opt/kde3/share/icons/*/scalable/apps/kwrite2.svgz -/opt/kde3/share/icons/*/scalable/apps/openoffice.svgz -/opt/kde3/share/icons/*/scalable/apps/quicktime.svgz -/opt/kde3/share/locale -/opt/kde3/share/mimelnk/application/x-konsole.desktop -/opt/kde3/share/mimelnk/application/x-ktheme.desktop -/opt/kde3/share/mimelnk/application/x-smb-server.desktop -/opt/kde3/share/mimelnk/print -/opt/kde3/share/services/textthumbnail.desktop -/opt/kde3/share/services/htmlthumbnail.desktop -/opt/kde3/share/services/ka*.desktop -/opt/kde3/share/services/kdeprint_part.desktop -/opt/kde3/share/services/konsolepart.desktop -/opt/kde3/share/services/konsole-script.desktop -/opt/kde3/share/services/kshorturifilter.desktop -/opt/kde3/share/services/ku*.desktop -/opt/kde3/share/services/searchproviders -/opt/kde3/share/services/useragentstrings -/opt/kde3/share/services/imagethumbnail.desktop -/opt/kde3/share/services/kxkb.desktop -/opt/kde3/share/services/kmanpart.desktop -/opt/kde3/share/services/localdomainurifilter.desktop -/opt/kde3/share/services/kwrited.desktop -/opt/kde3/share/services/djvuthumbnail.desktop -/opt/kde3/share/services/kded/kwrited.desktop -/opt/kde3/share/servicetypes/terminalemulator.desktop -/opt/kde3/share/servicetypes/kateplugin.desktop -/opt/kde3/share/servicetypes/findpart.desktop -/opt/kde3/share/servicetypes/searchprovider.desktop -/opt/kde3/share/servicetypes/thumbcreator.desktop -/opt/kde3/share/servicetypes/uasprovider.desktop -%exclude /opt/kde3/share/sounds/KDE_Close_Window* -%exclude /opt/kde3/share/sounds/KDE_Dialog* -%exclude /opt/kde3/share/sounds/KDE_Desktop* -%exclude /opt/kde3/share/sounds/KDE_Logout* -%exclude /opt/kde3/share/sounds/KDE_Startup* -%exclude /opt/kde3/share/sounds/KDE_Window* -/opt/kde3/share/sounds -/opt/kde3/share/templates -/opt/kde3/share/services/khelpcenter.desktop -/opt/kde3/bin/keditbookmarks -/opt/kde3/bin/kfm* -/opt/kde3/share/apps/kbookmark -/opt/kde3/share/apps/keditbookmarks -/opt/kde3/share/icons/*/*/*/keditbookmarks.* -/opt/kde3/share/icons/*/*/*/kfm.* -/opt/kde3/share/icons/*/*/*/konqueror.* -/opt/kde3/share/services/konq* -/opt/kde3/share/servicetypes/konq* -/opt/kde3/share/services/cursorthumbnail.desktop -/opt/kde3/%_lib/kde3/kcm_randr.* -/opt/kde3/bin/krandrtray -/opt/kde3/share/applications/kde/krandrtray.desktop -/opt/kde3/%_lib/kde3/kded_mediamanager.* -/opt/kde3/%_lib/kde3/kfile_media.* -/opt/kde3/%_lib/kde3/kfile_trash.* -/opt/kde3/share/applications/kde/devices.desktop -/opt/kde3/share/applications/kde/knetattach.desktop -/opt/kde3/share/applications/kde/opengl.desktop -/opt/kde3/share/icons/*/*/*/kcmopengl.* -/opt/kde3/share/mimelnk/media -/opt/kde3/share/services/kded/mediamanager.desktop -/opt/kde3/share/services/kded/homedirnotify.desktop -/opt/kde3/share/services/kded/medianotifier.desktop -/opt/kde3/share/services/kfile_media.desktop -/opt/kde3/share/services/kfile_trash.desktop -/opt/kde3/share/services/kfile_trash_system.desktop -/opt/kde3/share/mimelnk/fonts/package.desktop -/opt/kde3/%_lib/kde3/exrthumbnail.* -/opt/kde3/share/services/exrthumbnail.desktop -%dir /opt/kde3/share/mimelnk/fonts -/opt/kde3/bin/kfontinst -/opt/kde3/%_lib/kde3/fontthumbnail.* -/opt/kde3/%_lib/kde3/kfile_font.* -/opt/kde3/%_lib/kde3/libkfontviewpart.* -%dir /opt/kde3/share/apps/kfontview -/opt/kde3/share/apps/kfontview/kfontviewpart.rc -/opt/kde3/share/applications/kde/kcmfontinst.desktop -/opt/kde3/share/mimelnk/fonts/folder.desktop -/opt/kde3/share/mimelnk/fonts/system-folder.desktop -/opt/kde3/share/services/fontthumbnail.desktop -/opt/kde3/share/services/kfile_font.desktop -/opt/kde3/share/services/kfontviewpart.desktop -%_mandir/man1/* -%if %suse_version < 1001 -%config(noreplace) /etc/security/fileshare.conf -/opt/kde3/bin/filesharelist -%verify(not mode) /opt/kde3/bin/fileshareset -%endif -%{_mandir}/man8/kcheckpass.8.gz -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kcontrol -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kdcop -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kdebugdialog -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kdeprint -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kdesu -%exclude /opt/kde3/share/doc/HTML/en/khelpcenter/userguide -%exclude /opt/kde3/share/doc/HTML/en/khelpcenter/visualdict -%doc %lang(en) /opt/kde3/share/doc/HTML/en/khelpcenter -%doc %lang(en) /opt/kde3/share/doc/HTML/en/knetattach -/opt/kde3/share/applications/kde/desktoppath.desktop - -%files samba -%defattr(-,root,root) -/opt/kde3/%_lib/kde3/kcm_samba.* -/opt/kde3/%_lib/kde3/kio_smb.* -/opt/kde3/share/services/smb.protocol -%dir /opt/kde3/share/apps/konqueror/dirtree -%dir /opt/kde3/share/apps/konqueror/dirtree/remote -/opt/kde3/share/apps/konqueror/dirtree/remote/smb-network.desktop -/opt/kde3/share/mimelnk/application/x-smb-workgroup.desktop - -%files kdm -%defattr(-,root,root) -%dir /opt/kde3/share/doc/kdm -/opt/kde3/bin/genkdmconf -/opt/kde3/bin/kdm* -/opt/kde3/bin/krootimage -/opt/kde3/share/apps/kdm -/opt/kde3/%_lib/kde3/kgreet_pam.* -%doc /opt/kde3/share/doc/kdm/README -%if %suse_version < 1020 -%config /etc/pam.d/xdm-np -%endif -%dir /opt/kde3/share/config/kdm -%config(noreplace) /opt/kde3/share/config/kdm/kdmrc -%config(noreplace) /opt/kde3/share/config/kdm/backgroundrc -%if %suse_version < 1010 -%config /opt/kde3/share/config/kdm/Xaccess -%config /opt/kde3/share/config/kdm/Xreset -%config /opt/kde3/share/config/kdm/Xresources -%config /opt/kde3/share/config/kdm/Xsession -%config /opt/kde3/share/config/kdm/Xsetup -%config /opt/kde3/share/config/kdm/Xstartup -%config /opt/kde3/share/config/kdm/Xwilling -%endif -%ghost /var/run/xdmctl -/usr/sbin/rckdm -/opt/kde3/share/applications/kde/kdm.desktop -/opt/kde3/share/icons/*/*/*/kdmconfig.* -/opt/kde3/%_lib/kde3/kcm_kdm.* -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kdm - -%files session -%defattr(-,root,root) -%if %suse_version > 1010 -/usr/bin/kde -/usr/bin/startkde3 -%else -/usr/X11R6/bin/kde -%endif -%if %suse_version < 1030 -%dir /usr/share/xsessions -%endif -/usr/share/xsessions/kde.desktop - -%files extra -%defattr(-,root,root) -/opt/kde3/bin/kpersonalizer -/opt/kde3/share/applications/kde/kpersonalizer.desktop -/opt/kde3/share/apps/kpersonalizer -/opt/kde3/share/icons/*/*/*/kpersonalizer.* -/opt/kde3/bin/kfontview -/opt/kde3/share/applications/kde/kfontview.desktop -/opt/kde3/share/apps/kfontview/kfontviewui.rc -/opt/kde3/%_lib/kde3/khotkeys_arts.* - -%files nsplugin -%defattr(-,root,root) -/opt/kde3/bin/nsplugin* -/opt/kde3/share/apps/plugin/nspluginpart.rc -%dir /opt/kde3/share/applnk/Settings/WebBrowsing -/opt/kde3/share/applnk/Settings/WebBrowsing/nsplugin.desktop - -%files devel -%defattr(-,root,root) -/opt/kde3/include/* -/opt/kde3/%_lib/libkonq.so -/opt/kde3/%_lib/libkdecorations.so -/opt/kde3/%_lib/libkonqsidebarplugin.so -/opt/kde3/%_lib/libkickermain.so -/opt/kde3/%_lib/libtask*.so -/opt/kde3/%_lib/libksgrd.so -%if %suse_version > 1010 -/opt/kde3/%_lib/libkickoffsearch_interfaces.so -/opt/kde3/%_lib/libkickoffsearch_interfaces.la -%endif -/opt/kde3/%_lib/libksplashthemes.so -/opt/kde3/%_lib/libkateinterfaces.so -/opt/kde3/%_lib/libkateutils.so -/opt/kde3/%_lib/libkhotkeys_shared.so -/opt/kde3/%_lib/libkateinterfaces.la -/opt/kde3/%_lib/libkateutils.la -/opt/kde3/%_lib/libkdecorations.la -/opt/kde3/%_lib/libkfontinst.la -/opt/kde3/%_lib/libkfontinst.so -/opt/kde3/%_lib/libkhotkeys_shared.la -/opt/kde3/%_lib/libkickermain.la -/opt/kde3/%_lib/libkonq.la -/opt/kde3/%_lib/libkonqsidebarplugin.la -/opt/kde3/%_lib/libksgrd.la -/opt/kde3/%_lib/libksplashthemes.la -/opt/kde3/%_lib/libtaskbar.la -/opt/kde3/%_lib/libtaskmanager.la -/opt/kde3/%_lib/libkasbar.so -/opt/kde3/%_lib/libkasbar.la - -%files ksysguardd -%defattr(-,root,root) -%dir /etc/slp.reg.d -#%if %suse_version < 1020 -/usr/bin/ksysguardd -/opt/kde3/bin/ksysguardd -%config(noreplace) /etc/ksysguarddrc -#%endif -#%if %suse_version > 1030 -#/usr/bin/ksysguardd -#%config(noreplace) /etc/ksysguarddrc -#%endif -/etc/init.d/ksysguardd -/usr/sbin/rcksysguardd -%config(noreplace) /etc/slp.reg.d/* - -%if %suse_version > 1010 -%if %suse_version < 1140 - -%files beagle -%defattr(-,root,root) -/opt/kde3/bin/khc_beagle_search.pl -/opt/kde3/bin/khc_beagle_index.pl -/opt/kde3/share/apps/khelpcenter/searchhandlers/docbook.desktop -/opt/kde3/%_lib/kde3/kickoffsearch_beagle.* -/opt/kde3/share/services/kickoffsearch_beagle.desktop -%endif -%endif - -%files -n fileshareset -%defattr(-,root,root) -%config(noreplace) /etc/security/fileshare.conf -%{_bindir}/filesharelist -%verify(not mode) %{_bindir}/fileshareset -%{_mandir}/man8/fileshareset.8.gz - -%files apps -%defattr(-,root,root) -/opt/kde3/bin/konsole* -/opt/kde3/%_lib/kde3/konsole.* -/opt/kde3/%_lib/kde3/kcm_konsole.* -/opt/kde3/%_lib/libkdeinit_konsole.so -/opt/kde3/share/applications/kde/konsole.desktop -/opt/kde3/share/applications/kde/konsolesu.desktop -%doc %lang(en) /opt/kde3/share/doc/HTML/en/konsole -/opt/kde3/share/applications/kde/Home.desktop -/opt/kde3/%_lib/libkdeinit_konqueror.so -/opt/kde3/share/apps/konqueror/konq-simplebrowser.rc -/opt/kde3/share/applications/kde/konquerorsu.desktop -/opt/kde3/share/applnk/konqueror.desktop -%doc %lang(en) /opt/kde3/share/doc/HTML/en/konqueror -/opt/kde3/share/config.kcfg/konqueror.kcfg -/opt/kde3/bin/konqueror -/opt/kde3/%_lib/kde3/konq*.so -/opt/kde3/%_lib/kde3/konq*.la -%dir /opt/kde3/share/apps/konqueror -/opt/kde3/share/apps/konqueror/tiles -/opt/kde3/share/apps/konqueror/about -/opt/kde3/share/apps/konqueror/icons -/opt/kde3/share/apps/konqueror/konqueror.rc -/opt/kde3/share/apps/konqueror/p* -/opt/kde3/share/apps/konqueror/servicemenus -/opt/kde3/%_lib/kde3/konqueror.* -/opt/kde3/share/apps/konqiconview -/opt/kde3/share/apps/konqlistview -/opt/kde3/share/apps/konqsidebartng -/opt/kde3/%_lib/kde3/kded_konqy_preloader.* -/opt/kde3/share/services/kded/konqy_preloader.desktop -/opt/kde3/share/applications/kde/konqbrowser.desktop -/opt/kde3/share/applications/kde/konqfilemgr.desktop -/opt/kde3/share/config.kcfg/konq_listview.kcfg -%config(noreplace) /opt/kde3/share/config/konqsidebartng.rc -/opt/kde3/bin/kfind -/opt/kde3/%_lib/kde3/libkfindpart.* -/opt/kde3/share/applications/kde/Kfind.desktop -/opt/kde3/share/apps/kfindpart -/opt/kde3/share/icons/*/*/*/kfind.* -/opt/kde3/share/services/kfindpart.desktop -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kfind -/opt/kde3/bin/kwrite -/opt/kde3/%_lib/kde3/kwrite.* -/opt/kde3/%_lib/libkdeinit_kwrite.so -/opt/kde3/share/applications/kde/kwrite.desktop -/opt/kde3/share/apps/kwrite -/opt/kde3/share/icons/*/*/*/kwrite.* -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kwrite -/opt/kde3/bin/kate -/opt/kde3/%_lib/kde3/kate.* -/opt/kde3/%_lib/libkateinterfaces.so.* -/opt/kde3/%_lib/libkateutils.so.* -/opt/kde3/%_lib/libkdeinit_kate.so -/opt/kde3/share/applications/kde/kate.desktop -/opt/kde3/share/apps/kate -/opt/kde3/share/config/katerc -/opt/kde3/share/icons/*/*/*/kate.* -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kate - -%files workspace -%defattr(-,root,root) -%exclude /usr/share/wallpapers/default_blue.* -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kicker -/usr/share/wallpapers -/opt/kde3/bin/startkde -/opt/kde3/bin/kdesktop -/opt/kde3/bin/kdesktop_lock -/opt/kde3/bin/ksmserver -/opt/kde3/%_lib/libkdeinit_ksmserver.so -/opt/kde3/bin/ksplash -/opt/kde3/bin/ksplashsimple -/opt/kde3/%_lib/kde3/kdesktop.* -/opt/kde3/share/apps/kdesktop -/opt/kde3/share/config.kcfg/kdesktop.kcfg -%config(noreplace) /opt/kde3/share/config/kdesktop_custom_menu* -/opt/kde3/bin/kicker -/opt/kde3/%_lib/kde3/kicker* -/opt/kde3/%_lib/kde3/kcm_kicker* -/opt/kde3/%_lib/libkickermain.so.* -/opt/kde3/share/applications/kde/kcmkicker.desktop -/opt/kde3/share/apps/kicker -/opt/kde3/share/config.kcfg/kickerSettings.kcfg -/opt/kde3/share/icons/*/*/*/kcmkicker.* -/opt/kde3/share/icons/*/*/*/kicker.* -/opt/kde3/%_lib/kconf_update_bin/kicker-3.4-reverseLayout -/opt/kde3/bin/kwin -/opt/kde3/bin/kwin_killer_helper -/opt/kde3/bin/kwin_rules_dialog -/opt/kde3/%_lib/kde3/kwin_* -/opt/kde3/share/apps/kwin -/opt/kde3/%_lib/kde3/kwin.* -/opt/kde3/%_lib/kde3/kwin3_* -/opt/kde3/%_lib/kconf_update_bin/kwin_update_default_rules -/opt/kde3/%_lib/kconf_update_bin/kwin_update_window_settings -/opt/kde3/share/applications/kde/kwinrules.desktop -/opt/kde3/share/applications/kde/kwindecoration.desktop -/opt/kde3/share/applications/kde/kwinoptions.desktop -/opt/kde3/share/config.kcfg/kwin.kcfg -/opt/kde3/share/icons/*/*/*/kwin.* -/var/adm/fillup-templates/sysconfig.windowmanager-kdebase3 -/opt/kde3/share/apps/ksplash -/opt/kde3/share/services/ksplash.desktop -/opt/kde3/share/services/ksplashdefault.desktop -/opt/kde3/share/services/ksplashredmond.desktop -/opt/kde3/share/services/ksplashstandard.desktop -/opt/kde3/share/servicetypes/ksplashplugins.desktop -/opt/kde3/share/icons/*/*/*/ksplash.* -/opt/kde3/%_lib/kde3/ksplash* -/opt/kde3/%_lib/libksplashthemes.so.* -/opt/kde3/share/icons/*/*/apps/kcmsmserver.* -/opt/kde3/share/applications/kde/kcmsmserver.desktop -/opt/kde3/%_lib/kde3/ksmserver.* -/opt/kde3/share/apps/ksmserver -/opt/kde3/%_lib/kde3/clock_panelapplet.* -/opt/kde3/%_lib/kde3/dockbar_panelextension.* -/opt/kde3/%_lib/kde3/kasbar_panelextension.* -/opt/kde3/%_lib/kde3/menu_panelapplet.* -/opt/kde3/%_lib/kde3/klipper_panelapplet.* -/opt/kde3/%_lib/kde3/launcher_panelapplet.* -/opt/kde3/%_lib/kde3/lockout_panelapplet.* -/opt/kde3/%_lib/kde3/minipager_panelapplet.* -/opt/kde3/%_lib/kde3/naughty_panelapplet.* -/opt/kde3/%_lib/kde3/run_panelapplet.* -/opt/kde3/%_lib/kde3/sidebar_panelextension.* -/opt/kde3/share/applications/kde/panel.desktop -/opt/kde3/share/applications/kde/panel_appearance.desktop -/opt/kde3/%_lib/kde3/media_panelapplet.* -/opt/kde3/%_lib/kde3/kcm_taskbar.* -/opt/kde3/share/applications/kde/kcmtaskbar.desktop -/opt/kde3/share/config.kcfg/taskbar.kcfg -/opt/kde3/share/icons/*/*/apps/kcmtaskbar.* -/opt/kde3/%_lib/kde3/kcm_screensaver.* -/opt/kde3/share/applications/kde/screensaver.desktop -/opt/kde3/share/applnk/System/ScreenSavers/KBlankscreen.desktop -/opt/kde3/share/applnk/System/ScreenSavers/KRandom.desktop -/opt/kde3/bin/kwebdesktop -/opt/kde3/share/config.kcfg/kwebdesktop.kcfg -/opt/kde3/share/applications/kde/background.desktop -/opt/kde3/%_lib/kde3/kcm_background* -/opt/kde3/bin/default_desktop_aligning -/opt/kde3/share/applications/kde/desktop.desktop -/opt/kde3/share/applications/kde/desktopbehavior.desktop -/opt/kde3/share/applications/kde/ksplashthememgr.desktop -/opt/kde3/share/icons/*/*/apps/kcmdesktop.* -/opt/kde3/share/icons/*/*/apps/kcmdesktopbehavior.* -/opt/kde3/%_lib/kde3/kcm_ksplashthemes.* -/opt/kde3/%_lib/kde3/kcm_kwindecoration.* -/opt/kde3/%_lib/kde3/kcm_kwinoptions.* -/opt/kde3/%_lib/kde3/kcm_kwinrules.* -%doc %lang(en) /opt/kde3/share/doc/HTML/en/ksplashml -/opt/kde3/shutdown -%if %suse_version > 1010 -/opt/kde3/%_lib/libkickoffsearch_interfaces.so.* -/opt/kde3/share/servicetypes/kickoffsearchplugin.desktop -%endif -/opt/kde3/share/autostart/* -/opt/kde3/share/apps/naughtyapplet -/opt/kde3/%_lib/libtask*.so.* -/opt/kde3/bin/extensionproxy -/opt/kde3/bin/appletproxy -/opt/kde3/%_lib/kde3/appletproxy.* -/opt/kde3/%_lib/kde3/extensionproxy.* -/opt/kde3/%_lib/kde3/taskbar* -/opt/kde3/%_lib/kde3/trash_panelapplet* -/opt/kde3/%_lib/kde3/sys* -/opt/kde3/share/apps/clockapplet -/opt/kde3/bin/kasbar -/opt/kde3/%_lib/libkasbar.so.* -/opt/kde3/%_lib/libkdeinit_kicker.so -/opt/kde3/%_lib/libkdeinit_appletproxy.so -/opt/kde3/%_lib/libkdeinit_extensionproxy.so -/opt/kde3/%_lib/libkdeinit_kdesktop.so -/opt/kde3/%_lib/libkdeinit_kwin.so -/opt/kde3/%_lib/libkdeinit_kwin_rules_dialog.so -/opt/kde3/bin/ktip -/opt/kde3/share/appl*/*/ktip.desktop -/opt/kde3/share/icons/*/*/*/ktip.* -/opt/kde3/bin/kpager -/opt/kde3/share/appl*/*/kpager.desktop -/opt/kde3/share/icons/*/*/*/kpager.* -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kpager -/opt/kde3/bin/klipper -/opt/kde3/%_lib/kde3/klipper.* -/opt/kde3/%_lib/libkdeinit_klipper.so -/opt/kde3/share/applications/kde/klipper.desktop -%config(noreplace) /opt/kde3/share/config/klipperrc -/opt/kde3/share/icons/*/*/*/klipper.* -%doc %lang(en) /opt/kde3/share/doc/HTML/en/klipper -/opt/kde3/share/applications/kde/kmenuedit.desktop -/opt/kde3/share/apps/kmenuedit -/opt/kde3/share/icons/*/*/*/kmenuedit.* -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kmenuedit -/opt/kde3/bin/kmenuedit -/opt/kde3/%_lib/kde3/kmenuedit.* -/opt/kde3/%_lib/libkdeinit_kmenuedit.so -/opt/kde3/bin/kinfocenter -/opt/kde3/share/applications/kde/kinfocenter.desktop -/opt/kde3/share/apps/kinfocenter -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kinfocenter -%doc %lang(en) /opt/kde3/share/doc/HTML/en/khelpcenter/userguide -%doc %lang(en) /opt/kde3/share/doc/HTML/en/khelpcenter/visualdict -/opt/kde3/share/sounds/KDE_Close_Window* -/opt/kde3/share/sounds/KDE_Dialog* -/opt/kde3/share/sounds/KDE_Desktop* -/opt/kde3/share/sounds/KDE_Logout* -/opt/kde3/share/sounds/KDE_Startup* -/opt/kde3/share/sounds/KDE_Window* -/opt/kde3/%_lib/libkdeinit_khotkeys.so -/opt/kde3/%_lib/kde3/kcm_khotkeys.* -/opt/kde3/%_lib/kde3/kcm_khotkeys_init.* -/opt/kde3/share/icons/*/*/*/khotkeys.* -/opt/kde3/bin/khotkeys -/opt/kde3/%_lib/kconf_update_bin/khotkeys_update -/opt/kde3/%_lib/kde3/khotkeys.* -/opt/kde3/%_lib/kde3/kded_khotkeys.* -/opt/kde3/%_lib/libkhotkeys_shared.so.* -/opt/kde3/share/applications/kde/khotkeys.desktop -/opt/kde3/share/apps/khotkeys -/opt/kde3/share/services/kded/khotkeys.desktop -/opt/kde3/bin/ksysguard -/opt/kde3/share/applications/kde/ksysguard.desktop -/opt/kde3/share/apps/ksysguard -/opt/kde3/share/icons/*/*/*/ksysguard.* -/opt/kde3/share/mimelnk/application/x-ksysguard.desktop -%doc %lang(en) /opt/kde3/share/doc/HTML/en/ksysguard -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kxkb -/opt/kde3/%_lib/libksgrd.so.* -/opt/kde3/bin/kompmgr -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kompmgr -%if 0%{?with_hal} == 0 -/opt/kde3/bin/devmon-automounter.sh -%endif - -%files runtime -%defattr(-,root,root) -%doc %lang(en) /opt/kde3/share/doc/HTML/en/kioslave -%exclude /opt/kde3/%_lib/kde3/kio_smb.* -%exclude /opt/kde3/share/services/smb.protocol -/opt/kde3/bin/kde3 -/opt/kde3/bin/kreadconfig -/opt/kde3/bin/kwriteconfig -/opt/kde3/bin/kprinter -/opt/kde3/%_lib/libkdeinit_kprinter.so -/opt/kde3/bin/kdesu -/opt/kde3/%_lib/kde3/kio_* -/opt/kde3/%_lib/libkfontinst.so.* -/opt/kde3/share/services/*.protocol -/opt/kde3/%_lib/libkonq.so.* -/opt/kde3/%_lib/libkonqsidebarplugin.so.* -/opt/kde3/%_lib/kde3/kded_favicons.* -/opt/kde3/share/services/kded/favicons.desktop -/opt/kde3/%_lib/libkdecorations.so.* -/opt/kde3/%_lib/kde3/kgreet_winbind.* -/opt/kde3/%_lib/kde3/kgreet_classic.* -%config /etc/pam.d/kcheckpass -%verify(not mode) %attr(4755,root,shadow) /opt/kde3/bin/kcheckpass -/opt/kde3/share/icons/*/*/*/knotify.* -/opt/kde3/share/icons/*/*/*/kscreensaver.* -/opt/kde3/share/icons/*/*/*/style.* -/opt/kde3/share/icons/*/*/*/looknfeel.* -/opt/kde3/share/icons/*/*/*/iconthemes.* -/opt/kde3/share/icons/*/*/*/keyboard.* -/opt/kde3/share/icons/*/*/*/kcmsound.* -/opt/kde3/share/icons/*/*/*/energy.* -/opt/kde3/share/icons/*/*/*/kcmkwm.* -/opt/kde3/share/icons/*/*/*/hwinfo.* -/opt/kde3/share/icons/*/*/*/date.* -/opt/kde3/share/icons/*/*/*/filetypes.* -/opt/kde3/share/icons/*/*/*/kcmsystem.* -/opt/kde3/share/icons/*/*/*/personal.* - -%changelog diff --git a/opensuse/tdebase/teach-minicli-lock.diff b/opensuse/tdebase/teach-minicli-lock.diff deleted file mode 100644 index 73bd7da1e..000000000 --- a/opensuse/tdebase/teach-minicli-lock.diff +++ /dev/null @@ -1,30 +0,0 @@ -Index: kdesktop/minicli.cpp -=================================================================== ---- kdesktop/minicli.cpp.orig -+++ kdesktop/minicli.cpp -@@ -265,7 +265,9 @@ void Minicli::accept() - } - - bool logout = (cmd == "logout"); -- if( !logout && runCommand() == 1 ) -+ bool lock = (cmd == "lock"); -+ -+ if( !logout && !lock && runCommand() == 1 ) - return; - - m_dlg->cbCommand->addToHistory( m_dlg->cbCommand->currentText().stripWhiteSpace() ); -@@ -278,6 +280,14 @@ void Minicli::accept() - kapp->propagateSessionManager(); - kapp->requestShutDown(); - } -+ if ( lock ) -+ { -+ QCString appname( "kdesktop" ); -+ int kicker_screen_number = qt_xscreen(); -+ if ( kicker_screen_number ) -+ appname.sprintf("kdesktop-screen-%d", kicker_screen_number); -+ kapp->dcopClient()->send(appname, "KScreensaverIface", "lock()", ""); -+ } - } - - void Minicli::reject() diff --git a/opensuse/tdebase/uninit.diff b/opensuse/tdebase/uninit.diff deleted file mode 100644 index 92dd544ab..000000000 --- a/opensuse/tdebase/uninit.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- kcontrol/randr/randroutput.cpp -+++ kcontrol/randr/randroutput.cpp -@@ -383,6 +383,7 @@ RandRCrtc *RandROutput::findEmptyCrtc() - if (crtc->connectedOutputs().count() == 0) - return crtc; - } -+ return crtc; - } - - bool RandROutput::tryCrtc(RandRCrtc *crtc, int changes) diff --git a/opensuse/tdebase/use-full-hinting-by-default.diff b/opensuse/tdebase/use-full-hinting-by-default.diff deleted file mode 100644 index 3375f0943..000000000 --- a/opensuse/tdebase/use-full-hinting-by-default.diff +++ /dev/null @@ -1,35 +0,0 @@ -Index: kcontrol/fonts/fonts.cpp -=================================================================== ---- kcontrol/fonts/fonts.cpp.orig -+++ kcontrol/fonts/fonts.cpp -@@ -332,7 +332,7 @@ bool FontAASettings::load( bool useDefau - kglobals.setReadDefaults( useDefaults ); - - kglobals.setGroup("General"); -- hStyle=KXftConfig::Hint::Medium; -+ hStyle=KXftConfig::Hint::Full; - xft.setHintStyle(hStyle); - xft.apply(); // Save this setting - kglobals.writeEntry("XftHintStyle", KXftConfig::toStr(hStyle)); -@@ -450,7 +450,7 @@ KXftConfig::Hint::Style FontAASettings:: - if(hintingStyle->currentText()==KXftConfig::description((KXftConfig::Hint::Style)s)) - return (KXftConfig::Hint::Style)s; - -- return KXftConfig::Hint::Medium; -+ return KXftConfig::Hint::Full; - } - #endif - -Index: kcontrol/krdb/krdb.cpp -=================================================================== ---- kcontrol/krdb/krdb.cpp.orig -+++ kcontrol/krdb/krdb.cpp -@@ -524,7 +524,7 @@ void runRdb( uint flags ) - - if (kglobals.hasKey("XftHintStyle")) - { -- QString hintStyle = kglobals.readEntry("XftHintStyle", "hintmedium"); -+ QString hintStyle = kglobals.readEntry("XftHintStyle", "hintfull"); - contents += "Xft.hinting: "; - if(hintStyle.isEmpty()) - contents += "-1\n"; diff --git a/opensuse/tdebase/use-pam-before-classic.diff b/opensuse/tdebase/use-pam-before-classic.diff deleted file mode 100644 index 4f2a00008..000000000 --- a/opensuse/tdebase/use-pam-before-classic.diff +++ /dev/null @@ -1,17 +0,0 @@ -Index: kdesktop/lock/lockprocess.cc -=================================================================== ---- kdesktop/lock/lockprocess.cc.orig -+++ kdesktop/lock/lockprocess.cc -@@ -364,8 +364,10 @@ void LockProcess::configure() - readSaver(); - - mPlugins = KDesktopSettings::pluginsUnlock(); -- if (mPlugins.isEmpty()) -- mPlugins = QStringList("classic"); -+ if (mMethod == "pam") -+ mPlugins << mMethod; -+ if (mMethod == "pam" || mPlugins.isEmpty()) -+ mPlugins << "classic"; - mPluginOptions = KDesktopSettings::pluginOptions(); - } - diff --git a/opensuse/tdebase/wizard_small.png b/opensuse/tdebase/wizard_small.png Binary files differdeleted file mode 100644 index 52233e341..000000000 --- a/opensuse/tdebase/wizard_small.png +++ /dev/null diff --git a/opensuse/tdebase/workaround-pdf-on64bit-nsplugin-bug.diff b/opensuse/tdebase/workaround-pdf-on64bit-nsplugin-bug.diff deleted file mode 100644 index b5681e0a3..000000000 --- a/opensuse/tdebase/workaround-pdf-on64bit-nsplugin-bug.diff +++ /dev/null @@ -1,44 +0,0 @@ -Index: nsplugins/nspluginloader.cpp -=================================================================== ---- nsplugins/nspluginloader.cpp.orig -+++ nsplugins/nspluginloader.cpp -@@ -322,7 +322,7 @@ QString NSPluginLoader::lookup(const QSt - } - - --bool NSPluginLoader::loadViewer() -+bool NSPluginLoader::loadViewer(const QString &mimeType) - { - kdDebug() << "NSPluginLoader::loadViewer" << endl; - -@@ -346,7 +346,7 @@ bool NSPluginLoader::loadViewer() - } - - // find the external artsdsp process -- if( _useArtsdsp ) { -+ if( _useArtsdsp && mimeType != "application/pdf" ) { - kdDebug() << "trying to use artsdsp" << endl; - QString artsdsp = KGlobal::dirs()->findExe("artsdsp"); - if (!artsdsp) -@@ -460,7 +460,7 @@ NSPluginInstance *NSPluginLoader::newIns - if ( !_viewer ) - { - // load plugin viewer process -- loadViewer(); -+ loadViewer(mimeType); - - if ( !_viewer ) - { -Index: nsplugins/nspluginloader.h -=================================================================== ---- nsplugins/nspluginloader.h.orig -+++ nsplugins/nspluginloader.h -@@ -100,7 +100,7 @@ protected: - QString lookup(const QString &mimeType); - QString lookupMimeType(const QString &url); - -- bool loadViewer(); -+ bool loadViewer(const QString &mimeType); - void unloadViewer(); - - protected slots: diff --git a/opensuse/tdebase/xcursor.diff b/opensuse/tdebase/xcursor.diff deleted file mode 100644 index 8c4010915..000000000 --- a/opensuse/tdebase/xcursor.diff +++ /dev/null @@ -1,36 +0,0 @@ -Index: kcontrol/input/xcursor/themepage.cpp -=================================================================== ---- kcontrol/input/xcursor/themepage.cpp.orig -+++ kcontrol/input/xcursor/themepage.cpp -@@ -73,6 +73,13 @@ struct ThemeInfo { - }; - - -+static QString defaultThemeDescription( const QString& theme ) -+{ -+ if( theme == "redglass" || theme == "whiteglass" || theme == "pseudocore" || theme == "handhelds" ) -+ return i18n( "XFree theme %1 - incomplete for KDE" ).arg( theme ); -+ return i18n( "No description available" );; -+} -+ - ThemePage::ThemePage( QWidget* parent, const char* name ) - : QWidget( parent, name ), selectedTheme( NULL ), currentTheme( NULL ) - { -@@ -333,7 +340,7 @@ void ThemePage::insertTheme( const QStri - - // Defaults in case there's no name or comment field. - QString name = dirName; -- QString desc = i18n( "No description available" ); -+ QString desc = defaultThemeDescription( name ); - QString sample = "left_ptr"; - - KSimpleConfig c( path + "/index.theme", true ); // Open read-only -@@ -480,7 +487,7 @@ void ThemePage::insertThemes() - // Defaults in case there's no index.theme file or it lacks - // a name and a comment field. - QString name = *it; -- QString desc = i18n( "No description available" ); -+ QString desc = defaultThemeDescription( name ); - QString sample = "left_ptr"; - - // Parse the index.theme file if the theme has one. diff --git a/opensuse/tdebase/xinerama.patch b/opensuse/tdebase/xinerama.patch deleted file mode 100644 index 41aedbcba..000000000 --- a/opensuse/tdebase/xinerama.patch +++ /dev/null @@ -1,951 +0,0 @@ -Index: kdesktop/minicli.cpp -=================================================================== ---- kdesktop/minicli.cpp.orig -+++ kdesktop/minicli.cpp -@@ -379,6 +379,17 @@ int Minicli::runCommand() - cmd = uri.path(); - else - cmd = uri.url(); -+ -+ QCString asn; -+ if( qApp->desktop()->isVirtualDesktop()) -+ { -+ asn = KStartupInfo::createNewStartupId(); -+ KStartupInfoId id; -+ id.initId( asn ); -+ KStartupInfoData data; -+ data.setXinerama( qApp->desktop()->screenNumber( this )); -+ KStartupInfo::sendChange( id, data ); -+ } - - // Determine whether the application should be run through - // the command line (terminal) interface... -@@ -514,7 +525,7 @@ int Minicli::runCommand() - case KURIFilterData::HELP: - { - // No need for kfmclient, KRun does it all (David) -- (void) new KRun( m_filterData->uri(), parentWidget()); -+ (void) new KRun( m_filterData->uri(), parentWidget(), asn ); - return 0; - } - case KURIFilterData::EXECUTABLE: -@@ -526,7 +537,7 @@ int Minicli::runCommand() - if (service && service->isValid() && service->type() == "Application") - { - notifyServiceStarted(service); -- KRun::run(*service, KURL::List()); -+ KRun::run(*service, KURL::List(), parentWidget(), asn ); - return 0; - } - } -@@ -561,7 +572,7 @@ int Minicli::runCommand() - if (service && service->isValid() && service->type() == "Application") - { - notifyServiceStarted(service); -- KRun::run(*service, KURL::List(), this); -+ KRun::run(*service, KURL::List(), parentWidget(), asn ); - return 0; - } - -@@ -569,7 +580,7 @@ int Minicli::runCommand() - if (service && service->isValid() && service->type() == "Application") - { - notifyServiceStarted(service); -- KRun::run(*service, KURL::List(), this); -+ KRun::run(*service, KURL::List(), parentWidget(), asn ); - return 0; - } - -@@ -581,7 +592,7 @@ int Minicli::runCommand() - } - } - -- if ( KRun::runCommand( cmd, exec, m_iconName ) ) -+ if ( KRun::runCommand( cmd, exec, m_iconName, parentWidget(), asn ) ) - return 0; - else - { -Index: kdesktop/desktop.cc -=================================================================== ---- kdesktop/desktop.cc.orig -+++ kdesktop/desktop.cc -@@ -520,9 +520,12 @@ void KDesktop::popupExecuteCommand(const - if ( m_miniCli->isVisible() ) { - KWin::forceActiveWindow( m_miniCli->winId() ); - } else { -- QRect rect = KGlobalSettings::desktopGeometry(QCursor::pos()); -- m_miniCli->move(rect.x() + (rect.width() - m_miniCli->width())/2, -- rect.y() + (rect.height() - m_miniCli->height())/2); -+ NETRootInfo i( qt_xdisplay(), NET::Supported ); -+ if( !i.isSupported( NET::WM2FullPlacement )) { -+ QRect rect = KGlobalSettings::desktopGeometry(QCursor::pos()); -+ m_miniCli->move(rect.x() + (rect.width() - m_miniCli->width())/2, -+ rect.y() + (rect.height() - m_miniCli->height())/2); -+ } - m_miniCli->show(); // non-modal - } - } -Index: kwin/useractions.cpp -=================================================================== ---- kwin/useractions.cpp.orig -+++ kwin/useractions.cpp -@@ -482,27 +482,33 @@ bool Client::performMouseCommand( Option - case Options::MouseActivateAndRaise: - replay = isActive(); // for clickraise mode - workspace()->takeActivity( this, ActivityFocus | ActivityRaise, handled && replay ); -+ workspace()->setActiveScreenMouse( globalPos ); - break; - case Options::MouseActivateAndLower: - workspace()->requestFocus( this ); - workspace()->lowerClient( this ); -+ workspace()->setActiveScreenMouse( globalPos ); - break; - case Options::MouseActivate: - replay = isActive(); // for clickraise mode - workspace()->takeActivity( this, ActivityFocus, handled && replay ); -+ workspace()->setActiveScreenMouse( globalPos ); - break; - case Options::MouseActivateRaiseAndPassClick: - workspace()->takeActivity( this, ActivityFocus | ActivityRaise, handled ); -+ workspace()->setActiveScreenMouse( globalPos ); - replay = TRUE; - break; - case Options::MouseActivateAndPassClick: - workspace()->takeActivity( this, ActivityFocus, handled ); -+ workspace()->setActiveScreenMouse( globalPos ); - replay = TRUE; - break; - case Options::MouseActivateRaiseAndMove: - case Options::MouseActivateRaiseAndUnrestrictedMove: - workspace()->raiseClient( this ); - workspace()->requestFocus( this ); -+ workspace()->setActiveScreenMouse( globalPos ); - if( options->moveMode == Options::Transparent && isMovable()) - move_faked_activity = workspace()->fakeRequestedActivity( this ); - // fallthrough -@@ -709,6 +715,40 @@ void Workspace::slotWindowToDesktop( int - sendClientToDesktop( c, i, true ); - } - -+void Workspace::slotSwitchToScreen( int i ) -+ { -+ setCurrentScreen( i ); -+ } -+ -+void Workspace::slotSwitchToNextScreen() -+ { -+ slotSwitchToScreen(( activeScreen() + 1 ) % numScreens()); -+ } -+ -+void Workspace::slotWindowToScreen( int i ) -+ { -+ Client* c = active_popup_client ? active_popup_client : active_client; -+ if( i >= 0 && i <= numScreens() && c -+ && !c->isDesktop() -+ && !c->isDock() -+ && !c->isTopMenu()) -+ { -+ sendClientToScreen( c, i ); -+ } -+ } -+ -+void Workspace::slotWindowToNextScreen() -+ { -+ Client* c = active_popup_client ? active_popup_client : active_client; -+ if( c -+ && !c->isDesktop() -+ && !c->isDock() -+ && !c->isTopMenu()) -+ { -+ sendClientToScreen( c, ( c->screen() + 1 ) % numScreens()); -+ } -+ } -+ - /*! - Maximizes the popup client - */ -Index: kwin/options.h -=================================================================== ---- kwin/options.h.orig -+++ kwin/options.h -@@ -124,6 +124,11 @@ class Options : public KDecorationOption - */ - enum AltTabStyle { KDE, CDE }; - AltTabStyle altTabStyle; -+ -+ // whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client) -+ bool separateScreenFocus; -+ // whether active Xinerama screen is the one with mouse (or with the active window) -+ bool activeMouseScreen; - - /** - * Xinerama options -@@ -133,6 +138,9 @@ class Options : public KDecorationOption - bool xineramaMovementEnabled; - bool xineramaMaximizeEnabled; - bool xineramaFullscreenEnabled; -+ -+ // number, or -1 = active screen (Workspace::activeScreen()) -+ int xineramaPlacementScreen; - - /** - MoveResizeMode, either Tranparent or Opaque. -Index: kwin/workspace.h -=================================================================== ---- kwin/workspace.h.orig -+++ kwin/workspace.h -@@ -91,6 +91,7 @@ class Workspace : public QObject, public - - QRect clientArea( clientAreaOption, const QPoint& p, int desktop ) const; - QRect clientArea( clientAreaOption, const Client* c ) const; -+ QRect clientArea( clientAreaOption, int screen, int desktop ) const; - - /** - * @internal -@@ -161,6 +162,13 @@ class Workspace : public QObject, public - */ - int numberOfDesktops() const; - void setNumberOfDesktops( int n ); -+ -+ int activeScreen() const; -+ int numScreens() const; -+ void checkActiveScreen( const Client* c ); -+ void setActiveScreenMouse( QPoint mousepos ); -+ QRect screenGeometry( int screen ) const; -+ int screenNumber( QPoint pos ) const; - - QWidget* desktopWidget(); - -@@ -186,6 +194,7 @@ class Workspace : public QObject, public - void sendClientToDesktop( Client* c, int desktop, bool dont_activate ); - void windowToPreviousDesktop( Client* c ); - void windowToNextDesktop( Client* c ); -+ void sendClientToScreen( Client* c, int screen ); - - // KDE4 remove me - and it's also in the DCOP interface :( - void showWindowMenuAt( unsigned long id, int x, int y ); -@@ -224,6 +233,7 @@ class Workspace : public QObject, public - void nextDesktop(); - void previousDesktop(); - void circulateDesktopApplications(); -+ void setCurrentScreen( int new_screen ); - - QString desktopName( int desk ) const; - virtual void setDesktopLayout(int , int , int ); -@@ -301,6 +311,10 @@ class Workspace : public QObject, public - //void slotSwitchToWindow( int ); - void slotWindowToDesktop( int ); - //void slotWindowToListPosition( int ); -+ void slotSwitchToScreen( int ); -+ void slotWindowToScreen( int ); -+ void slotSwitchToNextScreen(); -+ void slotWindowToNextScreen(); - - void slotWindowMaximize(); - void slotWindowMaximizeVertical(); -@@ -481,6 +495,7 @@ class Workspace : public QObject, public - int current_desktop; - int number_of_desktops; - QMemArray<int> desktop_focus_chain; -+ int active_screen; - - QWidget* active_popup; - Client* active_popup_client; -Index: kwin/tabbox.cpp -=================================================================== ---- kwin/tabbox.cpp.orig -+++ kwin/tabbox.cpp -@@ -23,7 +23,6 @@ License. See the file "COPYING" for the - #include <klocale.h> - #include <qapplication.h> - #include <qdesktopwidget.h> --#include <qcursor.h> - #include <kstringhandler.h> - #include <stdarg.h> - #include <kdebug.h> -@@ -110,26 +109,36 @@ void TabBox::createClientList(ClientList - - while ( c ) - { -+ Client* add = NULL; - if ( ((desktop == -1) || c->isOnDesktop(desktop)) - && c->wantsTabFocus() ) -+ { // don't add windows that have modal dialogs -+ Client* modal = c->findModal(); -+ if( modal == NULL || modal == c ) -+ add = c; -+ else if( !list.contains( modal )) -+ add = modal; -+ else -+ { -+ // nothing -+ } -+ } -+ -+ if( options->separateScreenFocus && options->xineramaEnabled ) - { -- if ( start == c ) -+ if( c->screen() != workspace()->activeScreen()) -+ add = NULL; -+ } -+ -+ if( add != NULL ) -+ { -+ if ( start == add ) - { -- list.remove( c ); -- list.prepend( c ); -+ list.remove( add ); -+ list.prepend( add ); - } - else -- { // don't add windows that have modal dialogs -- Client* modal = c->findModal(); -- if( modal == NULL || modal == c ) -- list += c; -- else if( !list.contains( modal )) -- list += modal; -- else -- { -- // nothing -- } -- } -+ list += add; - } - - if ( chain ) -@@ -156,7 +165,7 @@ void TabBox::reset() - { - int w, h, cw = 0, wmax = 0; - -- QRect r = KGlobalSettings::desktopGeometry(QCursor::pos()); -+ QRect r = workspace()->screenGeometry( workspace()->activeScreen()); - - // calculate height of 1 line - // fontheight + 1 pixel above + 1 pixel below, or 32x32 icon + 2 pixel above + below -Index: kwin/kcmkwin/kwinoptions/windows.h -=================================================================== ---- kwin/kcmkwin/kwinoptions/windows.h.orig -+++ kwin/kcmkwin/kwinoptions/windows.h -@@ -86,6 +86,7 @@ private slots: - void delayFocusOnTog(bool); - void clickRaiseOnTog(bool); - void updateAltTabMode(); -+ void updateActiveMouseScreen(); - void changed() { emit KCModule::changed(true); } - - -@@ -101,6 +102,8 @@ private: - void setDelayFocusInterval(int); - void setDelayFocus(bool); - void setClickRaise(bool); -+ void setSeparateScreenFocus(bool); -+ void setActiveMouseScreen(bool); - void setAltTabMode(bool); - void setTraverseAll(bool); - void setRollOverDesktops(bool); -@@ -113,6 +116,8 @@ private: - QCheckBox *clickRaiseOn; - KIntNumInput *autoRaise; - KIntNumInput *delayFocus; -+ QCheckBox *separateScreenFocus; -+ QCheckBox *activeMouseScreen; - - QButtonGroup *kbdBox; - QCheckBox *altTabPopup; -Index: kwin/kcmkwin/kwinoptions/windows.cpp -=================================================================== ---- kwin/kcmkwin/kwinoptions/windows.cpp.orig -+++ kwin/kcmkwin/kwinoptions/windows.cpp -@@ -76,6 +76,8 @@ - #define KWIN_SHADEHOVER_INTERVAL "ShadeHoverInterval" - #define KWIN_FOCUS_STEALING "FocusStealingPreventionLevel" - #define KWIN_HIDE_UTILITY "HideUtilityWindowsForInactive" -+#define KWIN_SEPARATE_SCREEN_FOCUS "SeparateScreenFocus" -+#define KWIN_ACTIVE_MOUSE_SCREEN "ActiveMouseScreen" - - // kwm config keywords - #define KWM_ELECTRIC_BORDER "ElectricBorders" -@@ -209,6 +211,27 @@ KFocusConfig::KFocusConfig (bool _standA - QWhatsThis::add( delayFocus, i18n("This is the delay after which the window the mouse pointer is over" - " will automatically receive focus.") ); - -+ separateScreenFocus = new QCheckBox( i18n( "S&eparate screen focus" ), fcsBox ); -+ fLay->addWidget( separateScreenFocus ); -+ wtstr = i18n( "When this option is enabled, focus operations are limited only to the active Xinerama screen" ); -+ QWhatsThis::add( separateScreenFocus, wtstr ); -+ -+ activeMouseScreen = new QCheckBox( i18n( "Active &mouse screen" ), fcsBox ); -+ fLay->addWidget( activeMouseScreen ); -+ wtstr = i18n( "When this option is enabled, active Xinerama screen (where for example new windows appear)" -+ " is the screen with the mouse pointer. When disabled, the active Xinerama screen is the screen" -+ " with the focused window. This option is by default disabled for Click to focus and" -+ " enabled for other focus policies." ); -+ QWhatsThis::add( activeMouseScreen, wtstr ); -+ connect(focusCombo, SIGNAL(activated(int)), this, SLOT(updateActiveMouseScreen())); -+ -+ if (!QApplication::desktop()->isVirtualDesktop() || -+ QApplication::desktop()->numScreens() == 1) // No Ximerama -+ { -+ separateScreenFocus->hide(); -+ activeMouseScreen->hide(); -+ } -+ - lay->addWidget(fcsBox); - - kbdBox = new QButtonGroup(i18n("Navigation"), this); -@@ -260,6 +283,8 @@ KFocusConfig::KFocusConfig (bool _standA - connect(fcsBox, SIGNAL(clicked(int)), SLOT(changed())); - connect(autoRaise, SIGNAL(valueChanged(int)), SLOT(changed())); - connect(delayFocus, SIGNAL(valueChanged(int)), SLOT(changed())); -+ connect(separateScreenFocus, SIGNAL(clicked()), SLOT(changed())); -+ connect(activeMouseScreen, SIGNAL(clicked()), SLOT(changed())); - connect(altTabPopup, SIGNAL(clicked()), SLOT(changed())); - connect(traverseAll, SIGNAL(clicked()), SLOT(changed())); - connect(rollOverDesktops, SIGNAL(clicked()), SLOT(changed())); -@@ -366,6 +391,22 @@ void KFocusConfig::delayFocusOnTog(bool - void KFocusConfig::clickRaiseOnTog(bool ) { - } - -+void KFocusConfig::setSeparateScreenFocus(bool s) { -+ separateScreenFocus->setChecked(s); -+} -+ -+void KFocusConfig::setActiveMouseScreen(bool a) { -+ activeMouseScreen->setChecked(a); -+} -+ -+void KFocusConfig::updateActiveMouseScreen() -+{ -+ // on by default for non click to focus policies -+ KConfigGroup cfg( config, "Windows" ); -+ if( !cfg.hasKey( KWIN_ACTIVE_MOUSE_SCREEN )) -+ setActiveMouseScreen( focusCombo->currentItem() != 0 ); -+} -+ - void KFocusConfig::setAltTabMode(bool a) { - altTabPopup->setChecked(a); - } -@@ -412,6 +453,10 @@ void KFocusConfig::load( void ) - setClickRaise(key != "off"); - setAutoRaiseEnabled(); // this will disable/hide the auto raise delay widget if focus==click - setDelayFocusEnabled(); -+ -+ setSeparateScreenFocus( config->readBoolEntry(KWIN_SEPARATE_SCREEN_FOCUS, false)); -+ // on by default for non click to focus policies -+ setActiveMouseScreen( config->readBoolEntry(KWIN_ACTIVE_MOUSE_SCREEN, focusCombo->currentItem() != 0 )); - - key = config->readEntry(KWIN_ALTTABMODE, "KDE"); - setAltTabMode(key == "KDE"); -@@ -467,6 +512,9 @@ void KFocusConfig::save( void ) - else - config->writeEntry(KWIN_CLICKRAISE, "off"); - -+ config->writeEntry(KWIN_SEPARATE_SCREEN_FOCUS, separateScreenFocus->isChecked()); -+ config->writeEntry(KWIN_ACTIVE_MOUSE_SCREEN, activeMouseScreen->isChecked()); -+ - if (altTabPopup->isChecked()) - config->writeEntry(KWIN_ALTTABMODE, "KDE"); - else -@@ -500,6 +548,9 @@ void KFocusConfig::defaults() - setAutoRaise(false); - setDelayFocus(false); - setClickRaise(true); -+ setSeparateScreenFocus( false ); -+ // on by default for non click to focus policies -+ setActiveMouseScreen( focusCombo->currentItem() != 0 ); - setAltTabMode(true); - setTraverseAll( false ); - setRollOverDesktops(true); -Index: kwin/popupinfo.h -=================================================================== ---- kwin/popupinfo.h.orig -+++ kwin/popupinfo.h -@@ -24,7 +24,7 @@ class PopupInfo : public QWidget - { - Q_OBJECT - public: -- PopupInfo( const char *name=0 ); -+ PopupInfo( Workspace* ws, const char *name=0 ); - ~PopupInfo(); - - void reset(); -@@ -43,6 +43,7 @@ class PopupInfo : public QWidget - bool m_show; - bool m_shown; - QString m_infoString; -+ Workspace* workspace; - }; - - } // namespace -Index: kwin/options.cpp -=================================================================== ---- kwin/options.cpp.orig -+++ kwin/options.cpp -@@ -71,6 +71,9 @@ unsigned long Options::updateSettings() - altTabStyle = KDE; // what a default :-) - if ( val == "CDE" ) - altTabStyle = CDE; -+ -+ separateScreenFocus = config->readBoolEntry( "SeparateScreenFocus", false ); -+ activeMouseScreen = config->readBoolEntry( "ActiveMouseScreen", focusPolicy != ClickToFocus ); - - rollOverDesktops = config->readBoolEntry("RollOverDesktops", TRUE); - -@@ -91,9 +94,10 @@ unsigned long Options::updateSettings() - delete gc; - - placement = Placement::policyFromString( config->readEntry("Placement"), true ); -+ xineramaPlacementScreen = KCLAMP( config->readNumEntry( "XineramaPlacementScreen", -1 ), -+ -1, qApp->desktop()->numScreens() - 1 ); - - animateShade = config->readBoolEntry("AnimateShade", TRUE ); -- - animateMinimize = config->readBoolEntry("AnimateMinimize", TRUE ); - animateMinimizeSpeed = config->readNumEntry("AnimateMinimizeSpeed", 5 ); - -Index: kwin/placement.cpp -=================================================================== ---- kwin/placement.cpp.orig -+++ kwin/placement.cpp -@@ -473,7 +473,7 @@ void Placement::placeOnMainWindow(Client - it != mainwindows.end(); - ++it ) - { -- if( (*it)->isSpecialWindow()) -+ if( mainwindows.count() > 1 && (*it)->isSpecialWindow()) - continue; // don't consider toolbars etc when placing - ++mains_count; - place_on2 = *it; -@@ -502,6 +502,11 @@ void Placement::placeOnMainWindow(Client - } - place_on = place_on2; // use the only window filtered together with 'mains_count' - } -+ if( place_on->isDesktop()) -+ { -+ place( c, area, Centered ); -+ return; -+ } - QRect geom = c->geometry(); - geom.moveCenter( place_on->geometry().center()); - c->move( geom.topLeft()); -Index: kwin/client.cpp -=================================================================== ---- kwin/client.cpp.orig -+++ kwin/client.cpp -@@ -1255,6 +1255,20 @@ bool Client::isOnCurrentDesktop() const - return isOnDesktop( workspace()->currentDesktop()); - } - -+int Client::screen() const -+ { -+ if( !options->xineramaEnabled ) -+ return 0; -+ return workspace()->screenNumber( geometry().center()); -+ } -+ -+bool Client::isOnScreen( int screen ) const -+ { -+ if( !options->xineramaEnabled ) -+ return screen == 0; -+ return workspace()->screenGeometry( screen ).intersects( geometry()); -+ } -+ - // performs activation and/or raising of the window - void Client::takeActivity( int flags, bool handled, allowed_t ) - { -Index: kwin/popupinfo.cpp -=================================================================== ---- kwin/popupinfo.cpp.orig -+++ kwin/popupinfo.cpp -@@ -25,7 +25,6 @@ License. See the file "COPYING" for the - #include <klocale.h> - #include <qapplication.h> - #include <qdesktopwidget.h> --#include <qcursor.h> - #include <kstringhandler.h> - #include <kglobalsettings.h> - -@@ -34,8 +33,8 @@ License. See the file "COPYING" for the - namespace KWinInternal - { - --PopupInfo::PopupInfo( const char *name ) -- : QWidget( 0, name ) -+PopupInfo::PopupInfo( Workspace* ws, const char *name ) -+ : QWidget( 0, name ), workspace( ws ) - { - m_infoString = ""; - m_shown = false; -@@ -60,7 +59,7 @@ PopupInfo::~PopupInfo() - */ - void PopupInfo::reset() - { -- QRect r = KGlobalSettings::desktopGeometry(QCursor::pos()); -+ QRect r = workspace->screenGeometry( workspace->activeScreen()); - - int w = fontMetrics().width( m_infoString ) + 30; - -Index: kwin/geometry.cpp -=================================================================== ---- kwin/geometry.cpp.orig -+++ kwin/geometry.cpp -@@ -211,14 +211,11 @@ void Workspace::updateClientArea() - - \sa geometry() - */ --QRect Workspace::clientArea( clientAreaOption opt, const QPoint& p, int desktop ) const -+QRect Workspace::clientArea( clientAreaOption opt, int screen, int desktop ) const - { - if( desktop == NETWinInfo::OnAllDesktops || desktop == 0 ) - desktop = currentDesktop(); - QDesktopWidget *desktopwidget = KApplication::desktop(); -- int screen = desktopwidget->isVirtualDesktop() ? desktopwidget->screenNumber( p ) : desktopwidget->primaryScreen(); -- if( screen < 0 ) -- screen = desktopwidget->primaryScreen(); - QRect sarea = screenarea // may be NULL during KWin initialization - ? screenarea[ desktop ][ screen ] - : desktopwidget->screenGeometry( screen ); -@@ -263,11 +260,21 @@ QRect Workspace::clientArea( clientAreaO - return QRect(); - } - -+QRect Workspace::clientArea( clientAreaOption opt, const QPoint& p, int desktop ) const -+ { -+ QDesktopWidget *desktopwidget = KApplication::desktop(); -+ int screen = desktopwidget->screenNumber( p ); -+ if( screen < 0 ) -+ screen = desktopwidget->primaryScreen(); -+ return clientArea( opt, screen, desktop ); -+ } -+ - QRect Workspace::clientArea( clientAreaOption opt, const Client* c ) const - { - return clientArea( opt, c->geometry().center(), c->desktop()); - } - -+ - /*! - Client \a c is moved around to position \a pos. This gives the - workspace the opportunity to interveniate and to implement -@@ -896,10 +903,6 @@ void Client::checkWorkspacePosition() - setGeometry( area ); - return; - } -- if( maximizeMode() != MaximizeRestore ) -- // TODO update geom_restore? -- changeMaximize( false, false, true ); // adjust size -- - if( isFullScreen()) - { - QRect area = workspace()->clientArea( FullScreenArea, this ); -@@ -926,6 +929,10 @@ void Client::checkWorkspacePosition() - return; - } - -+ if( maximizeMode() != MaximizeRestore ) -+ // TODO update geom_restore? -+ changeMaximize( false, false, true ); // adjust size -+ - if( !isShade()) // TODO - { - int old_diff_x = workarea_diff_x; -@@ -1722,6 +1729,7 @@ void Client::setGeometry( int x, int y, - sendSyntheticConfigureNotify(); - updateWindowRules(); - checkMaximizeGeometry(); -+ workspace()->checkActiveScreen( this ); - } - - void Client::plainResize( int w, int h, ForceGeometry_t force ) -@@ -1775,6 +1783,7 @@ void Client::plainResize( int w, int h, - sendSyntheticConfigureNotify(); - updateWindowRules(); - checkMaximizeGeometry(); -+ workspace()->checkActiveScreen( this ); - } - - /*! -@@ -1795,6 +1804,7 @@ void Client::move( int x, int y, ForceGe - sendSyntheticConfigureNotify(); - updateWindowRules(); - checkMaximizeGeometry(); -+ workspace()->checkActiveScreen( this ); - } - - -Index: kwin/kwin.kcfg -=================================================================== ---- kwin/kwin.kcfg.orig -+++ kwin/kwin.kcfg -@@ -60,6 +60,9 @@ - <entry key="IgnorePositionClasses" type="StringList" /> - <entry key="KillPingTimeout" type="Int" /> - <entry key="ShowDesktopIsMinimizeAll" type="Bool" /> -+ <entry key="SeparateScreenFocus" type="Bool" /> -+ <entry key="ActiveMouseScreen" type="Bool" /> -+ <entry key="XineramaPlacementScreen" type="Int" /> - </group> - - <group name="WM" > -Index: kwin/client.h -=================================================================== ---- kwin/client.h.orig -+++ kwin/client.h -@@ -118,6 +118,9 @@ class Client : public QObject, public KD - bool isOnCurrentDesktop() const; - bool isOnAllDesktops() const; - void setOnAllDesktops( bool set ); -+ -+ bool isOnScreen( int screen ) const; // true if it's at least partially there -+ int screen() const; // the screen where the center is - - // !isMinimized() && not hidden, i.e. normally visible on some virtual desktop - bool isShown( bool shaded_is_shown ) const; -Index: kwin/manage.cpp -=================================================================== ---- kwin/manage.cpp.orig -+++ kwin/manage.cpp -@@ -166,7 +166,7 @@ bool Client::manage( Window w, bool isMa - it != mainclients.end(); - ++it ) - { -- if( (*it)->isSpecialWindow()) -+ if( mainclients.count() > 1 && (*it)->isSpecialWindow()) - continue; // don't consider toolbars etc when placing - maincl = *it; - if( (*it)->isOnCurrentDesktop()) -@@ -202,9 +202,14 @@ bool Client::manage( Window w, bool isMa - if( isMapped || session ) - area = workspace()->clientArea( FullArea, geom.center(), desktop()); - else if( options->xineramaPlacementEnabled ) -- area = workspace()->clientArea( PlacementArea, QCursor::pos(), desktop()); -+ { -+ int screen = options->xineramaPlacementScreen; -+ if( screen == -1 ) // active screen -+ screen = asn_data.xinerama() == -1 ? workspace()->activeScreen() : asn_data.xinerama(); -+ area = workspace()->clientArea( PlacementArea, workspace()->screenGeometry( screen ).center(), desktop()); -+ } - else -- area = workspace()->clientArea( PlacementArea, geom.center(), desktop()); -+ area = workspace()->clientArea( PlacementArea, QCursor::pos(), desktop()); - - if( int type = checkFullScreenHack( geom )) - { -Index: kwin/workspace.cpp -=================================================================== ---- kwin/workspace.cpp.orig -+++ kwin/workspace.cpp -@@ -82,6 +82,7 @@ Workspace::Workspace( bool restore ) - QObject (0, "workspace"), - current_desktop (0), - number_of_desktops(0), -+ active_screen (0), - active_popup( NULL ), - active_popup_client( NULL ), - desktop_widget (0), -@@ -202,7 +203,7 @@ Workspace::Workspace( bool restore ) - client_keys = new KGlobalAccel( this ); - initShortcuts(); - tab_box = new TabBox( this ); -- popupinfo = new PopupInfo( ); -+ popupinfo = new PopupInfo( this ); - - init(); - -@@ -304,6 +305,7 @@ void Workspace::init() - NET::WM2ExtendedStrut | - NET::WM2KDETemporaryRules | - NET::WM2ShowingDesktop | -+ NET::WM2FullPlacement | - NET::WM2DesktopLayout | - 0 - , -@@ -1541,6 +1543,83 @@ void Workspace::setDesktopLayout( int, i - { // DCOP-only, unused - } - -+int Workspace::numScreens() const -+ { -+ if( !options->xineramaEnabled ) -+ return 0; -+ return qApp->desktop()->numScreens(); -+ } -+ -+int Workspace::activeScreen() const -+ { -+ if( !options->xineramaEnabled ) -+ return 0; -+ if( !options->activeMouseScreen ) -+ { -+ if( activeClient() != NULL && !activeClient()->isOnScreen( active_screen )) -+ return qApp->desktop()->screenNumber( activeClient()->geometry().center()); -+ return active_screen; -+ } -+ return qApp->desktop()->screenNumber( QCursor::pos()); -+ } -+ -+// check whether a client moved completely out of what's considered the active screen, -+// if yes, set a new active screen -+void Workspace::checkActiveScreen( const Client* c ) -+ { -+ if( !options->xineramaEnabled ) -+ return; -+ if( !c->isActive()) -+ return; -+ if( !c->isOnScreen( active_screen )) -+ active_screen = c->screen(); -+ } -+ -+// called e.g. when a user clicks on a window, set active screen to be the screen -+// where the click occured -+void Workspace::setActiveScreenMouse( QPoint mousepos ) -+ { -+ if( !options->xineramaEnabled ) -+ return; -+ active_screen = qApp->desktop()->screenNumber( mousepos ); -+ } -+ -+QRect Workspace::screenGeometry( int screen ) const -+ { -+ if( !options->xineramaEnabled ) -+ return qApp->desktop()->geometry(); -+ return qApp->desktop()->screenGeometry( screen ); -+ } -+ -+int Workspace::screenNumber( QPoint pos ) const -+ { -+ if( !options->xineramaEnabled ) -+ return 0; -+ return qApp->desktop()->screenNumber( pos ); -+ } -+ -+ -+void Workspace::sendClientToScreen( Client* c, int screen ) -+ { -+ if( c->screen() == screen ) // don't use isOnScreen(), that's true even when only parti -+ // ally -+ return; -+ GeometryUpdatesPostponer blocker( c ); -+ QRect old_sarea = clientArea( MaximizeArea, c ); -+ QRect sarea = clientArea( MaximizeArea, screen, c->desktop()); -+ c->setGeometry( sarea.x() - old_sarea.x() + c->x(), sarea.y() - old_sarea.y() + c->y(), -+ c->size().width(), c->size().height()); -+ c->checkWorkspacePosition(); -+ ClientList transients_stacking_order = ensureStackingOrder( c->transients()); -+ for( ClientList::ConstIterator it = transients_stacking_order.begin(); -+ it != transients_stacking_order.end(); -+ ++it ) -+ sendClientToScreen( *it, screen ); -+ if( c->isActive()) -+ active_screen = screen; -+ } -+ -+ - void Workspace::updateDesktopLayout() - { - // rootInfo->desktopLayoutCorner(); // I don't find this worth bothering, feel free to -Index: kwin/activation.cpp -=================================================================== ---- kwin/activation.cpp.orig -+++ kwin/activation.cpp -@@ -360,6 +360,8 @@ void Workspace::takeActivity( Client* c, - return; - } - c->takeActivity( flags, handled, Allowed ); -+ if( !c->isOnScreen( active_screen )) -+ active_screen = c->screen(); - } - - void Workspace::handleTakeActivity( Client* c, Time /*timestamp*/, int flags ) -@@ -413,6 +415,13 @@ bool Workspace::activateNextClient( Clie - { - if( !(*it)->isShown( false ) || !(*it)->isOnCurrentDesktop()) - continue; -+ if( options->separateScreenFocus ) -+ { -+ if( c != NULL && !(*it)->isOnScreen( c->screen())) -+ continue; -+ if( c == NULL && !(*it)->isOnScreen( activeScreen())) -+ continue; -+ } - if( mainwindows.contains( *it )) - { - get_focus = *it; -@@ -438,6 +447,31 @@ bool Workspace::activateNextClient( Clie - return true; - } - -+void Workspace::setCurrentScreen( int new_screen ) -+ { -+ if (new_screen < 0 || new_screen > numScreens()) -+ return; -+ if ( !options->focusPolicyIsReasonable()) -+ return; -+ closeActivePopup(); -+ Client* get_focus = NULL; -+ for( ClientList::ConstIterator it = focus_chain[currentDesktop()].fromLast(); -+ it != focus_chain[currentDesktop()].end(); -+ --it ) -+ { -+ if( !(*it)->isShown( false ) || !(*it)->isOnCurrentDesktop()) -+ continue; -+ if( !(*it)->screen() == new_screen ) -+ continue; -+ get_focus = *it; -+ break; -+ } -+ if( get_focus == NULL ) -+ get_focus = findDesktop( true, currentDesktop()); -+ if( get_focus != NULL && get_focus != mostRecentlyActivatedClient()) -+ requestFocus( get_focus ); -+ active_screen = new_screen; -+ } - - void Workspace::gotFocusIn( const Client* c ) - { -@@ -860,6 +894,8 @@ void Client::startupIdChanged() - desktop = asn_data.desktop(); - if( !isOnAllDesktops()) - workspace()->sendClientToDesktop( this, desktop, true ); -+ if( asn_data.xinerama() != -1 ) -+ workspace()->sendClientToScreen( this, asn_data.xinerama()); - Time timestamp = asn_id.timestamp(); - if( timestamp == 0 && asn_data.timestamp() != -1U ) - timestamp = asn_data.timestamp(); -Index: kwin/kwinbindings.cpp -=================================================================== ---- kwin/kwinbindings.cpp.orig -+++ kwin/kwinbindings.cpp -@@ -104,6 +104,15 @@ - DEF( I18N_NOOP("Window One Desktop to the Left"), 0, 0, slotWindowToDesktopLeft() ); - DEF( I18N_NOOP("Window One Desktop Up"), 0, 0, slotWindowToDesktopUp() ); - DEF( I18N_NOOP("Window One Desktop Down"), 0, 0, slotWindowToDesktopDown() ); -+ DEF( I18N_NOOP("Window to Screen 0"), 0, 0, slotWindowToScreen(int) ); -+ DEF( I18N_NOOP("Window to Screen 1"), 0, 0, slotWindowToScreen(int) ); -+ DEF( I18N_NOOP("Window to Screen 2"), 0, 0, slotWindowToScreen(int) ); -+ DEF( I18N_NOOP("Window to Screen 3"), 0, 0, slotWindowToScreen(int) ); -+ DEF( I18N_NOOP("Window to Screen 4"), 0, 0, slotWindowToScreen(int) ); -+ DEF( I18N_NOOP("Window to Screen 5"), 0, 0, slotWindowToScreen(int) ); -+ DEF( I18N_NOOP("Window to Screen 6"), 0, 0, slotWindowToScreen(int) ); -+ DEF( I18N_NOOP("Window to Screen 7"), 0, 0, slotWindowToScreen(int) ); -+ DEF( I18N_NOOP("Window to Next Screen"), 0, 0, slotWindowToNextScreen() ); - - keys->insert( "Group:Desktop Switching", i18n("Desktop Switching") ); - DEF( I18N_NOOP("Switch to Desktop 1"), CTRL+Qt::Key_F1, WIN+Qt::Key_F1, slotSwitchToDesktop(int) ); -@@ -132,6 +141,15 @@ - DEF( I18N_NOOP("Switch One Desktop to the Left"), 0, 0, slotSwitchDesktopLeft() ); - DEF( I18N_NOOP("Switch One Desktop Up"), 0, 0, slotSwitchDesktopUp() ); - DEF( I18N_NOOP("Switch One Desktop Down"), 0, 0, slotSwitchDesktopDown() ); -+ DEF( I18N_NOOP("Switch to Screen 0"), 0, 0, slotSwitchToScreen(int) ); -+ DEF( I18N_NOOP("Switch to Screen 1"), 0, 0, slotSwitchToScreen(int) ); -+ DEF( I18N_NOOP("Switch to Screen 2"), 0, 0, slotSwitchToScreen(int) ); -+ DEF( I18N_NOOP("Switch to Screen 3"), 0, 0, slotSwitchToScreen(int) ); -+ DEF( I18N_NOOP("Switch to Screen 4"), 0, 0, slotSwitchToScreen(int) ); -+ DEF( I18N_NOOP("Switch to Screen 5"), 0, 0, slotSwitchToScreen(int) ); -+ DEF( I18N_NOOP("Switch to Screen 6"), 0, 0, slotSwitchToScreen(int) ); -+ DEF( I18N_NOOP("Switch to Screen 7"), 0, 0, slotSwitchToScreen(int) ); -+ DEF( I18N_NOOP("Switch to Next Screen"), 0, 0, slotSwitchToNextScreen() ); - - keys->insert( "Group:Miscellaneous", i18n("Miscellaneous") ); - DEF( I18N_NOOP("Mouse Emulation"), ALT+Qt::Key_F12, 0, slotMouseEmulation() ); diff --git a/opensuse/tdebase/zh_TW.flag.png b/opensuse/tdebase/zh_TW.flag.png Binary files differdeleted file mode 100644 index 472e3376a..000000000 --- a/opensuse/tdebase/zh_TW.flag.png +++ /dev/null |