summaryrefslogtreecommitdiffstats
path: root/opensuse/tdebase
diff options
context:
space:
mode:
authorRobert Xu <robxu9@gmail.com>2011-11-10 18:04:39 -0500
committerRobert Xu <robxu9@gmail.com>2011-11-10 18:04:39 -0500
commit21fcfa3348213aa87f0e3aef62ca4720c6d31cb7 (patch)
tree2cfb64c59322628e613ed0895e3c3694d3abe6bd /opensuse/tdebase
parent8667643bff14a60d8571c599efd3e48bed3e3b12 (diff)
downloadtde-packaging-21fcfa3348213aa87f0e3aef62ca4720c6d31cb7.tar.gz
tde-packaging-21fcfa3348213aa87f0e3aef62ca4720c6d31cb7.zip
initial commit to suse branch: eclipse integration
Diffstat (limited to 'opensuse/tdebase')
-rw-r--r--opensuse/tdebase/3_5_BRANCH.diff1176
-rw-r--r--opensuse/tdebase/access.diff51
-rw-r--r--opensuse/tdebase/applet-lock-logout.diff122
-rw-r--r--opensuse/tdebase/arts-start-on-demand.diff98
-rw-r--r--opensuse/tdebase/artwork.diff35
-rw-r--r--opensuse/tdebase/autorun.patch27
-rw-r--r--opensuse/tdebase/background_default.diff13
-rw-r--r--opensuse/tdebase/baselibs.conf2
-rw-r--r--opensuse/tdebase/beagle-0.3.diff21
-rw-r--r--opensuse/tdebase/bnc.desktop8
-rw-r--r--opensuse/tdebase/bnc584223.diff189
-rw-r--r--opensuse/tdebase/clock-applet-style.diff22
-rw-r--r--opensuse/tdebase/clock-suse-integrate.diff288
-rw-r--r--opensuse/tdebase/console8x16.pcf.gzbin12244 -> 0 bytes
-rw-r--r--opensuse/tdebase/default-kdeprintfax.diff13
-rw-r--r--opensuse/tdebase/default_fonts.diff25
-rw-r--r--opensuse/tdebase/devmon-automounter.sh1086
-rw-r--r--opensuse/tdebase/dont-always-start-kaccess.diff66
-rw-r--r--opensuse/tdebase/fileshareset.8.gzbin1086 -> 0 bytes
-rw-r--r--opensuse/tdebase/fileshareset2.tar.bz2bin8677 -> 0 bytes
-rw-r--r--opensuse/tdebase/fix-desktop-icons.diff250
-rw-r--r--opensuse/tdebase/fix-kcontrol-yast.diff63
-rw-r--r--opensuse/tdebase/fix-kio-smb-auth.diff13
-rw-r--r--opensuse/tdebase/fix-lockup-from-gnome-apps.diff20
-rw-r--r--opensuse/tdebase/fix_default_theme_reset.diff59
-rw-r--r--opensuse/tdebase/gcc44.diff20
-rw-r--r--opensuse/tdebase/hide-only-showin-entries.diff14
-rw-r--r--opensuse/tdebase/improve-panelservicemenu-geticonset.diff32
-rw-r--r--opensuse/tdebase/ioslaveinfo-icon.diff13
-rw-r--r--opensuse/tdebase/kcheckpass-pam-11.06
-rw-r--r--opensuse/tdebase/kcheckpass-pam-11.15
-rw-r--r--opensuse/tdebase/kcheckpass-pam-legacy7
-rw-r--r--opensuse/tdebase/kcheckpass.8.gzbin836 -> 0 bytes
-rw-r--r--opensuse/tdebase/kcminit-ignore-arts.diff14
-rw-r--r--opensuse/tdebase/kcmkdm-default-grub.diff13
-rw-r--r--opensuse/tdebase/kcmsamba_log.diff31
-rw-r--r--opensuse/tdebase/kcmshell_use_kde-sound.diff11
-rw-r--r--opensuse/tdebase/kcontrol-energy.diff167
-rw-r--r--opensuse/tdebase/kcontrol.diff11
-rw-r--r--opensuse/tdebase/kde3-session-restore.diff12
-rw-r--r--opensuse/tdebase/kde3-session.diff13
-rw-r--r--opensuse/tdebase/kdebase_khc_rellinks.diff606
-rw-r--r--opensuse/tdebase/kdebase_networkstatus_branch.diff36
-rw-r--r--opensuse/tdebase/kdeeject.diff58
-rw-r--r--opensuse/tdebase/kdesktop_icons.diff311
-rw-r--r--opensuse/tdebase/kdesu-remember-keep-password.diff18
-rw-r--r--opensuse/tdebase/kdesud-security.diff21
-rw-r--r--opensuse/tdebase/kdm-admin-mode.diff424
-rw-r--r--opensuse/tdebase/kdm-aliasing.diff11
-rw-r--r--opensuse/tdebase/kdm-align-userlist-labels.diff46
-rw-r--r--opensuse/tdebase/kdm-all-users-nopass.diff34
-rw-r--r--opensuse/tdebase/kdm-audit-log.diff190
-rw-r--r--opensuse/tdebase/kdm-color-scheme.diff28
-rw-r--r--opensuse/tdebase/kdm-consolekit.diff822
-rw-r--r--opensuse/tdebase/kdm-cope-with-new-grub.diff27
-rw-r--r--opensuse/tdebase/kdm-make_it_cool.diff1534
-rw-r--r--opensuse/tdebase/kdm-mark_autologin.diff13
-rw-r--r--opensuse/tdebase/kdm-pam-np-legacy7
-rw-r--r--opensuse/tdebase/kdm-relaxed-auth.diff22
-rw-r--r--opensuse/tdebase/kdm-suspend-hal.diff331
-rw-r--r--opensuse/tdebase/kdm-sysconfig-values.diff737
-rw-r--r--opensuse/tdebase/kdm-use-rpmoptflags.diff29
-rw-r--r--opensuse/tdebase/kdm-wordbreak.diff22
-rw-r--r--opensuse/tdebase/kfontinst.diff10
-rw-r--r--opensuse/tdebase/khelpcenter-beagle.diff172
-rw-r--r--opensuse/tdebase/khelpcenter-delayed-indexcheck.cpp23
-rw-r--r--opensuse/tdebase/khelpcenter-gnome-support-legacy.patch327
-rw-r--r--opensuse/tdebase/khelpcenter-gnome-support.patch335
-rw-r--r--opensuse/tdebase/khelpcenter-localindices.patch41
-rw-r--r--opensuse/tdebase/khelpcenter-use-suseconfig-indexer.diff25
-rw-r--r--opensuse/tdebase/khelpcenter-use-susehelp.diff13
-rw-r--r--opensuse/tdebase/khotkeys-multimedia-action.diff345
-rw-r--r--opensuse/tdebase/khotkeys-multimedia-action2.diff81
-rw-r--r--opensuse/tdebase/kicker-defaults.diff57
-rw-r--r--opensuse/tdebase/kickerrc63
-rw-r--r--opensuse/tdebase/kickoff-beagle.diff1329
-rw-r--r--opensuse/tdebase/kickoff-data.tar.bz2bin581352 -> 0 bytes
-rw-r--r--opensuse/tdebase/kickoff-install-software.diff25
-rw-r--r--opensuse/tdebase/kickoff-kcm.diff217
-rw-r--r--opensuse/tdebase/kickoff.diff9812
-rw-r--r--opensuse/tdebase/kio-media-errorhandling.diff18
-rw-r--r--opensuse/tdebase/klipperrc.diff22
-rw-r--r--opensuse/tdebase/kmenu-search-fs20050503-fixed.diff342
-rw-r--r--opensuse/tdebase/kmenu-search-slowdown-fix.diff129
-rw-r--r--opensuse/tdebase/knetattach-show.diff7
-rw-r--r--opensuse/tdebase/kompmgr_use_defaults.diff34
-rw-r--r--opensuse/tdebase/konq-combo-editor.diff42
-rw-r--r--opensuse/tdebase/konsole-schema-update.diff33
-rw-r--r--opensuse/tdebase/konsole_keytab.diff17
-rw-r--r--opensuse/tdebase/kpamgreeter.diff852
-rw-r--r--opensuse/tdebase/krandr-0.5.2.1.diff.bz2bin22752 -> 0 bytes
-rw-r--r--opensuse/tdebase/kscreensaver-random-NG.diff189
-rw-r--r--opensuse/tdebase/ksmserver-defaulttohalt.diff13
-rw-r--r--opensuse/tdebase/ksmserver-kdeinit.diff67
-rw-r--r--opensuse/tdebase/ksmserver-suspend.diff233
-rw-r--r--opensuse/tdebase/ksmserver-timed.diff700
-rw-r--r--opensuse/tdebase/ksmserver-tooltips.diff38
-rw-r--r--opensuse/tdebase/ksplashml.patch19
-rw-r--r--opensuse/tdebase/ksysguard-slp-ratelimit.diff15
-rw-r--r--opensuse/tdebase/ksysguardd-openslp.diff288
-rw-r--r--opensuse/tdebase/ksysguardd.init80
-rw-r--r--opensuse/tdebase/ksysguardd.reg12
-rw-r--r--opensuse/tdebase/kwinbindings.diff43
-rw-r--r--opensuse/tdebase/kxkb-include-latin-layout.diff14
-rw-r--r--opensuse/tdebase/less_verbal_kdesu.patch26
-rw-r--r--opensuse/tdebase/libkonq-kdemm.diff117
-rw-r--r--opensuse/tdebase/locale-dont-show-flag.diff33
-rw-r--r--opensuse/tdebase/lock-xvkbd.diff380
-rw-r--r--opensuse/tdebase/lowdiskspace.patch413
-rw-r--r--opensuse/tdebase/mach_blass.diff160
-rw-r--r--opensuse/tdebase/make-wallpapers-hideable.diff48
-rw-r--r--opensuse/tdebase/media-cryptosupport.diff31
-rw-r--r--opensuse/tdebase/media-iPod.diff26
-rw-r--r--opensuse/tdebase/media-teardown_crypto.diff175
-rw-r--r--opensuse/tdebase/media_suse.diff49
-rw-r--r--opensuse/tdebase/mediamanager-mount-point-utf8.diff13
-rw-r--r--opensuse/tdebase/minicli-combo-editor.diff34
-rw-r--r--opensuse/tdebase/mp3-info.tar.bz2bin2606 -> 0 bytes
-rw-r--r--opensuse/tdebase/mtab-reenable.patch153
-rw-r--r--opensuse/tdebase/non-fast-malloc.diff15
-rw-r--r--opensuse/tdebase/nsplugin-Preference.diff13
-rw-r--r--opensuse/tdebase/nsplugin-init-gtk.diff49
-rw-r--r--opensuse/tdebase/openssl1.patch40
-rw-r--r--opensuse/tdebase/optional-compmgr.diff32
-rw-r--r--opensuse/tdebase/quick_browser_menu.diff30
-rw-r--r--opensuse/tdebase/remove-beagle-stuff.diff34
-rw-r--r--opensuse/tdebase/restore-description-parens.diff13
-rw-r--r--opensuse/tdebase/rotate-wacom-pointers.diff291
-rw-r--r--opensuse/tdebase/runupdater.patch133
-rw-r--r--opensuse/tdebase/select-wm-gui.diff635
-rw-r--r--opensuse/tdebase/short-menus.diff209
-rw-r--r--opensuse/tdebase/show-konqueror-in-menu.diff30
-rw-r--r--opensuse/tdebase/simplify-randr-settings.diff91
-rw-r--r--opensuse/tdebase/sourceforge.desktop7
-rw-r--r--opensuse/tdebase/spellcheck-default-utf8.diff13
-rw-r--r--opensuse/tdebase/startkde.diff80
-rw-r--r--opensuse/tdebase/startkde.suse.sh140
-rw-r--r--opensuse/tdebase/stopkde.suse.sh13
-rw-r--r--opensuse/tdebase/suse_default_move.diff83
-rw-r--r--opensuse/tdebase/suspend-kpowersave.diff178
-rw-r--r--opensuse/tdebase/suspend-unmount.diff179
-rw-r--r--opensuse/tdebase/system-folder_man.diff13
-rw-r--r--opensuse/tdebase/systray_order.diff162
-rw-r--r--opensuse/tdebase/taskbar.patch29
-rw-r--r--opensuse/tdebase/tdebase.changes5422
-rw-r--r--opensuse/tdebase/tdebase.fillup25
-rw-r--r--opensuse/tdebase/tdebase.spec1851
-rw-r--r--opensuse/tdebase/teach-minicli-lock.diff30
-rw-r--r--opensuse/tdebase/uninit.diff10
-rw-r--r--opensuse/tdebase/use-full-hinting-by-default.diff35
-rw-r--r--opensuse/tdebase/use-pam-before-classic.diff17
-rw-r--r--opensuse/tdebase/wizard_small.pngbin40259 -> 0 bytes
-rw-r--r--opensuse/tdebase/workaround-pdf-on64bit-nsplugin-bug.diff44
-rw-r--r--opensuse/tdebase/xcursor.diff36
-rw-r--r--opensuse/tdebase/xinerama.patch951
-rw-r--r--opensuse/tdebase/zh_TW.flag.pngbin175 -> 0 bytes
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
deleted file mode 100644
index db4be9f47..000000000
--- a/opensuse/tdebase/console8x16.pcf.gz
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index c311d10b3..000000000
--- a/opensuse/tdebase/fileshareset.8.gz
+++ /dev/null
Binary files differ
diff --git a/opensuse/tdebase/fileshareset2.tar.bz2 b/opensuse/tdebase/fileshareset2.tar.bz2
deleted file mode 100644
index 5e26bb796..000000000
--- a/opensuse/tdebase/fileshareset2.tar.bz2
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 81f8aae2a..000000000
--- a/opensuse/tdebase/kcheckpass.8.gz
+++ /dev/null
Binary files differ
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>&amp;File</text>
-@@ -23,8 +23,8 @@
- </Menu>
- <Menu name="go_web">
- <text>&amp;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( &copy, 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 &amp; 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
deleted file mode 100644
index 9841a0aa0..000000000
--- a/opensuse/tdebase/kickoff-data.tar.bz2
+++ /dev/null
Binary files differ
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&nbsp;<b>%1</b>&nbsp;on&nbsp;<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&amp;nbsp;&lt;b&gt;user&lt;/b&gt;&amp;nbsp;on&amp;nbsp;&lt;b&gt;host&lt;/b&gt;</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
deleted file mode 100644
index 5e35b382b..000000000
--- a/opensuse/tdebase/krandr-0.5.2.1.diff.bz2
+++ /dev/null
Binary files differ
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, &copy);
-+ //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
deleted file mode 100644
index f6cf95bcd..000000000
--- a/opensuse/tdebase/mp3-info.tar.bz2
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 52233e341..000000000
--- a/opensuse/tdebase/wizard_small.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 472e3376a..000000000
--- a/opensuse/tdebase/zh_TW.flag.png
+++ /dev/null
Binary files differ