summaryrefslogtreecommitdiffstats
path: root/kdesktop
diff options
context:
space:
mode:
Diffstat (limited to 'kdesktop')
-rw-r--r--kdesktop/CMakeLists.txt14
-rw-r--r--kdesktop/DESIGN45
-rw-r--r--kdesktop/KScreensaverIface.h18
-rw-r--r--kdesktop/Makefile.am10
-rw-r--r--kdesktop/bgmanager.cpp (renamed from kdesktop/bgmanager.cc)55
-rw-r--r--kdesktop/bgmanager.h6
-rw-r--r--kdesktop/desktop.cpp (renamed from kdesktop/desktop.cc)166
-rw-r--r--kdesktop/desktop.h8
-rw-r--r--kdesktop/init.cpp (renamed from kdesktop/init.cc)18
-rw-r--r--kdesktop/kcustommenu.cpp (renamed from kdesktop/kcustommenu.cc)4
-rw-r--r--kdesktop/kcustommenu.h2
-rw-r--r--kdesktop/kdesktop.kcfg26
-rw-r--r--kdesktop/kdesktopSetAsBackground.desktop38
-rw-r--r--kdesktop/kdesktopapp.cpp8
-rw-r--r--kdesktop/kdesktopapp.h12
-rw-r--r--kdesktop/kdesktopbindings.cpp53
-rw-r--r--kdesktop/kdesktopshadowsettings.h2
-rw-r--r--kdesktop/kdiconview.cpp (renamed from kdesktop/kdiconview.cc)229
-rw-r--r--kdesktop/kdiconview.h15
-rw-r--r--kdesktop/krootwm.cpp (renamed from kdesktop/krootwm.cc)168
-rw-r--r--kdesktop/krootwm.h4
-rw-r--r--kdesktop/kwebdesktop/kwebdesktop.cpp22
-rw-r--r--kdesktop/kwebdesktop/kwebdesktop.h6
-rw-r--r--kdesktop/kwebdesktop/kwebdesktop.kcfg2
-rw-r--r--kdesktop/lock/CMakeLists.txt8
-rw-r--r--kdesktop/lock/Makefile.am2
-rw-r--r--kdesktop/lock/autologout.cpp (renamed from kdesktop/lock/autologout.cc)6
-rw-r--r--kdesktop/lock/autologout.h2
-rw-r--r--kdesktop/lock/infodlg.cpp (renamed from kdesktop/lock/infodlg.cc)6
-rw-r--r--kdesktop/lock/infodlg.h2
-rw-r--r--kdesktop/lock/lockdlg.cpp (renamed from kdesktop/lock/lockdlg.cc)95
-rw-r--r--kdesktop/lock/lockdlg.h2
-rw-r--r--kdesktop/lock/lockprocess.cpp (renamed from kdesktop/lock/lockprocess.cc)337
-rw-r--r--kdesktop/lock/lockprocess.h20
-rw-r--r--kdesktop/lock/main.cpp (renamed from kdesktop/lock/main.cc)136
-rw-r--r--kdesktop/lock/main.h4
-rw-r--r--kdesktop/lock/querydlg.cpp (renamed from kdesktop/lock/querydlg.cc)8
-rw-r--r--kdesktop/lock/querydlg.h2
-rw-r--r--kdesktop/lock/sakdlg.cpp (renamed from kdesktop/lock/sakdlg.cc)6
-rw-r--r--kdesktop/lock/sakdlg.h2
-rw-r--r--kdesktop/lock/securedlg.cpp (renamed from kdesktop/lock/securedlg.cc)12
-rw-r--r--kdesktop/lock/securedlg.h2
-rw-r--r--kdesktop/lockeng.cc1004
-rw-r--r--kdesktop/lockeng.cpp1049
-rw-r--r--kdesktop/lockeng.h169
-rw-r--r--kdesktop/main.cpp (renamed from kdesktop/main.cc)36
-rw-r--r--kdesktop/minicli.cpp65
-rw-r--r--kdesktop/minicli.h2
-rw-r--r--kdesktop/minicli_ui.ui11
-rwxr-xr-x[-rw-r--r--]kdesktop/pics/ksslogo.pngbin5499 -> 7098 bytes
-rwxr-xr-x[-rw-r--r--]kdesktop/pics/splash.pngbin108731 -> 118404 bytes
-rw-r--r--kdesktop/pixmapserver.cpp (renamed from kdesktop/pixmapserver.cc)4
-rw-r--r--kdesktop/pixmapserver.h8
-rw-r--r--kdesktop/startupid.cpp24
-rw-r--r--kdesktop/startupid.h2
-rw-r--r--kdesktop/tdefileividesktop.cpp12
-rw-r--r--kdesktop/tdefileividesktop.h2
-rw-r--r--kdesktop/xautolock.cpp (renamed from kdesktop/xautolock.cc)2
-rw-r--r--kdesktop/xautolock.h2
59 files changed, 2135 insertions, 1840 deletions
diff --git a/kdesktop/CMakeLists.txt b/kdesktop/CMakeLists.txt
index a4714ce59..c65986368 100644
--- a/kdesktop/CMakeLists.txt
+++ b/kdesktop/CMakeLists.txt
@@ -81,13 +81,13 @@ tde_add_executable( kcheckrunning
##### kdesktop (tdeinit) ########################
set( target kdesktop )
-set_property( SOURCE lockeng.cc APPEND PROPERTY COMPILE_DEFINITIONS KDE_CONFDIR="${TDE_CONFIG_DIR}" )
+set_property( SOURCE lockeng.cpp APPEND PROPERTY COMPILE_DEFINITIONS KDE_CONFDIR="${TDE_CONFIG_DIR}" )
set( ${target}_SRCS
- main.cc krootwm.cc xautolock.cc kdiconview.cc init.cc
- desktop.cc lockeng.cc KDesktopIface.skel bgmanager.cc
+ main.cpp krootwm.cpp xautolock.cpp kdiconview.cpp init.cpp
+ desktop.cpp lockeng.cpp KDesktopIface.skel bgmanager.cpp
KScreensaverIface.skel minicli.cpp KBackgroundIface.skel
- pixmapserver.cc kcustommenu.cc startupid.cpp minicli_ui.ui
+ pixmapserver.cpp kcustommenu.cpp startupid.cpp minicli_ui.ui
xautolock_diy.c xautolock_engine.c kshadowengine.cpp
kshadowsettings.cpp kdesktopshadowsettings.cpp
tdefileividesktop.cpp kdesktopapp.cpp
@@ -96,9 +96,9 @@ set( ${target}_SRCS
tde_add_tdeinit_executable( ${target} AUTOMOC
SOURCES ${${target}_SRCS}
LINK
- pthread kdesktopsettings-static bgnd-static dmctl-static
- konq-shared tdeutils-shared tdesu-shared
- ${XRENDER_LIBRARIES} ${XCURSOR_LIBRARIES} Xext ${DL_LIBRARIES}
+ ${CMAKE_THREAD_LIBS_INIT} kdesktopsettings-static bgnd-static dmctl-static
+ konq-shared tdeutils-shared tdesu-shared ${TDEHW_LIBRARIES}
+ ${XRENDER_LIBRARIES} ${XCURSOR_LIBRARIES} Xext ${CMAKE_DL_LIBS}
${XSS_LIBRARIES} ${DBUS_1_TQT_LIBRARIES}
)
diff --git a/kdesktop/DESIGN b/kdesktop/DESIGN
index f69ee2198..170a86a75 100644
--- a/kdesktop/DESIGN
+++ b/kdesktop/DESIGN
@@ -7,6 +7,7 @@ Author :
Last modified: 24 Oct 1999
+
Overall design of KDesktop :
=============================
@@ -14,6 +15,7 @@ KDesktop is the program that handles the desktop icons,
the popup menus for the desktop, the mac menubar, and the
screensaver system.
+
Files :
=======
@@ -34,6 +36,7 @@ KDesktopIface* : DCOP interface for kdesktop, used by kfmclient
lock* : screen saver/locker
+
Libs used by KDesktop
======================
@@ -41,6 +44,7 @@ tdecore, tdeui, tdefile - usual stuff :)
libtdeio - I/O stuff, mimetypes, services, registry
libkonq - properties dialog, templates ("new") menu, dir lister, settings
+
Screensaver
===========
@@ -69,6 +73,7 @@ The new background code is in bgrender.cpp and bgmanager.cpp. Some features:
* Support for xearth like programs.
* Can export a pixmap of the desktop background for pseudo transparency.
+
Multiple monitors
=================
Two monitors showing different things (not a mirror-setup) can be configured
@@ -92,3 +97,43 @@ In case of 2 screen (multihead)
| | | | desktopGeometry = 3200 x 1200
+----+ +-----+ screenGeometry = 1600 x 1200 (for each monitor)
+
+Interaction between kdesktop and kdesktop_lock
+==============================================
+kdesktop and kdesktop_lock interact using POSIX signals to coordinate their activities.
+Each time the screensaver or lock is activated and then stopped/unlocked, the current
+kdesktop_lock process is terminated and respawned, while kdesktop waits for the new process
+to be ready.
+
+kdesktop to kdesktop_lock communication:
+ kdesktop uses four signals to request different types of locks. These signals do not activate
+ the lock/screensaver. Some of the signals can be combined together, for example to request a
+ lock with blank screen.
+
+ - USR1 : request lock of the screen
+ - USR2 : request screensaver only, no lock
+ - WINCH: request lock of the screen using SAK (Secure Attention Key)
+ - TTIN : request blank screen for saver or lock
+
+ The lock/screensaver is started using a fifth signal.
+ - TTOU : activate the scrensaver or lock
+
+kdesktop_lock to kdesktop communication:
+ kdesktop_lock uses three signals to inform kdesktop of status changes.
+
+ - TTIN: the lock process is ready. This is sent after the process has been created/respawned
+ - USR2: the lock/screensaver has been activated
+ - USR1: the lock/screensaver has been unlocked/stopped
+
+Communication is handled by the screen saver engine defined in 'lockeng.{h,cpp}'.
+The engine is split into two parts, the 'SaverEngine' running in the GUI thread and
+the 'SaverEngineEventHandler' running in a separate thread and eventloop.
+The 'SaverEngine' handles communication with X11, DCOP and DBUS while the
+'SaverEngineEventHandler' handles communication with the actual lock process.
+Several actions require cooperation of the two parts, so in various methods
+there will be inter-thread calls (using timers or by emitting signals) to
+trigger the other side remaining logic.
+This complex design is necessary to avoid blocking the main GUI application event loop,
+which has several tasks to manage and therefore can't affort to wait in a suspended state.
+This was previously leading to deadlock when DCOP calls where executed on the secondary
+thread/eventloop, for example when changing desktop while the lock process was restarting.
diff --git a/kdesktop/KScreensaverIface.h b/kdesktop/KScreensaverIface.h
index de5c19f2b..b6434738e 100644
--- a/kdesktop/KScreensaverIface.h
+++ b/kdesktop/KScreensaverIface.h
@@ -12,11 +12,10 @@ public:
KScreensaverIface() : DCOPObject("KScreensaverIface") {}
k_dcop:
- /** Lock the screen now even if the screensaver does not lock by default. */
+ /** Lock the screen now even if the screensaver does not lock by default */
virtual void lock() = 0;
- /** Save the screen now. If the user has locking enabled, the screen is
- * locked also. */
+ /** Start the screensaver now. If the user has locking enabled, the screen is locked also */
virtual void save() = 0;
/** Quit the screensaver if it is running */
@@ -29,22 +28,23 @@ k_dcop:
* Enable/disable the screensaver
* returns true if the action succeeded
*/
- virtual bool enable( bool e ) = 0;
+ virtual bool enable(bool e) = 0;
/** Is the screen currently blanked? */
virtual bool isBlanked() = 0;
- /** Reload the screensaver configuration. */
+ /** Reload the screensaver configuration */
virtual void configure() = 0;
- /** Only blank the screen (and possibly lock). Do not use a custom
- * screen saver in the interest of saving battery.
+ /**
+ * Set the screensaver to blank (and possibly lock).
+ * This method does not actually start the screensaver.
*/
- virtual void setBlankOnly( bool blankOnly ) = 0;
+ virtual void setBlankOnly(bool blankOnly) = 0;
/***
* @internal
- */
+ */
virtual void saverLockReady() = 0;
};
diff --git a/kdesktop/Makefile.am b/kdesktop/Makefile.am
index b28d1ee66..b2d4c2b2c 100644
--- a/kdesktop/Makefile.am
+++ b/kdesktop/Makefile.am
@@ -17,10 +17,10 @@ libkdesktopsettings_la_LDFLAGS = $(all_libraries) -no-undefined
libkdesktopsettings_la_LIBADD = $(LIB_TDECORE)
libkdesktopsettings_la_SOURCES = kdesktopsettings.kcfgc tdelaunchsettings.kcfgc
-kdesktop_la_SOURCES = main.cc krootwm.cc xautolock.cc kdiconview.cc desktop.cc \
- lockeng.cc KDesktopIface.skel \
- bgmanager.cc init.cc KScreensaverIface.skel \
- minicli.cpp KBackgroundIface.skel pixmapserver.cc kcustommenu.cc \
+kdesktop_la_SOURCES = main.cpp krootwm.cpp xautolock.cpp kdiconview.cpp desktop.cpp \
+ lockeng.cpp KDesktopIface.skel \
+ bgmanager.cpp init.cpp KScreensaverIface.skel \
+ minicli.cpp KBackgroundIface.skel pixmapserver.cpp kcustommenu.cpp \
startupid.cpp minicli_ui.ui xautolock_diy.c xautolock_engine.c \
kshadowengine.cpp kshadowsettings.cpp \
kdesktopshadowsettings.cpp tdefileividesktop.cpp \
@@ -59,7 +59,7 @@ startupid.lo: tdelaunchsettings.h
messages: rc.cpp
$(EXTRACTRC) lock/*.ui >> rc.cpp
- $(XGETTEXT) lock/*.cc *.cc *.cpp *.h -o $(podir)/kdesktop.pot
+ $(XGETTEXT) lock/*.cpp *.cpp *.h -o $(podir)/kdesktop.pot
menu_DATA = kdesktop_custom_menu1 kdesktop_custom_menu2
menudir = $(kde_confdir)
diff --git a/kdesktop/bgmanager.cc b/kdesktop/bgmanager.cpp
index 7c641dd9d..49cff2c16 100644
--- a/kdesktop/bgmanager.cc
+++ b/kdesktop/bgmanager.cpp
@@ -1,5 +1,4 @@
-/* vi: ts=8 sts=4 sw=4
- * kate: space-indent on; tab-width 8; indent-width 4; indent-mode cstyle;
+/*
*
* This file is part of the KDE project, module kdesktop.
* Copyright (C) 1999,2000 Geert Jansen <jansen@kde.org>
@@ -79,7 +78,7 @@ KBackgroundManager::KBackgroundManager(TQWidget *desktop, KWinModule* twinModule
m_pDesktop = desktop;
if (desktop == 0L)
- desktop = TQT_TQWIDGET(TDEApplication::desktop()->screen());
+ desktop = TDEApplication::desktop()->screen();
m_Renderer.resize( 1 );
m_Cache.resize( 1 );
@@ -98,40 +97,40 @@ KBackgroundManager::KBackgroundManager(TQWidget *desktop, KWinModule* twinModule
m_Cache[i]->hash = 0;
m_Cache[i]->exp_from = -1;
m_Renderer.insert (i, new KVirtualBGRenderer(i,m_pConfig));
- connect(m_Renderer[i], TQT_SIGNAL(imageDone(int)), TQT_SLOT(slotImageDone(int)));
+ connect(m_Renderer[i], TQ_SIGNAL(imageDone(int)), TQ_SLOT(slotImageDone(int)));
m_Renderer[i]->enableTiling( true ); // optimize
}
#ifdef COMPOSITE
- m_tPixmap = new KPixmap(kapp->desktop()->size());
+ m_tPixmap = new KPixmap(tdeApp->desktop()->size());
m_tPixmap->fill(TQColor(0, 0x0));
- connect(myApp, TQT_SIGNAL(cmBackgroundChanged( bool )),
- TQT_SLOT(slotCmBackgroundChanged( bool )));
+ connect(myApp, TQ_SIGNAL(cmBackgroundChanged( bool )),
+ TQ_SLOT(slotCmBackgroundChanged( bool )));
#endif
configure();
m_pTimer = new TQTimer(this);
- connect(m_pTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotTimeout()));
+ connect(m_pTimer, TQ_SIGNAL(timeout()), TQ_SLOT(slotTimeout()));
m_pTimer->start( 60000 );
/*CrossFade's config*/
m_crossTimer = new TQTimer(this);
- connect(m_crossTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotCrossFadeTimeout()));
+ connect(m_crossTimer, TQ_SIGNAL(timeout()), TQ_SLOT(slotCrossFadeTimeout()));
resizingDesktop = true;
/*Ends here*/
- connect(m_pKwinmodule, TQT_SIGNAL(currentDesktopChanged(int)),
- TQT_SLOT(slotChangeDesktop(int)));
- connect(m_pKwinmodule, TQT_SIGNAL(numberOfDesktopsChanged(int)),
- TQT_SLOT(slotChangeNumberOfDesktops(int)));
- connect(m_pKwinmodule, TQT_SIGNAL(currentDesktopViewportChanged(int, const TQPoint&)),
- TQT_SLOT(slotChangeViewport(int, const TQPoint&)));
+ connect(m_pKwinmodule, TQ_SIGNAL(currentDesktopChanged(int)),
+ TQ_SLOT(slotChangeDesktop(int)));
+ connect(m_pKwinmodule, TQ_SIGNAL(numberOfDesktopsChanged(int)),
+ TQ_SLOT(slotChangeNumberOfDesktops(int)));
+ connect(m_pKwinmodule, TQ_SIGNAL(currentDesktopViewportChanged(int, const TQPoint&)),
+ TQ_SLOT(slotChangeViewport(int, const TQPoint&)));
#if (TQT_VERSION-0 >= 0x030200)
- connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized())); // RANDR support
+ connect( tdeApp->desktop(), TQ_SIGNAL( resized( int )), TQ_SLOT( desktopResized())); // RANDR support
#endif
TQSize s(m_pKwinmodule->numberOfViewports(m_pKwinmodule->currentDesktop()));
@@ -339,7 +338,7 @@ void KBackgroundManager::slotChangeNumberOfDesktops(int num)
m_Cache[i]->hash = 0;
m_Cache[i]->exp_from = -1;
m_Renderer.insert(i, new KVirtualBGRenderer(i,m_pConfig));
- connect(m_Renderer[i], TQT_SIGNAL(imageDone(int)), TQT_SLOT(slotImageDone(int)));
+ connect(m_Renderer[i], TQ_SIGNAL(imageDone(int)), TQ_SLOT(slotImageDone(int)));
m_Renderer[i]->enableTiling( true ); // optimize
}
}
@@ -543,16 +542,16 @@ void KBackgroundManager::setPixmap(KPixmap *pm, int hash, int desk)
if( !root_cleared )
{ // clear the root window pixmap set by tdm
root_cleared = true;
- TQTimer::singleShot( 0, this, TQT_SLOT( clearRoot()));
+ TQTimer::singleShot( 0, this, TQ_SLOT( clearRoot()));
// but make the pixmap visible until m_pDesktop is visible
- TQT_TQWIDGET(TDEApplication::desktop()->screen())->setErasePixmap(*ep);
- TQT_TQWIDGET(TDEApplication::desktop()->screen())->erase();
+ TDEApplication::desktop()->screen()->setErasePixmap(*ep);
+ TDEApplication::desktop()->screen()->erase();
}
}
else
{
- TQT_TQWIDGET(TDEApplication::desktop()->screen())->setErasePixmap(*ep);
- TQT_TQWIDGET(TDEApplication::desktop()->screen())->erase();
+ TDEApplication::desktop()->screen()->setErasePixmap(*ep);
+ TDEApplication::desktop()->screen()->erase();
}
// and export it via Esetroot-style for gnome/GTK apps to share in the pretties
@@ -572,8 +571,8 @@ void KBackgroundManager::setPixmap(KPixmap *pm, int hash, int desk)
void KBackgroundManager::clearRoot()
{
- TQT_TQWIDGET(TDEApplication::desktop()->screen())->setErasePixmap( TQPixmap());
- TQT_TQWIDGET(TDEApplication::desktop()->screen())->erase();
+ TDEApplication::desktop()->screen()->setErasePixmap( TQPixmap());
+ TDEApplication::desktop()->screen()->erase();
}
/*
@@ -682,7 +681,7 @@ void KBackgroundManager::slotImageDone(int desk)
{
m_bBgInitDone = true;
emit initDone();
- TQTimer::singleShot( 30000, this, TQT_SLOT( saveImages()));
+ TQTimer::singleShot( 30000, this, TQ_SLOT( saveImages()));
do_cleanup = false;
}
}
@@ -1005,7 +1004,7 @@ void KBackgroundManager::repaintBackground()
if (m_pDesktop)
m_pDesktop->repaint();
else
- TQT_TQWIDGET(TDEApplication::desktop()->screen())->erase();
+ TDEApplication::desktop()->screen()->erase();
}
void KBackgroundManager::desktopResized()
@@ -1027,13 +1026,13 @@ void KBackgroundManager::desktopResized()
#ifdef COMPOSITE
if (m_tPixmap)
delete m_tPixmap;
- m_tPixmap = new KPixmap(kapp->desktop()->size());
+ m_tPixmap = new KPixmap(tdeApp->desktop()->size());
m_tPixmap->fill(TQColor(0, 0x0));
#endif
m_Hash = 0;
if( m_pDesktop ) {
- m_pDesktop->resize( kapp->desktop()->geometry().size());
+ m_pDesktop->resize( tdeApp->desktop()->geometry().size());
if (m_Renderer[effectiveDesktop()]->renderer(0)->usingCrossXml()){
m_Renderer[effectiveDesktop()]->renderer(0)->changeWallpaper();
}
diff --git a/kdesktop/bgmanager.h b/kdesktop/bgmanager.h
index 43e57a372..d78ebebc3 100644
--- a/kdesktop/bgmanager.h
+++ b/kdesktop/bgmanager.h
@@ -1,4 +1,4 @@
-/* vi: ts=8 sts=4 sw=4
+/*
*
* This file is part of the KDE project, module kdesktop.
* Copyright (C) 1999,2000 Geert Jansen <jansen@kde.org>
@@ -16,7 +16,7 @@
#include <tqdatetime.h>
#include <KBackgroundIface.h>
-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300
+#if defined(TQ_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300
#define COMPOSITE
#endif
@@ -54,7 +54,7 @@ class KBackgroundManager
: public TQObject,
public KBackgroundIface
{
- Q_OBJECT
+ TQ_OBJECT
public:
diff --git a/kdesktop/desktop.cc b/kdesktop/desktop.cpp
index 2732bff08..3ef0e33e7 100644
--- a/kdesktop/desktop.cc
+++ b/kdesktop/desktop.cpp
@@ -44,17 +44,17 @@
#include <dcopclient.h>
#include <kcursor.h>
#include <kdebug.h>
-#include <kstandarddirs.h>
+#include <tdestandarddirs.h>
#include <kimageio.h>
#include <kinputdialog.h>
#include <kipc.h>
#include <tdelocale.h>
#include <tdeio/netaccess.h>
-#include <kprocess.h>
+#include <tdeprocess.h>
#include <tdesycoca.h>
#include <tdetempfile.h>
#include <tdemessagebox.h>
-#include <kglobalaccel.h>
+#include <tdeglobalaccel.h>
#include <twinmodule.h>
#include <krun.h>
#include <twin.h>
@@ -71,21 +71,21 @@ extern TQCString kdesktop_name, kicker_name, twin_name;
KRootWidget::KRootWidget() : TQObject()
{
- kapp->desktop()->installEventFilter(this);
- kapp->desktop()->setAcceptDrops( true );
+ tdeApp->desktop()->installEventFilter(this);
+ tdeApp->desktop()->setAcceptDrops( true );
}
bool KRootWidget::eventFilter ( TQObject *, TQEvent * e )
{
if (e->type() == TQEvent::MouseButtonPress)
{
- TQMouseEvent *me = TQT_TQMOUSEEVENT(e);
+ TQMouseEvent *me = static_cast<TQMouseEvent*>(e);
KRootWm::self()->mousePressed( me->globalPos(), me->button() );
return true;
}
else if (e->type() == TQEvent::Wheel)
{
- TQWheelEvent *we = TQT_TQWHEELEVENT(e);
+ TQWheelEvent *we = static_cast<TQWheelEvent*>(e);
emit wheelRolled(we->delta());
return true;
}
@@ -113,7 +113,7 @@ bool KRootWidget::eventFilter ( TQObject *, TQEvent * e )
else if ( e->type() == TQEvent::Drop )
{
TQDropEvent* de = static_cast<TQDropEvent*>( e );
- if ( KColorDrag::canDecode( de ) )
+ if ( KColorDrag::canDecode( de ) )
emit colorDropEvent( de );
else if ( TQImageDrag::canDecode( de ) )
emit imageDropEvent( de );
@@ -155,17 +155,17 @@ KDesktop::KDesktop( SaverEngine* saver, bool x_root_hack, bool wait_for_kded ) :
setCaption( "KDE Desktop");
setAcceptDrops(true); // WStyle_Customize seems to disable that
- m_pKwinmodule = new KWinModule( TQT_TQOBJECT(this) );
+ m_pKwinmodule = new KWinModule( this );
- kapp->dcopClient()->setNotifications(true);
- kapp->dcopClient()->connectDCOPSignal(kicker_name, kicker_name, "desktopIconsAreaChanged(TQRect, int)",
+ tdeApp->dcopClient()->setNotifications(true);
+ tdeApp->dcopClient()->connectDCOPSignal(kicker_name, kicker_name, "desktopIconsAreaChanged(TQRect, int)",
"KDesktopIface", "desktopIconsAreaChanged(TQRect, int)", false);
// Dont repaint on configuration changes during construction
m_bInit = true;
// It's the child widget that gets the focus, not us
- setFocusPolicy( TQ_NoFocus );
+ setFocusPolicy( TQWidget::NoFocus );
if ( x_root_hack )
{
@@ -184,28 +184,28 @@ KDesktop::KDesktop( SaverEngine* saver, bool x_root_hack, bool wait_for_kded ) :
setGeometry( TQApplication::desktop()->geometry() );
lower();
- connect( kapp, TQT_SIGNAL( shutDown() ),
- this, TQT_SLOT( slotShutdown() ) );
+ connect( tdeApp, TQ_SIGNAL( shutDown() ),
+ this, TQ_SLOT( slotShutdown() ) );
- connect(kapp, TQT_SIGNAL(settingsChanged(int)),
- this, TQT_SLOT(slotSettingsChanged(int)));
- kapp->addKipcEventMask(KIPC::SettingsChanged);
+ connect(tdeApp, TQ_SIGNAL(settingsChanged(int)),
+ this, TQ_SLOT(slotSettingsChanged(int)));
+ tdeApp->addKipcEventMask(KIPC::SettingsChanged);
- kapp->addKipcEventMask(KIPC::IconChanged);
- connect(kapp, TQT_SIGNAL(iconChanged(int)), this, TQT_SLOT(slotIconChanged(int)));
+ tdeApp->addKipcEventMask(KIPC::IconChanged);
+ connect(tdeApp, TQ_SIGNAL(iconChanged(int)), this, TQ_SLOT(slotIconChanged(int)));
- connect(KSycoca::self(), TQT_SIGNAL(databaseChanged()),
- this, TQT_SLOT(slotDatabaseChanged()));
+ connect(KSycoca::self(), TQ_SIGNAL(databaseChanged()),
+ this, TQ_SLOT(slotDatabaseChanged()));
m_pIconView = 0;
m_pRootWidget = 0;
bgMgr = 0;
initRoot();
- TQTimer::singleShot(0, this, TQT_SLOT( slotStart() ));
+ TQTimer::singleShot(0, this, TQ_SLOT( slotStart() ));
#if (TQT_VERSION-0 >= 0x030200) // XRANDR support
- connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized()));
+ connect( tdeApp->desktop(), TQ_SIGNAL( resized( int )), TQ_SLOT( desktopResized()));
#endif
}
@@ -215,7 +215,7 @@ KDesktop::initRoot()
Display *dpy = tqt_xdisplay();
Window root = RootWindow(dpy, kdesktop_screen_number);
XDefineCursor(dpy, root, cursor().handle());
-
+
m_bDesktopEnabled = KDesktopSettings::desktopEnabled();
if ( !m_bDesktopEnabled && !m_pRootWidget )
{
@@ -238,21 +238,21 @@ KDesktop::initRoot()
XSelectInput(dpy, root, attrs.your_event_mask | ButtonPressMask);
m_pRootWidget = new KRootWidget;
- connect(m_pRootWidget, TQT_SIGNAL(wheelRolled(int)), this, TQT_SLOT(slotSwitchDesktops(int)));
- connect(m_pRootWidget, TQT_SIGNAL(colorDropEvent(TQDropEvent*)), this, TQT_SLOT(handleColorDropEvent(TQDropEvent*)) );
- connect(m_pRootWidget, TQT_SIGNAL(imageDropEvent(TQDropEvent*)), this, TQT_SLOT(handleImageDropEvent(TQDropEvent*)) );
- connect(m_pRootWidget, TQT_SIGNAL(newWallpaper(const KURL&)), this, TQT_SLOT(slotNewWallpaper(const KURL&)) );
+ connect(m_pRootWidget, TQ_SIGNAL(wheelRolled(int)), this, TQ_SLOT(slotSwitchDesktops(int)));
+ connect(m_pRootWidget, TQ_SIGNAL(colorDropEvent(TQDropEvent*)), this, TQ_SLOT(handleColorDropEvent(TQDropEvent*)) );
+ connect(m_pRootWidget, TQ_SIGNAL(imageDropEvent(TQDropEvent*)), this, TQ_SLOT(handleImageDropEvent(TQDropEvent*)) );
+ connect(m_pRootWidget, TQ_SIGNAL(newWallpaper(const KURL&)), this, TQ_SLOT(slotNewWallpaper(const KURL&)) );
// Geert Jansen: backgroundmanager belongs here
// TODO tell KBackgroundManager if we change widget()
bgMgr = new KBackgroundManager( m_pIconView, m_pKwinmodule );
bgMgr->setExport(1);
- connect( bgMgr, TQT_SIGNAL( initDone()), TQT_SLOT( backgroundInitDone()));
+ connect( bgMgr, TQ_SIGNAL( initDone()), TQ_SLOT( backgroundInitDone()));
if (!m_bInit)
{
delete KRootWm::self();
KRootWm* krootwm = new KRootWm( m_pSaver, this ); // handler for root menu (used by kdesktop on RMB click)
- keys->setSlot("Lock Session", krootwm, TQT_SLOT(slotLock()));
+ keys->setSlot("Lock Session", krootwm, TQ_SLOT(slotLock()));
keys->updateConnections();
}
}
@@ -263,24 +263,24 @@ KDesktop::initRoot()
delete m_pRootWidget;
m_pRootWidget = 0;
m_pIconView = new KDIconView( this, 0 );
- connect( m_pIconView, TQT_SIGNAL( imageDropEvent( TQDropEvent * ) ),
- this, TQT_SLOT( handleImageDropEvent( TQDropEvent * ) ) );
- connect( m_pIconView, TQT_SIGNAL( colorDropEvent( TQDropEvent * ) ),
- this, TQT_SLOT( handleColorDropEvent( TQDropEvent * ) ) );
- connect( m_pIconView, TQT_SIGNAL( newWallpaper( const KURL & ) ),
- this, TQT_SLOT( slotNewWallpaper( const KURL & ) ) );
- connect( m_pIconView, TQT_SIGNAL( wheelRolled( int ) ),
- this, TQT_SLOT( slotSwitchDesktops( int ) ) );
-
- // All the QScrollView/QWidget-specific stuff should go here, so that we can use
+ connect( m_pIconView, TQ_SIGNAL( imageDropEvent( TQDropEvent * ) ),
+ this, TQ_SLOT( handleImageDropEvent( TQDropEvent * ) ) );
+ connect( m_pIconView, TQ_SIGNAL( colorDropEvent( TQDropEvent * ) ),
+ this, TQ_SLOT( handleColorDropEvent( TQDropEvent * ) ) );
+ connect( m_pIconView, TQ_SIGNAL( newWallpaper( const KURL & ) ),
+ this, TQ_SLOT( slotNewWallpaper( const KURL & ) ) );
+ connect( m_pIconView, TQ_SIGNAL( wheelRolled( int ) ),
+ this, TQ_SLOT( slotSwitchDesktops( int ) ) );
+
+ // All the QScrollView/TQWidget-specific stuff should go here, so that we can use
// another qscrollview/widget instead of the iconview and use the same code
m_pIconView->setVScrollBarMode( TQScrollView::AlwaysOff );
m_pIconView->setHScrollBarMode( TQScrollView::AlwaysOff );
m_pIconView->setDragAutoScroll( false );
m_pIconView->setFrameStyle( TQFrame::NoFrame );
m_pIconView->viewport()->setBackgroundMode( X11ParentRelative );
- m_pIconView->setFocusPolicy( TQ_StrongFocus );
- m_pIconView->viewport()->setFocusPolicy( TQ_StrongFocus );
+ m_pIconView->setFocusPolicy( TQWidget::StrongFocus );
+ m_pIconView->viewport()->setFocusPolicy( TQWidget::StrongFocus );
m_pIconView->setGeometry( geometry() );
m_pIconView->show();
@@ -288,7 +288,7 @@ KDesktop::initRoot()
// TODO tell KBackgroundManager if we change widget()
bgMgr = new KBackgroundManager( m_pIconView, m_pKwinmodule );
bgMgr->setExport(1);
- connect( bgMgr, TQT_SIGNAL( initDone()), TQT_SLOT( backgroundInitDone()));
+ connect( bgMgr, TQ_SIGNAL( initDone()), TQ_SLOT( backgroundInitDone()));
// make sure it is initialized before we first call updateWorkArea()
m_pIconView->initConfig( m_bInit );
@@ -301,7 +301,7 @@ KDesktop::initRoot()
TQCString replyType;
TQRect area;
- if ( kapp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)",
+ if ( tdeApp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)",
data, replyType, result, false, 2000) )
{
TQDataStream res(result, IO_ReadOnly);
@@ -315,7 +315,7 @@ KDesktop::initRoot()
// if we failed to get the information from kicker wait a little - probably
// this is the KDE startup and kicker is simply not running yet
m_waitForKicker = new TQTimer(this);
- connect(m_waitForKicker, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotNoKicker()));
+ connect(m_waitForKicker, TQ_SIGNAL(timeout()), this, TQ_SLOT(slotNoKicker()));
m_waitForKicker->start(15000, true);
}
else // we are not called from the ctor, so kicker should already run
@@ -330,7 +330,7 @@ KDesktop::initRoot()
m_pIconView->start();
delete KRootWm::self();
KRootWm* krootwm = new KRootWm( m_pSaver, this ); // handler for root menu (used by kdesktop on RMB click)
- keys->setSlot("Lock Session", krootwm, TQT_SLOT(slotLock()));
+ keys->setSlot("Lock Session", krootwm, TQ_SLOT(slotLock()));
keys->updateConnections();
}
} else {
@@ -359,12 +359,12 @@ KDesktop::backgroundInitDone()
// avoid flicker
if (m_bDesktopEnabled)
{
- const TQPixmap *bg = TQT_TQWIDGET(TQApplication::desktop()->screen())->backgroundPixmap();
+ const TQPixmap *bg = TQApplication::desktop()->screen()->backgroundPixmap();
if ( bg )
m_pIconView->setErasePixmap( *bg );
show();
- kapp->sendPostedEvents();
+ tdeApp->sendPostedEvents();
}
DCOPRef r( "ksmserver", "ksmserver" );
@@ -396,7 +396,7 @@ KDesktop::slotStart()
m_pIconView->start();
// Global keys
- keys = new TDEGlobalAccel( TQT_TQOBJECT(this) );
+ keys = new TDEGlobalAccel( this );
(void) new KRootWm( m_pSaver, this );
#include "kdesktopbindings.cpp"
@@ -404,9 +404,9 @@ KDesktop::slotStart()
keys->readSettings();
keys->updateConnections();
- connect(kapp, TQT_SIGNAL(appearanceChanged()), TQT_SLOT(slotConfigure()));
+ connect(tdeApp, TQ_SIGNAL(appearanceChanged()), TQ_SLOT(slotConfigure()));
- TQTimer::singleShot(300, this, TQT_SLOT( slotUpAndRunning() ));
+ TQTimer::singleShot(300, this, TQ_SLOT( slotUpAndRunning() ));
}
void
@@ -504,7 +504,7 @@ void KDesktop::popupExecuteCommand(const TQString& command)
if (m_bInit)
return;
- if (!kapp->authorize("run_command"))
+ if (!tdeApp->authorize("run_command"))
return;
// Created on demand
@@ -648,21 +648,21 @@ void KDesktop::setShowDesktop( bool b )
}
// on desktop changes or when a window is deiconified, we abort the show desktop mode
- connect(twinModule(), TQT_SIGNAL(currentDesktopChanged(int)),
- TQT_SLOT(slotCurrentDesktopChanged(int)));
- connect(twinModule(), TQT_SIGNAL(windowChanged(WId,unsigned int)),
- TQT_SLOT(slotWindowChanged(WId,unsigned int)));
- connect(twinModule(), TQT_SIGNAL(windowAdded(WId)),
- TQT_SLOT(slotWindowAdded(WId)));
+ connect(twinModule(), TQ_SIGNAL(currentDesktopChanged(int)),
+ TQ_SLOT(slotCurrentDesktopChanged(int)));
+ connect(twinModule(), TQ_SIGNAL(windowChanged(WId,unsigned int)),
+ TQ_SLOT(slotWindowChanged(WId,unsigned int)));
+ connect(twinModule(), TQ_SIGNAL(windowAdded(WId)),
+ TQ_SLOT(slotWindowAdded(WId)));
}
else
{
- disconnect(twinModule(), TQT_SIGNAL(currentDesktopChanged(int)),
- this, TQT_SLOT(slotCurrentDesktopChanged(int)));
- disconnect(twinModule(), TQT_SIGNAL(windowChanged(WId,unsigned int)),
- this, TQT_SLOT(slotWindowChanged(WId,unsigned int)));
- disconnect(twinModule(), TQT_SIGNAL(windowAdded(WId)),
- this, TQT_SLOT(slotWindowAdded(WId)));
+ disconnect(twinModule(), TQ_SIGNAL(currentDesktopChanged(int)),
+ this, TQ_SLOT(slotCurrentDesktopChanged(int)));
+ disconnect(twinModule(), TQ_SIGNAL(windowChanged(WId,unsigned int)),
+ this, TQ_SLOT(slotWindowChanged(WId,unsigned int)));
+ disconnect(twinModule(), TQ_SIGNAL(windowAdded(WId)),
+ this, TQ_SLOT(slotWindowAdded(WId)));
for (TQValueVector<WId>::ConstIterator it = m_iconifiedList.begin();
it != m_iconifiedList.end();
@@ -839,7 +839,7 @@ void KDesktop::refresh()
m_bNeedRepaint |= 1;
updateWorkArea();
#endif
- kapp->dcopClient()->send( twin_name, "", "refresh()", TQString(""));
+ tdeApp->dcopClient()->send( twin_name, "", "refresh()", TQString(""));
refreshIcons();
}
@@ -851,7 +851,7 @@ void KDesktop::slotSetVRoot()
return;
if (KWin::windowInfo(winId()).mappingState() == NET::Withdrawn) {
- TQTimer::singleShot(100, this, TQT_SLOT(slotSetVRoot()));
+ TQTimer::singleShot(100, this, TQ_SLOT(slotSetVRoot()));
return;
}
@@ -907,7 +907,7 @@ void KDesktop::desktopIconsAreaChanged(const TQRect &area, int screen)
if (screen <= -2)
screen = kdesktop_screen_number;
else if (screen == -1)
- screen = kapp->desktop()->primaryScreen();
+ screen = tdeApp->desktop()->primaryScreen();
// This is pretty broken, mixes Xinerama and non-Xinerama multihead
// and generally doesn't seem to be required anyway => ignore screen.
@@ -1032,7 +1032,7 @@ void KDesktop::logout()
void KDesktop::logout( TDEApplication::ShutdownConfirm confirm,
TDEApplication::ShutdownType sdtype )
{
- if( !kapp->requestShutDown( confirm, sdtype ) )
+ if( !tdeApp->requestShutDown( confirm, sdtype ) )
// this i18n string is also in kicker/applets/run/runapplet
KMessageBox::error( this, i18n("Could not log out properly.\nThe session manager cannot "
"be contacted. You can try to force a shutdown by pressing "
@@ -1064,6 +1064,30 @@ void KDesktop::slotRebootNoCnf()
TDEApplication::ShutdownTypeReboot );
}
+void KDesktop::slotFreeze()
+{
+ DCOPRef r("ksmserver", "ksmserver");
+ r.send("suspend", 1);
+}
+
+void KDesktop::slotSuspend()
+{
+ DCOPRef r("ksmserver", "ksmserver");
+ r.send("suspend", 3);
+}
+
+void KDesktop::slotHibernate()
+{
+ DCOPRef r("ksmserver", "ksmserver");
+ r.send("suspend", 4);
+}
+
+void KDesktop::slotHybridSuspend()
+{
+ DCOPRef r("ksmserver", "ksmserver");
+ r.send("suspend", 5);
+}
+
void KDesktop::setVRoot( bool enable )
{
if ( enable == set_vroot )
@@ -1100,7 +1124,7 @@ void KDesktop::setIconsEnabled( bool enable )
void KDesktop::desktopResized()
{
- resize(kapp->desktop()->size());
+ resize(tdeApp->desktop()->size());
if ( m_pIconView )
{
@@ -1108,7 +1132,7 @@ void KDesktop::desktopResized()
// remove all icons, resize desktop, tell kdiconview new iconsArea size
// tell kdiconview to reget all icons
m_pIconView->slotClear();
- m_pIconView->resize(kapp->desktop()->size());
+ m_pIconView->resize(tdeApp->desktop()->size());
// get new desktopIconsArea from kicker
TQByteArray data, result;
@@ -1117,7 +1141,7 @@ void KDesktop::desktopResized()
TQCString replyType;
TQRect area;
- if ( kapp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)",
+ if ( tdeApp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)",
data, replyType, result, false, 2000) )
{
TQDataStream res(result, IO_ReadOnly);
diff --git a/kdesktop/desktop.h b/kdesktop/desktop.h
index c6a208f07..ca1eefc61 100644
--- a/kdesktop/desktop.h
+++ b/kdesktop/desktop.h
@@ -44,7 +44,7 @@ class SaverEngine;
class KRootWidget : public TQObject
{
- Q_OBJECT
+ TQ_OBJECT
public:
KRootWidget();
bool eventFilter( TQObject *, TQEvent * e );
@@ -63,7 +63,7 @@ signals:
class KDesktop : public TQWidget,
public KDesktopIface
{
- Q_OBJECT
+ TQ_OBJECT
public:
@@ -135,6 +135,10 @@ private slots:
void slotLogoutNoCnf();
void slotHaltNoCnf();
void slotRebootNoCnf();
+ void slotFreeze();
+ void slotSuspend();
+ void slotHibernate();
+ void slotHybridSuspend();
/** Connected to KSycoca */
void slotDatabaseChanged();
diff --git a/kdesktop/init.cc b/kdesktop/init.cpp
index 6bf87f333..25e3dd717 100644
--- a/kdesktop/init.cc
+++ b/kdesktop/init.cpp
@@ -19,11 +19,11 @@
#include <tdeio/job.h>
#include <tdeio/netaccess.h>
-#include <kstandarddirs.h>
-#include <kdesktopfile.h>
+#include <tdestandarddirs.h>
+#include <tdedesktopfile.h>
#include <tdeglobalsettings.h>
#include <tdeapplication.h>
-#include <kprocess.h>
+#include <tdeprocess.h>
#include <tdemessagebox.h>
#include <tdelocale.h>
#include <kdebug.h>
@@ -40,7 +40,7 @@
#include <dirent.h>
#include <stdlib.h>
#include <errno.h>
-#include <ksimpleconfig.h>
+#include <tdesimpleconfig.h>
// for multihead
extern int kdesktop_screen_number;
@@ -134,7 +134,7 @@ static TQString realDesktopPath()
*/
static void copyDesktopLinks()
{
- TDEConfig *config = kapp->config();
+ TDEConfig *config = tdeApp->config();
config->setGroup("General");
if (!config->readBoolEntry("CopyDesktopLinks", true))
return;
@@ -145,7 +145,7 @@ static void copyDesktopLinks()
TQString desktopPath = realDesktopPath();
for (TQStringList::ConstIterator it = list.begin(); it != list.end(); it++) {
- KDesktopFile desk( *it );
+ TDEDesktopFile desk( *it );
if (desk.readBoolEntry("Hidden"))
continue;
copyFile( *it, desktopPath );
@@ -213,13 +213,13 @@ void testLocalInstallation()
if ( emptyDesktop || firstTimeWithNewTrash || installNewTrashi18n ) {
TQString oldIcon, oldEmptyIcon;
if ( trashDesktopExists ) {
- KDesktopFile trashDesktop( trashDesktopPath, true );
+ TDEDesktopFile trashDesktop( trashDesktopPath, true );
oldIcon = trashDesktop.readIcon();
oldEmptyIcon = trashDesktop.readEntry( "EmptyIcon" );
}
copyFile( locate( "data", "kdesktop/directory.trash" ), trashDesktopPath );
if ( trashDesktopExists ) {
- KDesktopFile trashDesktop( trashDesktopPath );
+ TDEDesktopFile trashDesktop( trashDesktopPath );
trashDesktop.writeEntry( "Icon", oldIcon );
trashDesktop.writeEntry( "EmptyIcon", oldEmptyIcon );
trashDesktop.sync();
@@ -234,7 +234,7 @@ void testLocalInstallation()
(void)TDEIO::NetAccess::synchronousRun( job, 0 );
// OK the only thing missing is to convert the icon position...
- KSimpleConfig cfg( locateLocal("appdata", "IconPositions") );
+ TDESimpleConfig cfg( locateLocal("appdata", "IconPositions") );
if ( cfg.hasGroup( "IconPosition::Trash" ) && !cfg.hasGroup( "IconPosition::trash.desktop" ) ) {
const TQMap<TQString, TQString> entries = cfg.entryMap( "IconPosition::Trash" );
cfg.setGroup( "IconPosition::trash.desktop" );
diff --git a/kdesktop/kcustommenu.cc b/kdesktop/kcustommenu.cpp
index 2e825c0d9..f3d3cf817 100644
--- a/kdesktop/kcustommenu.cc
+++ b/kdesktop/kcustommenu.cpp
@@ -57,7 +57,7 @@ KCustomMenu::KCustomMenu(const TQString &configfile, TQWidget *parent)
insertMenuItem( menuItem, -1 );
}
- connect(this, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotActivated(int)));
+ connect(this, TQ_SIGNAL(activated(int)), this, TQ_SLOT(slotActivated(int)));
}
KCustomMenu::~KCustomMenu()
@@ -71,7 +71,7 @@ KCustomMenu::slotActivated(int id)
KService::Ptr s = d->entryMap[id];
if (!s)
return;
- kapp->startServiceByDesktopPath(s->desktopEntryPath());
+ tdeApp->startServiceByDesktopPath(s->desktopEntryPath());
}
// The following is copied from kicker's PanelServiceMenu
diff --git a/kdesktop/kcustommenu.h b/kdesktop/kcustommenu.h
index 93b8d671f..a8f2cf5c4 100644
--- a/kdesktop/kcustommenu.h
+++ b/kdesktop/kcustommenu.h
@@ -29,7 +29,7 @@
*/
class KCustomMenu : public TQPopupMenu
{
- Q_OBJECT
+ TQ_OBJECT
public:
/**
* Create a custome menu described by @p configfile.
diff --git a/kdesktop/kdesktop.kcfg b/kdesktop/kdesktop.kcfg
index 53a1cc781..183fcc417 100644
--- a/kdesktop/kdesktop.kcfg
+++ b/kdesktop/kdesktop.kcfg
@@ -52,7 +52,7 @@
<default>true</default>
<label></label>
<whatsthis></whatsthis>
- <!-- init.cc:138 -->
+ <!-- init.cpp:138 -->
<!-- if (!config->readBoolEntry("CopyDesktopLinks", true)) -->
</entry>
<entry key="AutoLineUpIcons" type="Bool">
@@ -64,9 +64,9 @@
<default>false</default>
<label>Sort directories first</label>
<whatsthis></whatsthis>
- <!-- krootwm.cc:251 -->
+ <!-- krootwm.cpp:251 -->
<!-- aSortDirsFirst->setChecked( tdeconfig->readBoolEntry("SortDirectoriesFirst", true)); -->
- <!-- krootwm.cc:496 -->
+ <!-- krootwm.cpp:496 -->
<!-- config->writeEntry( "SortDirectoriesFirst", b ); -->
</entry>
<entry key="TerminalApplication" type="Path">
@@ -85,7 +85,7 @@
<default>Forward</default>
<label></label>
<whatsthis></whatsthis>
- <!-- desktop.cc:397 -->
+ <!-- desktop.cpp:397 -->
<!-- (config->readEntry("WheelDirection", default_dir_string) == forward_string) ? Forward : Reverse; -->
</entry>
<entry key="Left" type="String">
@@ -123,7 +123,7 @@
</group>
<group name="FMSettings">
<entry key="NormalTextColor" type="Color"> <!--SHARED-->
- <default>Qt::white</default>
+ <default>TQt::white</default>
<label>Normal text color used for icon labels</label>
<whatsthis></whatsthis>
</entry>
@@ -155,6 +155,16 @@
<label>Align direction</label>
<whatsthis>If this is enabled, icons are aligned vertically, otherwise horizontally.</whatsthis>
</entry>
+ <entry key="IconSpacing" type="Int">
+ <default>5</default>
+ <label>Icon spacing</label>
+ <whatsthis><p>This is the minimal distance (in pixels) between the icons on your desktop.</p></whatsthis>
+ </entry>
+ <entry key="SpacingCtrlScroll" type="Bool">
+ <default>false</default>
+ <label>Change spacing by Ctrl+Mouse Scroll</label>
+ <whatsthis><p>If this is enabled, you can change desktop icon spacing by pressing Ctrl and scrolling on the desktop background.</p></whatsthis>
+ </entry>
<entry key="Preview" type="StringList">
<default></default>
<label>Show Icon Previews For</label>
@@ -190,7 +200,7 @@
<default></default>
<label></label>
<whatsthis></whatsthis>
- <!-- kdiconview.cc:254 -->
+ <!-- kdiconview.cpp:254 -->
<!-- m_itemsAlwaysFirst = config->readListEntry("AlwaysFirstItems"); // Distributor plug-in -->
</entry>
</group>
@@ -199,14 +209,14 @@
<default>true</default>
<label></label>
<whatsthis></whatsthis>
- <!-- kdiconview.cc:258 -->
+ <!-- kdiconview.cpp:258 -->
<!-- m_enableMedia=config->readBoolEntry("enabled",false); -->
</entry>
<entry key="exclude" type="String">
<default>media/nfs_mounted,media/nfs_unmounted,media/hdd_mounted,media/hdd_unmounted,media/floppy_unmounted,media/cdrom_unmounted,media/floppy5_unmounted</default>
<label>Device Types to exclude</label>
<whatsthis>The device types which you do not want to see on the desktop.</whatsthis>
- <!-- kdiconview.cc:261 -->
+ <!-- kdiconview.cpp:261 -->
<!-- TQString tmpList=config->readEntry("exclude","media/hdd_mounted,media/hdd_unmounted,media/floppy_unmounted,media/cdrom_unmounted,media/floppy5_unmounted"); -->
</entry>
<entry name="MediaFreeSpaceDisplayEnabled" key="FreeSpaceDisplayEnabled" type="Bool">
diff --git a/kdesktop/kdesktopSetAsBackground.desktop b/kdesktop/kdesktopSetAsBackground.desktop
index a7ba4f14a..3bc655803 100644
--- a/kdesktop/kdesktopSetAsBackground.desktop
+++ b/kdesktop/kdesktopSetAsBackground.desktop
@@ -1,14 +1,44 @@
[Desktop Entry]
X-TDE-ServiceTypes=image/*
-Actions=setAsBackground;tileAsBackground;
+Actions=centeredAsBackground;tiledAsBackground;centeredTiledAsBackground;centeredMaxpectAsBackground;tiledMaxpectAsBackground;scaledAsBackground;centeredAutoFitAsBackground;scaleAndCropAsBackground
X-TDE-Submenu=Set as Background
-[Desktop Action setAsBackground]
+[Desktop Action centeredAsBackground]
Name=Centered
Icon=background
-Exec=dcop kdesktop KBackgroundIface setWallpaper %u 6
+Exec=dcop kdesktop KBackgroundIface setWallpaper %u 1
-[Desktop Action tileAsBackground]
+[Desktop Action tiledAsBackground]
Name=Tiled
Icon=background
Exec=dcop kdesktop KBackgroundIface setWallpaper %u 2
+
+[Desktop Action centeredTiledAsBackground]
+Name=Center Tiled
+Icon=background
+Exec=dcop kdesktop KBackgroundIface setWallpaper %u 3
+
+[Desktop Action centeredMaxpectAsBackground]
+Name=Centered Maxpect
+Icon=background
+Exec=dcop kdesktop KBackgroundIface setWallpaper %u 4
+
+[Desktop Action tiledMaxpectAsBackground]
+Name=Tiled Maxpect
+Icon=background
+Exec=dcop kdesktop KBackgroundIface setWallpaper %u 5
+
+[Desktop Action scaledAsBackground]
+Name=Scaled
+Icon=background
+Exec=dcop kdesktop KBackgroundIface setWallpaper %u 6
+
+[Desktop Action centeredAutoFitAsBackground]
+Name=Centered Auto Fit
+Icon=background
+Exec=dcop kdesktop KBackgroundIface setWallpaper %u 7
+
+[Desktop Action scaleAndCropAsBackground]
+Name=Scale & Crop
+Icon=background
+Exec=dcop kdesktop KBackgroundIface setWallpaper %u 8
diff --git a/kdesktop/kdesktopapp.cpp b/kdesktop/kdesktopapp.cpp
index ba05dc655..b19817bbd 100644
--- a/kdesktop/kdesktopapp.cpp
+++ b/kdesktop/kdesktopapp.cpp
@@ -20,15 +20,15 @@
#include <kdesktopapp.h>
KDesktopApp::KDesktopApp():
-KUniqueApplication()
+TDEUniqueApplication()
{
#ifdef COMPOSITE
initCmBackground();
#endif
}
-KDesktopApp::KDesktopApp(Display * dpy, Qt::HANDLE visual, Qt::HANDLE colormap):
-KUniqueApplication(dpy, visual, colormap)
+KDesktopApp::KDesktopApp(Display * dpy, TQt::HANDLE visual, TQt::HANDLE colormap):
+TDEUniqueApplication(dpy, visual, colormap)
{
#ifdef COMPOSITE
initCmBackground();
@@ -87,7 +87,7 @@ bool KDesktopApp::x11EventFilter (XEvent * xevent)
emit cmBackgroundChanged(supported);
}
}
- return KUniqueApplication::x11EventFilter (xevent);
+ return TDEUniqueApplication::x11EventFilter (xevent);
}
#endif
diff --git a/kdesktop/kdesktopapp.h b/kdesktop/kdesktopapp.h
index 94cdd1d33..4ce52c3a2 100644
--- a/kdesktop/kdesktopapp.h
+++ b/kdesktop/kdesktopapp.h
@@ -21,9 +21,9 @@
#define __kdesktopapp_h__
#include <config.h>
-#include <kuniqueapplication.h>
+#include <tdeuniqueapplication.h>
-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300
+#if defined(TQ_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300
#define COMPOSITE
#endif
@@ -33,13 +33,13 @@
# include <fixx11h.h>
#endif
-class KDesktopApp : public KUniqueApplication
+class KDesktopApp : public TDEUniqueApplication
{
- Q_OBJECT
+ TQ_OBJECT
public:
KDesktopApp();
- KDesktopApp(Display * dpy, Qt::HANDLE visual = 0,
- Qt::HANDLE colormap = 0);
+ KDesktopApp(Display * dpy, TQt::HANDLE visual = 0,
+ TQt::HANDLE colormap = 0);
#ifdef COMPOSITE
bool x11EventFilter (XEvent *);
diff --git a/kdesktop/kdesktopbindings.cpp b/kdesktop/kdesktopbindings.cpp
index 91bddb5b3..a4f46e717 100644
--- a/kdesktop/kdesktopbindings.cpp
+++ b/kdesktop/kdesktopbindings.cpp
@@ -1,6 +1,6 @@
#ifndef NOSLOTS
# define DEF( name, key3, key4, fnSlot ) \
- keys->insert( name, i18n(name), TQString(), key3, key4, TQT_TQOBJECT(this), TQT_SLOT(fnSlot) )
+ keys->insert( name, i18n(name), TQString(), key3, key4, this, TQ_SLOT(fnSlot) )
# define DEF2( name, key3, key4, receiver, slot ) \
keys->insert( name, i18n(name), TQString(), key3, key4, receiver, slot );
#else
@@ -14,41 +14,62 @@
keys->insert( "Program:kdesktop", i18n("Desktop") );
#ifndef NOSLOTS
- if (kapp->authorize("run_command"))
+ if (tdeApp->authorize("run_command"))
{
#endif
- DEF( I18N_NOOP("Run Command"), ALT+Qt::Key_F2, WIN+Qt::Key_Return, slotExecuteCommand() );
+ DEF( I18N_NOOP("Run Command"), ALT+TQt::Key_F2, WIN+TQt::Key_Return, slotExecuteCommand() );
#ifndef NOSLOTS
}
#endif
- DEF( I18N_NOOP("Show Taskmanager"), CTRL+Qt::Key_Escape, WIN+CTRL+Qt::Key_Pause, slotShowTaskManager() );
- DEF( I18N_NOOP("Show Window List"), ALT+Qt::Key_F5, WIN+Qt::Key_0, slotShowWindowList() );
- DEF( I18N_NOOP("Switch User"), ALT+CTRL+Qt::Key_Insert, WIN+Qt::Key_Insert, slotSwitchUser() );
+ DEF( I18N_NOOP("Show Taskmanager"), CTRL+TQt::Key_Escape, WIN+CTRL+TQt::Key_Pause, slotShowTaskManager() );
+ DEF( I18N_NOOP("Show Window List"), ALT+TQt::Key_F5, WIN+TQt::Key_0, slotShowWindowList() );
+ DEF( I18N_NOOP("Switch User"), ALT+CTRL+TQt::Key_Insert, WIN+TQt::Key_Insert, slotSwitchUser() );
#ifndef NOSLOTS
- if (kapp->authorize("lock_screen"))
+ if (tdeApp->authorize("lock_screen"))
{
#endif
- DEF2( I18N_NOOP("Lock Session"), ALT+CTRL+Qt::Key_L, WIN+Qt::Key_ScrollLock, KRootWm::self(), TQT_SLOT(slotLock()) );
- DEF2( I18N_NOOP("Lock Session (Hotkey)"), TDEShortcut(TQString("XF86ScreenSaver")), TDEShortcut(TQString("XF86ScreenSaver")), KRootWm::self(), TQT_SLOT(slotLock()) );
+ DEF2( I18N_NOOP("Lock Session"), ALT+CTRL+TQt::Key_L, WIN+TQt::Key_ScrollLock, KRootWm::self(), TQ_SLOT(slotLock()) );
+ DEF2( I18N_NOOP("Lock Session (Hotkey)"), TDEShortcut(TQString("XF86ScreenSaver")), TDEShortcut(TQString("XF86ScreenSaver")), KRootWm::self(), TQ_SLOT(slotLock()) );
#ifndef NOSLOTS
}
- if (kapp->authorize("start_screensaver"))
+ if (tdeApp->authorize("start_screensaver"))
{
#endif
- DEF2( I18N_NOOP("Start Screen Saver"), ALT+CTRL+Qt::Key_S, WIN+Qt::Key_S, KRootWm::self(), TQT_SLOT(slotSave()) );
+ DEF2( I18N_NOOP("Start Screen Saver"), ALT+CTRL+TQt::Key_S, WIN+TQt::Key_S, KRootWm::self(), TQ_SLOT(slotSave()) );
#ifndef NOSLOTS
}
- if (kapp->authorize("logout"))
+ if (tdeApp->authorize("logout"))
{
#endif
- DEF( I18N_NOOP("Log Out"), ALT+CTRL+Qt::Key_Delete, WIN+Qt::Key_Escape, slotLogout() );
- DEF( I18N_NOOP("Log Out Without Confirmation"), ALT+CTRL+SHIFT+Qt::Key_Delete, WIN+SHIFT+Qt::Key_Escape, slotLogoutNoCnf() );
- DEF( I18N_NOOP("Halt without Confirmation"), ALT+CTRL+SHIFT+Qt::Key_PageDown, WIN+CTRL+SHIFT+Qt::Key_PageDown, slotHaltNoCnf() );
- DEF( I18N_NOOP("Reboot without Confirmation"), ALT+CTRL+SHIFT+Qt::Key_PageUp, WIN+CTRL+SHIFT+Qt::Key_PageUp, slotRebootNoCnf() );
+ DEF( I18N_NOOP("Log Out"), ALT+CTRL+TQt::Key_Delete, WIN+TQt::Key_Escape, slotLogout() );
+ DEF( I18N_NOOP("Log Out Without Confirmation"), ALT+CTRL+SHIFT+TQt::Key_Delete, WIN+SHIFT+TQt::Key_Escape, slotLogoutNoCnf() );
+ DEF( I18N_NOOP("Halt without Confirmation"), ALT+CTRL+SHIFT+TQt::Key_PageDown, WIN+CTRL+SHIFT+TQt::Key_PageDown, slotHaltNoCnf() );
+ DEF( I18N_NOOP("Reboot without Confirmation"), ALT+CTRL+SHIFT+TQt::Key_PageUp, WIN+CTRL+SHIFT+TQt::Key_PageUp, slotRebootNoCnf() );
#ifndef NOSLOTS
}
#endif
+ // Only add these options if supported by ksmserver
+ DCOPRef ksmref("ksmserver", "ksmserver");
+ DCOPReply reply = ksmref.call("suspendOptions");
+
+ TQStringList suspendOptions;
+ if (reply.isValid()) {
+ reply.get(suspendOptions);
+ }
+
+ if (suspendOptions.contains("freeze"))
+ DEF( I18N_NOOP("Freeze"), TDEShortcut(), TDEShortcut(), slotFreeze() );
+
+ if (suspendOptions.contains("suspend"))
+ DEF( I18N_NOOP("Suspend"), TDEShortcut(TQString("XF86Sleep")), TDEShortcut(TQString("XF86Sleep")), slotSuspend() );
+
+ if (suspendOptions.contains("hibernate"))
+ DEF( I18N_NOOP("Hibernate"), TDEShortcut(), TDEShortcut(), slotHibernate() );
+
+ if (suspendOptions.contains("hybridSuspend"))
+ DEF( I18N_NOOP("Hybrid Suspend"), TDEShortcut(), TDEShortcut(), slotHybridSuspend() );
+
#undef DEF
#undef DEF2
#undef WIN
diff --git a/kdesktop/kdesktopshadowsettings.h b/kdesktop/kdesktopshadowsettings.h
index c7e73db71..3c08cd574 100644
--- a/kdesktop/kdesktopshadowsettings.h
+++ b/kdesktop/kdesktopshadowsettings.h
@@ -24,7 +24,7 @@
#define __FX_DATA_DESKTOP
#include <tqcolor.h>
-#include <kstandarddirs.h>
+#include <tdestandarddirs.h>
#include <tdeconfig.h>
#include <kshadowsettings.h>
diff --git a/kdesktop/kdiconview.cc b/kdesktop/kdiconview.cpp
index c8c5a1fe6..70f1010b7 100644
--- a/kdesktop/kdiconview.cc
+++ b/kdesktop/kdiconview.cpp
@@ -27,7 +27,7 @@
#include <tdeapplication.h>
#include <kcolordrag.h>
#include <kdebug.h>
-#include <kdesktopfile.h>
+#include <tdedesktopfile.h>
#include <kdirlister.h>
#include <tdeglobalsettings.h>
#include <kpropertiesdialog.h>
@@ -42,7 +42,7 @@
#include <kivfreespaceoverlay.h>
#include <kprotocolinfo.h>
#include <kstdaction.h>
-#include <kstandarddirs.h>
+#include <tdestandarddirs.h>
#include <kurldrag.h>
#include <twin.h>
#include <twinmodule.h>
@@ -74,7 +74,7 @@ TQRect KDIconView::desktopRect()
// -----------------------------------------------------------------------------
-void KDIconView::saveIconPosition(KSimpleConfig *config, int x, int y)
+void KDIconView::saveIconPosition(TDESimpleConfig *config, int x, int y)
{
// save the icon position in absolute coordinates
config->writeEntry("Xabs", x);
@@ -90,7 +90,7 @@ void KDIconView::saveIconPosition(KSimpleConfig *config, int x, int y)
// -----------------------------------------------------------------------------
-void KDIconView::readIconPosition(KSimpleConfig *config, int &x, int &y)
+void KDIconView::readIconPosition(TDESimpleConfig *config, int &x, int &y)
{
// check if we have the position for the current desktop size
TQRect desk = desktopRect();
@@ -138,7 +138,7 @@ KDIconView::KDIconView( TQWidget *parent, const char* name )
m_bNeedSave( false ),
m_autoAlign( false ),
m_hasExistingPos( false ),
- m_bEditableDesktopIcons( kapp->authorize("editable_desktop_icons") ),
+ m_bEditableDesktopIcons( tdeApp->authorize("editable_desktop_icons") ),
m_bShowDot( false ),
m_bVertAlign( true ),
m_dirLister( 0L ),
@@ -162,44 +162,42 @@ KDIconView::KDIconView( TQWidget *parent, const char* name )
// Initialize media handler
mMediaListView = new TQListView();
- connect( TQApplication::clipboard(), TQT_SIGNAL(dataChanged()), this, TQT_SLOT(slotClipboardDataChanged()) );
+ connect( TQApplication::clipboard(), TQ_SIGNAL(dataChanged()), this, TQ_SLOT(slotClipboardDataChanged()) );
setURL( desktopURL() ); // sets m_url
m_desktopDirs = TDEGlobal::dirs()->findDirs( "appdata", "Desktop" );
initDotDirectories();
- connect( this, TQT_SIGNAL( executed( TQIconViewItem * ) ),
- TQT_SLOT( slotExecuted( TQIconViewItem * ) ) );
- connect( this, TQT_SIGNAL( returnPressed( TQIconViewItem * ) ),
- TQT_SLOT( slotReturnPressed( TQIconViewItem * ) ) );
- connect( this, TQT_SIGNAL( mouseButtonPressed(int, TQIconViewItem*, const TQPoint&)),
- TQT_SLOT( slotMouseButtonPressed(int, TQIconViewItem*, const TQPoint&)) );
- connect( this, TQT_SIGNAL( mouseButtonClicked(int, TQIconViewItem*, const TQPoint&)),
- TQT_SLOT( slotMouseButtonClickedKDesktop(int, TQIconViewItem*, const TQPoint&)) );
- connect( this, TQT_SIGNAL( contextMenuRequested(TQIconViewItem*, const TQPoint&)),
- TQT_SLOT( slotContextMenuRequested(TQIconViewItem*, const TQPoint&)) );
+ connect( this, TQ_SIGNAL( executed( TQIconViewItem * ) ),
+ TQ_SLOT( slotExecuted( TQIconViewItem * ) ) );
+ connect( this, TQ_SIGNAL( returnPressed( TQIconViewItem * ) ),
+ TQ_SLOT( slotReturnPressed( TQIconViewItem * ) ) );
+ connect( this, TQ_SIGNAL( mouseButtonPressed(int, TQIconViewItem*, const TQPoint&)),
+ TQ_SLOT( slotMouseButtonPressed(int, TQIconViewItem*, const TQPoint&)) );
+ connect( this, TQ_SIGNAL( mouseButtonClicked(int, TQIconViewItem*, const TQPoint&)),
+ TQ_SLOT( slotMouseButtonClickedKDesktop(int, TQIconViewItem*, const TQPoint&)) );
+ connect( this, TQ_SIGNAL( contextMenuRequested(TQIconViewItem*, const TQPoint&)),
+ TQ_SLOT( slotContextMenuRequested(TQIconViewItem*, const TQPoint&)) );
- connect( this, TQT_SIGNAL( enableAction( const char * , bool ) ),
- TQT_SLOT( slotEnableAction( const char * , bool ) ) );
+ connect( this, TQ_SIGNAL( enableAction( const char * , bool ) ),
+ TQ_SLOT( slotEnableAction( const char * , bool ) ) );
// Hack: KonqIconViewWidget::slotItemRenamed is not virtual :-(
- disconnect( this, TQT_SIGNAL(itemRenamed(TQIconViewItem *, const TQString &)),
- this, TQT_SLOT(slotItemRenamed(TQIconViewItem *, const TQString &)) );
- connect( this, TQT_SIGNAL(itemRenamed(TQIconViewItem *, const TQString &)),
- this, TQT_SLOT(slotItemRenamed(TQIconViewItem *, const TQString &)) );
+ disconnect( this, TQ_SIGNAL(itemRenamed(TQIconViewItem *, const TQString &)),
+ this, TQ_SLOT(slotItemRenamed(TQIconViewItem *, const TQString &)) );
+ connect( this, TQ_SIGNAL(itemRenamed(TQIconViewItem *, const TQString &)),
+ this, TQ_SLOT(slotItemRenamed(TQIconViewItem *, const TQString &)) );
if (!m_bEditableDesktopIcons)
{
- setItemsMovable(false);
- setAcceptDrops(false);
- viewport()->setAcceptDrops(false);
+ setIconsLocked(true);
}
}
KDIconView::~KDIconView()
{
- if (m_dotDirectory && !m_bEditableDesktopIcons) {
+ if (m_dotDirectory && !m_bEditableDesktopIcons || m_iconsLocked) {
m_dotDirectory->rollback(false); // Don't save positions
}
@@ -228,7 +226,7 @@ void KDIconView::initDotDirectories()
delete m_dotDirectory;
- m_dotDirectory = new KSimpleConfig( dotFileName );
+ m_dotDirectory = new TDESimpleConfig( dotFileName );
// If we don't allow editable desktop icons, empty m_dotDirectory
if (!m_bEditableDesktopIcons)
{
@@ -250,7 +248,7 @@ void KDIconView::initDotDirectories()
if (TQFile::exists(localDotFileName))
{
- KSimpleConfig dotDir(localDotFileName, true); // Read only
+ TDESimpleConfig dotDir(localDotFileName, true); // Read only
TQStringList groups = dotDir.groupList();
TQStringList::ConstIterator gIt = groups.begin();
@@ -296,6 +294,7 @@ void KDIconView::initConfig( bool init )
m_bVertAlign = KDesktopSettings::vertAlign();
TQStringList oldPreview = previewSettings();
setPreviewSettings( KDesktopSettings::preview() );
+ setSpacing( KDesktopSettings::iconSpacing() );
// read arrange configuration
m_eSortCriterion = (SortCriterion)KDesktopSettings::sortCriterion();
@@ -371,16 +370,16 @@ void KDIconView::start()
m_bNeedSave = false;
- connect( m_dirLister, TQT_SIGNAL( clear() ), this, TQT_SLOT( slotClear() ) );
- connect( m_dirLister, TQT_SIGNAL( started(const KURL&) ), this, TQT_SLOT( slotStarted(const KURL&) ) );
- connect( m_dirLister, TQT_SIGNAL( completed() ), this, TQT_SLOT( slotCompleted() ) );
- connect( m_dirLister, TQT_SIGNAL( newItems( const KFileItemList & ) ), this, TQT_SLOT( slotNewItems( const KFileItemList & ) ) );
- connect( m_dirLister, TQT_SIGNAL( deleteItem( KFileItem * ) ), this, TQT_SLOT( slotDeleteItem( KFileItem * ) ) );
- connect( m_dirLister, TQT_SIGNAL( refreshItems( const KFileItemList & ) ), this, TQT_SLOT( slotRefreshItems( const KFileItemList & ) ) );
+ connect( m_dirLister, TQ_SIGNAL( clear() ), this, TQ_SLOT( slotClear() ) );
+ connect( m_dirLister, TQ_SIGNAL( started(const KURL&) ), this, TQ_SLOT( slotStarted(const KURL&) ) );
+ connect( m_dirLister, TQ_SIGNAL( completed() ), this, TQ_SLOT( slotCompleted() ) );
+ connect( m_dirLister, TQ_SIGNAL( newItems( const KFileItemList & ) ), this, TQ_SLOT( slotNewItems( const KFileItemList & ) ) );
+ connect( m_dirLister, TQ_SIGNAL( deleteItem( KFileItem * ) ), this, TQ_SLOT( slotDeleteItem( KFileItem * ) ) );
+ connect( m_dirLister, TQ_SIGNAL( refreshItems( const KFileItemList & ) ), this, TQ_SLOT( slotRefreshItems( const KFileItemList & ) ) );
// Start the directory lister !
m_dirLister->setShowingDotFiles( m_bShowDot );
- kapp->allowURLAction("list", KURL(), url());
+ tdeApp->allowURLAction("list", KURL(), url());
startDirLister();
createActions();
}
@@ -421,35 +420,35 @@ void KDIconView::createActions()
{
if (m_bEditableDesktopIcons)
{
- TDEAction *undo = KStdAction::undo( KonqUndoManager::self(), TQT_SLOT( undo() ), &m_actionCollection, "undo" );
- connect( KonqUndoManager::self(), TQT_SIGNAL( undoAvailable( bool ) ),
- undo, TQT_SLOT( setEnabled( bool ) ) );
- connect( KonqUndoManager::self(), TQT_SIGNAL( undoTextChanged( const TQString & ) ),
- undo, TQT_SLOT( setText( const TQString & ) ) );
+ TDEAction *undo = KStdAction::undo( KonqUndoManager::self(), TQ_SLOT( undo() ), &m_actionCollection, "undo" );
+ connect( KonqUndoManager::self(), TQ_SIGNAL( undoAvailable( bool ) ),
+ undo, TQ_SLOT( setEnabled( bool ) ) );
+ connect( KonqUndoManager::self(), TQ_SIGNAL( undoTextChanged( const TQString & ) ),
+ undo, TQ_SLOT( setText( const TQString & ) ) );
undo->setEnabled( KonqUndoManager::self()->undoAvailable() );
- TDEAction* paCut = KStdAction::cut( TQT_TQOBJECT(this), TQT_SLOT( slotCut() ), &m_actionCollection, "cut" );
+ TDEAction* paCut = KStdAction::cut( this, TQ_SLOT( slotCut() ), &m_actionCollection, "cut" );
TDEShortcut cutShortCut = paCut->shortcut();
cutShortCut.remove( KKey( SHIFT + Key_Delete ) ); // used for deleting files
paCut->setShortcut( cutShortCut );
- KStdAction::copy( TQT_TQOBJECT(this), TQT_SLOT( slotCopy() ), &m_actionCollection, "copy" );
- KStdAction::paste( TQT_TQOBJECT(this), TQT_SLOT( slotPaste() ), &m_actionCollection, "paste" );
- TDEAction *pasteTo = KStdAction::paste( TQT_TQOBJECT(this), TQT_SLOT( slotPopupPasteTo() ), &m_actionCollection, "pasteto" );
+ KStdAction::copy( this, TQ_SLOT( slotCopy() ), &m_actionCollection, "copy" );
+ KStdAction::paste( this, TQ_SLOT( slotPaste() ), &m_actionCollection, "paste" );
+ TDEAction *pasteTo = KStdAction::paste( this, TQ_SLOT( slotPopupPasteTo() ), &m_actionCollection, "pasteto" );
pasteTo->setEnabled( false ); // only enabled during popupMenu()
TDEShortcut reloadShortcut = TDEStdAccel::shortcut(TDEStdAccel::Reload);
- new TDEAction( i18n( "&Reload" ), "reload", reloadShortcut, TQT_TQOBJECT(this), TQT_SLOT( refreshIcons() ), &m_actionCollection, "reload" );
+ new TDEAction( i18n( "&Reload" ), "reload", reloadShortcut, this, TQ_SLOT( refreshIcons() ), &m_actionCollection, "reload" );
- (void) new TDEAction( i18n( "&Rename" ), /*"editrename",*/ Key_F2, TQT_TQOBJECT(this), TQT_SLOT( renameSelectedItem() ), &m_actionCollection, "rename" );
- (void) new TDEAction( i18n( "&Properties" ), ALT+Key_Return, TQT_TQOBJECT(this), TQT_SLOT( slotProperties() ), &m_actionCollection, "properties" );
+ (void) new TDEAction( i18n( "&Rename" ), /*"editrename",*/ Key_F2, this, TQ_SLOT( renameSelectedItem() ), &m_actionCollection, "rename" );
+ (void) new TDEAction( i18n( "&Properties" ), ALT+Key_Return, this, TQ_SLOT( slotProperties() ), &m_actionCollection, "properties" );
TDEAction* trash = new TDEAction( i18n( "&Move to Trash" ), "edittrash", Key_Delete, &m_actionCollection, "trash" );
- connect( trash, TQT_SIGNAL( activated( TDEAction::ActivationReason, TQt::ButtonState ) ),
- this, TQT_SLOT( slotTrashActivated( TDEAction::ActivationReason, TQt::ButtonState ) ) );
+ connect( trash, TQ_SIGNAL( activated( TDEAction::ActivationReason, TQt::ButtonState ) ),
+ this, TQ_SLOT( slotTrashActivated( TDEAction::ActivationReason, TQt::ButtonState ) ) );
TDEConfig config("kdeglobals", true, false);
config.setGroup( "KDE" );
- (void) new TDEAction( i18n( "&Delete" ), "edit-delete", SHIFT+Key_Delete, TQT_TQOBJECT(this), TQT_SLOT( slotDelete() ), &m_actionCollection, "del" );
+ (void) new TDEAction( i18n( "&Delete" ), "edit-delete", SHIFT+Key_Delete, this, TQ_SLOT( slotDelete() ), &m_actionCollection, "del" );
// Initial state of the actions (cut/copy/paste/...)
slotSelectionChanged();
@@ -486,6 +485,30 @@ void KDIconView::lineupIcons()
saveIconPositions();
}
+void KDIconView::incIconSpacing()
+{
+ if ( m_autoAlign && !KDesktopSettings::lockIcons() && KDesktopSettings::spacingCtrlScroll() )
+ {
+ setSpacing( ( spacing() + 1 ) );
+ lineupIcons();
+
+ KDesktopSettings::setIconSpacing( spacing() );
+ KDesktopSettings::writeConfig();
+ }
+}
+
+void KDIconView::decIconSpacing()
+{
+ if ( m_autoAlign && !KDesktopSettings::lockIcons() && KDesktopSettings::spacingCtrlScroll() && spacing() > 5 )
+ {
+ setSpacing( ( spacing() - 1 ) );
+ lineupIcons();
+
+ KDesktopSettings::setIconSpacing( spacing() );
+ KDesktopSettings::writeConfig();
+ }
+}
+
void KDIconView::setAutoAlign( bool b )
{
m_autoAlign = b;
@@ -503,8 +526,8 @@ void KDIconView::setAutoAlign( bool b )
else {
KRootWm::self()->startup = false;
}
- connect( this, TQT_SIGNAL( iconMoved() ),
- this, TQT_SLOT( lineupIcons() ) );
+ connect( this, TQ_SIGNAL( iconMoved() ),
+ this, TQ_SLOT( lineupIcons() ) );
}
else {
// change maxItemWidth, because when grid-align was active, it changed this for the grid
@@ -512,11 +535,20 @@ void KDIconView::setAutoAlign( bool b )
setMaxItemWidth( TQMAX( TQMAX( sz, previewIconSize( iconSize() ) ), KonqFMSettings::settings()->iconTextWidth() ) );
setFont( font() ); // Force calcRect()
- disconnect( this, TQT_SIGNAL( iconMoved() ),
- this, TQT_SLOT( lineupIcons() ) );
+ disconnect( this, TQ_SIGNAL( iconMoved() ),
+ this, TQ_SLOT( lineupIcons() ) );
}
}
+void KDIconView::setIconsLocked( bool lock )
+{
+ m_iconsLocked = lock;
+
+ setItemsMovable(!lock);
+ setAcceptDrops(!lock);
+ viewport()->setAcceptDrops(!lock);
+}
+
void KDIconView::startDirLister()
{
// if desktop is resized before start() is called (XRandr)
@@ -534,7 +566,7 @@ void KDIconView::startDirLister()
u.setPath( *it );
m_mergeDirs.append( u );
// And start listing this dir right now
- kapp->allowURLAction("list", KURL(), u);
+ tdeApp->allowURLAction("list", KURL(), u);
m_dirLister->openURL( u, true );
}
configureMedia();
@@ -618,7 +650,7 @@ void KDIconView::contentsMousePressEvent( TQMouseEvent *e )
if (!m_dirLister) return;
//kdDebug(1204) << "KDIconView::contentsMousePressEvent" << endl;
// TQIconView, as of Qt 2.2, doesn't emit mouseButtonPressed for LMB on background
- if ( e->button() == Qt::LeftButton && KRootWm::self()->hasLeftButtonMenu() )
+ if ( e->button() == TQt::LeftButton && KRootWm::self()->hasLeftButtonMenu() )
{
TQIconViewItem *item = findItem( e->pos() );
if ( !item )
@@ -644,7 +676,22 @@ void KDIconView::wheelEvent( TQWheelEvent* e )
TQIconViewItem *item = findItem( e->pos() );
if ( !item )
{
- emit wheelRolled( e->delta() );
+ TQWheelEvent *we = static_cast<TQWheelEvent*>(e);
+
+ if ( we->state() == ControlButton )
+ {
+ if ( we->delta() >= 0 )
+ incIconSpacing();
+ else
+ decIconSpacing();
+
+ we->accept();
+ }
+ else
+ {
+ emit wheelRolled( e->delta() );
+ }
+
return;
}
@@ -684,7 +731,7 @@ void KDIconView::slotMouseButtonClickedKDesktop(int _button, TQIconViewItem* _it
{
if (!m_dirLister) return;
//kdDebug(1204) << "KDIconView::slotMouseButtonClickedKDesktop" << endl;
- if ( _item && _button == Qt::MidButton ) {
+ if ( _item && _button == TQt::MidButton ) {
slotExecuted(_item);
}
}
@@ -702,7 +749,7 @@ void KDIconView::slotReturnPressed( TQIconViewItem *item )
void KDIconView::slotExecuted( TQIconViewItem *item )
{
- kapp->propagateSessionManager();
+ tdeApp->propagateSessionManager();
m_lastDeletedIconPos = TQPoint(); // user action -> not renaming an icon
if (item) {
visualActivate(item);
@@ -792,7 +839,7 @@ void KDIconView::saveMediaListView()
appname = "kdesktop";
else
appname.sprintf("kdesktop-screen-%d", konq_screen_number);
- kapp->dcopClient()->send( appname, "KDesktopIface", "configure()", data );
+ tdeApp->dcopClient()->send( appname, "KDesktopIface", "configure()", data );
delete g_pConfig;
}
@@ -859,7 +906,7 @@ bool KDIconView::deleteGlobalDesktopFiles()
// Web Browser kfmclient openBrowser %u Application TDE;
if ( isDesktopFile(fItem) ) {
- KSimpleConfig cfg( fItem->url().path(), true );
+ TDESimpleConfig cfg( fItem->url().path(), true );
cfg.setDesktopGroup();
if ( cfg.readEntry( "X-Trinity-BuiltIn" ) == "true" ) {
removeBuiltinIcon(cfg.readEntry( "Name" ));
@@ -867,7 +914,7 @@ bool KDIconView::deleteGlobalDesktopFiles()
}
}
- KDesktopFile df(desktopPath + fItem->url().fileName());
+ TDEDesktopFile df(desktopPath + fItem->url().fileName());
df.writeEntry("Hidden", true);
df.sync();
@@ -900,7 +947,7 @@ void KDIconView::slotDelete()
// Not to be confused with the global popup-menu, KRootWm, when doing RMB on the desktop
void KDIconView::popupMenu( const TQPoint &_global, const KFileItemList& _items )
{
- if (!kapp->authorize("action/kdesktop_rmb")) return;
+ if (!tdeApp->authorize("action/kdesktop_rmb")) return;
if (!m_dirLister) return;
if ( _items.count() == 1 )
m_popupURL = _items.getFirst()->url();
@@ -1015,7 +1062,7 @@ bool KDIconView::makeFriendlyText( KFileIVI *fileIVI )
if ( !desktopFile.isEmpty() )
{
- KSimpleConfig cfg( desktopFile, true );
+ TDESimpleConfig cfg( desktopFile, true );
cfg.setDesktopGroup();
if (cfg.readBoolEntry("Hidden")) {
return false;
@@ -1098,7 +1145,7 @@ void KDIconView::slotNewItems( const KFileItemList & entries )
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 );
+ m_dotDirectory = new TDESimpleConfig( dotDirectoryPath(), true );
// recursion
slotNewItems( entries );
delete m_dotDirectory;
@@ -1359,7 +1406,7 @@ void KDIconView::refreshTrashIcon()
KFileIVI * fileIVI = static_cast<KFileIVI *>(it);
KFileItem* item = fileIVI->item();
if ( isDesktopFile( item ) ) {
- KSimpleConfig cfg( item->url().path(), true );
+ TDESimpleConfig cfg( item->url().path(), true );
cfg.setDesktopGroup();
if ( cfg.readEntry( "Type" ) == "Link" &&
cfg.readEntry( "URL" ) == "trash:/" ) {
@@ -1399,7 +1446,7 @@ void KDIconView::showFreeSpaceOverlay(KFileIVI* item)
if (!m_paOutstandingFreeSpaceOverlaysTimer)
{
m_paOutstandingFreeSpaceOverlaysTimer = new TQTimer(this);
- connect(m_paOutstandingFreeSpaceOverlaysTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotFreeSpaceOverlayStart()));
+ connect(m_paOutstandingFreeSpaceOverlaysTimer, TQ_SIGNAL(timeout()), TQ_SLOT(slotFreeSpaceOverlayStart()));
}
m_paOutstandingFreeSpaceOverlaysTimer->start(20, true);
}
@@ -1419,7 +1466,7 @@ void KDIconView::slotFreeSpaceOverlayStart()
if (overlay)
{
- connect( overlay, TQT_SIGNAL( finished() ), this, TQT_SLOT( slotFreeSpaceOverlayFinished() ) );
+ connect( overlay, TQ_SIGNAL( finished() ), this, TQ_SLOT( slotFreeSpaceOverlayFinished() ) );
overlay->start(); // Watch out, may emit finished() immediately!!
return; // Let it run....
}
@@ -1531,7 +1578,7 @@ void KDIconView::slotClipboardDataChanged()
void KDIconView::renameDesktopFile(const TQString &path, const TQString &name)
{
- KDesktopFile cfg( path, false );
+ TDEDesktopFile cfg( path, false );
// if we don't have the desktop entry group, then we assume that
// it's not a config file (and we don't nuke it!)
@@ -1620,7 +1667,7 @@ void KDIconView::slotAboutToCreate(const TQPoint &pos, const TQValueList<TDEIO::
saveIconPosition(m_dotDirectory, m_lastDropPos.x(), m_lastDropPos.y());
int dX = m_lastDropPos.x() - m_dropPos.x();
int dY = m_lastDropPos.y() - m_dropPos.y();
- if ((QABS(dX) > QABS(dY)) || (m_lastDropPos.x() + 2*gridX > width()))
+ if ((TQABS(dX) > TQABS(dY)) || (m_lastDropPos.x() + 2*gridX > width()))
m_lastDropPos = TQPoint(m_dropPos.x(), m_lastDropPos.y() + gridY);
else
m_lastDropPos = TQPoint(m_lastDropPos.x() + gridX, m_lastDropPos.y());
@@ -1726,25 +1773,25 @@ void KDIconView::viewportWheelEvent( TQWheelEvent * e )
void KDIconView::updateWorkArea( const TQRect &wr )
{
m_gotIconsArea = true; // now we have it!
-
+
if (( iconArea() == wr ) && (m_needDesktopAlign == false)) {
// nothing changed; avoid repaint/saveIconPosition ...
return;
}
-
+
TQRect oldArea = iconArea();
setIconArea( wr );
-
+
kdDebug(1204) << "KDIconView::updateWorkArea wr: " << wr.x() << "," << wr.y() << " " << wr.width() << "x" << wr.height() << endl;
kdDebug(1204) << " oldArea: " << oldArea.x() << "," << oldArea.y() << " " << oldArea.width() << "x" << oldArea.height() << endl;
-
+
bool needRepaint = false;
TQIconViewItem* item;
int dx, dy;
-
+
dx = wr.left() - oldArea.left();
dy = wr.top() - oldArea.top();
-
+
if ( dx != 0 || dy != 0 ) {
if ( (dx > 0) || (dy > 0) ) {
// the iconArea was shifted right/down; less space now
@@ -1762,14 +1809,14 @@ void KDIconView::updateWorkArea( const TQRect &wr )
// the iconArea was shifted left/up; more space now - use it
needRepaint = true;
}
-
+
if ( needRepaint ) {
for ( item = firstItem(); item; item = item->nextItem() ) {
item->moveBy( dx, dy );
}
}
}
-
+
for ( item = firstItem(); item; item = item->nextItem() ) {
TQRect r( item->rect() );
int dx = 0, dy = 0;
@@ -1785,11 +1832,11 @@ void KDIconView::updateWorkArea( const TQRect &wr )
}
}
if ( needRepaint ) {
- viewport()->repaint( FALSE );
- repaint( FALSE );
+ viewport()->repaint( false );
+ repaint( false );
saveIconPositions();
}
-
+
m_needDesktopAlign = false;
lineupIcons();
}
@@ -1858,21 +1905,21 @@ bool KDIconView::isFreePosition( const TQIconViewItem *item, const TQRect &curre
if (area.isNull()) area = iconArea();
// If the proposed item rect is not contained by the desktop, by definition the item position is not free!
- if (!area.contains(r, FALSE)) {
+ if (!area.contains(r, false)) {
return false;
}
-
+
TQIconViewItem *it = firstItem();
for (; it; it = it->nextItem() ) {
if ( !it->rect().isValid() || it == item ) {
continue;
}
-
+
if ( it->intersects( r ) ) {
return false;
}
}
-
+
return true;
}
@@ -1882,7 +1929,7 @@ bool KDIconView::isFreePosition( const TQIconViewItem *item, const TQRect& rect,
if (area.isNull()) area = iconArea();
// If the proposed item rect is not contained by the desktop, by definition the item position is not free!
- if (!area.contains(rect, FALSE)) {
+ if (!area.contains(rect, false)) {
return false;
}
@@ -1891,12 +1938,12 @@ bool KDIconView::isFreePosition( const TQIconViewItem *item, const TQRect& rect,
if ( !rect.isValid() || it == item ) {
continue;
}
-
+
if ( it->intersects( rect ) ) {
return false;
}
}
-
+
return true;
}
@@ -1921,12 +1968,12 @@ void KDIconView::moveToFreePosition(TQIconViewItem *item, const TQRect &currentI
m_lastDeletedIconPos = TQPoint();
return;
}
-
+
//try to find a free place to put the item, honouring the m_bVertAlign property
TQRect rect=item->rect();
if (m_bVertAlign) {
kdDebug(1214)<<"moveToFreePosition for vertical alignment"<<endl;
-
+
rect.moveTopLeft(TQPoint(currentIconArea.x()+spacing(),currentIconArea.y()+spacing()));
do {
success=false;
@@ -1939,7 +1986,7 @@ void KDIconView::moveToFreePosition(TQIconViewItem *item, const TQRect &currentI
break;
}
}
-
+
if (!success) {
rect.moveTopLeft(TQPoint(rect.right()+spacing(),spacing()));
}
diff --git a/kdesktop/kdiconview.h b/kdesktop/kdiconview.h
index 7b20e1817..7ef8d4889 100644
--- a/kdesktop/kdiconview.h
+++ b/kdesktop/kdiconview.h
@@ -33,7 +33,7 @@
class KDirLister;
class KonqSettings;
-class KSimpleConfig;
+class TDESimpleConfig;
class TDEAccel;
class KShadowEngine;
class KDesktopShadowSettings;
@@ -48,7 +48,7 @@ class KDesktopShadowSettings;
*/
class KDIconView : public KonqIconViewWidget, public KDirNotify
{
- Q_OBJECT
+ TQ_OBJECT
public:
KDIconView( TQWidget *parent, const char* name = 0L );
@@ -75,6 +75,7 @@ public:
void lineupIcons(TQIconView::Arrangement);
+ void setIconsLocked( bool b );
void setAutoAlign( bool b );
TQStringList selectedURLs();
@@ -165,6 +166,9 @@ public slots:
void slotClear();
void refreshIcons();
+ void incIconSpacing();
+ void decIconSpacing();
+
protected slots:
void slotFreeSpaceOverlayStart();
void slotFreeSpaceOverlayFinished();
@@ -201,8 +205,8 @@ private:
void refreshTrashIcon();
static TQRect desktopRect();
- static void saveIconPosition(KSimpleConfig *config, int x, int y);
- static void readIconPosition(KSimpleConfig *config, int &x, int &y);
+ static void saveIconPosition(TDESimpleConfig *config, int x, int y);
+ static void readIconPosition(TDESimpleConfig *config, int &x, int &y);
void showFreeSpaceOverlay(KFileIVI* item);
@@ -214,6 +218,7 @@ private:
bool m_bNeedRepaint;
bool m_bNeedSave;
+ bool m_iconsLocked;
bool m_autoAlign;
/** true if even one icon has an icon-position entry in the .directory */
@@ -238,7 +243,7 @@ private:
TQStringList m_desktopDirs;
/** The desktop's .directory, used for storing icon positions */
- KSimpleConfig *m_dotDirectory;
+ TDESimpleConfig *m_dotDirectory;
/** Position of last deleted icon - used when renaming a file */
TQPoint m_lastDeletedIconPos;
diff --git a/kdesktop/krootwm.cc b/kdesktop/krootwm.cpp
index 9c68fc740..9e751d573 100644
--- a/kdesktop/krootwm.cc
+++ b/kdesktop/krootwm.cpp
@@ -1,5 +1,5 @@
/*
- * krootwm.cc Part of the KDE project.
+ * krootwm.cpp Part of the KDE project.
*
* Copyright (C) 1997 Matthias Ettrich
* (C) 1997 Torben Weis, weis@kde.org
@@ -32,8 +32,8 @@
#include <dirent.h>
#include <errno.h>
-#include <kprocess.h>
-#include <kstandarddirs.h>
+#include <tdeprocess.h>
+#include <tdestandarddirs.h>
#include <tdepopupmenu.h>
#include <tdeapplication.h>
#include <tdeconfig.h>
@@ -52,7 +52,7 @@
#include <tdemessagebox.h>
#include <kuser.h>
#include <tqfile.h>
-#include <ntqthread.h>
+#include <tqthread.h>
#include <tqeventloop.h>
#include "krootwm.h"
@@ -72,7 +72,7 @@ KRootWm * KRootWm::s_rootWm = 0;
extern TQCString kdesktop_name, kicker_name, twin_name;
-KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop), startup(FALSE)
+KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop), startup(false)
{
s_rootWm = this;
m_actionCollection = new TDEActionCollection(_desktop, this, "KRootWm::m_actionCollection");
@@ -86,16 +86,16 @@ KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop),
// Creates the new menu
menuBar = 0; // no menubar yet
menuNew = 0;
- if (m_bDesktopEnabled && kapp->authorize("editable_desktop_icons"))
+ if (m_bDesktopEnabled && tdeApp->authorize("editable_desktop_icons"))
{
menuNew = new KNewMenu( m_actionCollection, "new_menu" );
- connect(menuNew->popupMenu(), TQT_SIGNAL( aboutToShow() ),
- this, TQT_SLOT( slotFileNewAboutToShow() ) );
- connect( menuNew, TQT_SIGNAL( activated() ),
- m_pDesktop->iconView(), TQT_SLOT( slotNewMenuActivated() ) );
+ connect(menuNew->popupMenu(), TQ_SIGNAL( aboutToShow() ),
+ this, TQ_SLOT( slotFileNewAboutToShow() ) );
+ connect( menuNew, TQ_SIGNAL( activated() ),
+ m_pDesktop->iconView(), TQ_SLOT( slotNewMenuActivated() ) );
}
- if (kapp->authorizeTDEAction("bookmarks"))
+ if (tdeApp->authorizeTDEAction("bookmarks"))
{
bookmarks = new TDEActionMenu( i18n("Bookmarks"), "bookmark", m_actionCollection, "bookmarks" );
// The KBookmarkMenu is needed to fill the Bookmarks menu in the desktop menubar.
@@ -109,13 +109,13 @@ KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop),
bookmarks = 0;
bookmarkMenu = 0;
}
-
+
// The windowList and desktop menus can be part of a menubar (Mac style)
// so we create them here
desktopMenu = new TQPopupMenu;
windowListMenu = new KWindowListMenu;
- connect( windowListMenu, TQT_SIGNAL( aboutToShow() ),
- this, TQT_SLOT( slotWindowListAboutToShow() ) );
+ connect( windowListMenu, TQ_SIGNAL( aboutToShow() ),
+ this, TQ_SLOT( slotWindowListAboutToShow() ) );
// Create the actions
#if 0
@@ -132,82 +132,82 @@ KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop),
}
#endif
- if (kapp->authorize("run_command"))
+ if (tdeApp->authorize("run_command"))
{
- new TDEAction(i18n("Run Command..."), "system-run", 0, TQT_TQOBJECT(m_pDesktop), TQT_SLOT( slotExecuteCommand() ), m_actionCollection, "exec" );
- new TDEAction(i18n("Open Terminal Here..." ), "terminal", CTRL+Key_T, this, TQT_SLOT( slotOpenTerminal() ),
+ new TDEAction(i18n("Run Command..."), "system-run", 0, m_pDesktop, TQ_SLOT( slotExecuteCommand() ), m_actionCollection, "exec" );
+ new TDEAction(i18n("Open Terminal Here..." ), "terminal", CTRL+Key_T, this, TQ_SLOT( slotOpenTerminal() ),
m_actionCollection, "open_terminal" );
}
if (!TDEGlobal::config()->isImmutable())
{
- new TDEAction(i18n("Configure Desktop..."), "configure", 0, this, TQT_SLOT( slotConfigureDesktop() ),
+ new TDEAction(i18n("Configure Desktop..."), "configure", 0, this, TQ_SLOT( slotConfigureDesktop() ),
m_actionCollection, "configdesktop" );
- new TDEAction(i18n("Disable Desktop Menu"), 0, this, TQT_SLOT( slotToggleDesktopMenu() ),
+ new TDEAction(i18n("Disable Desktop Menu"), 0, this, TQ_SLOT( slotToggleDesktopMenu() ),
m_actionCollection, "togglemenubar" );
}
- new TDEAction(i18n("Unclutter Windows"), 0, this, TQT_SLOT( slotUnclutterWindows() ),
+ new TDEAction(i18n("Unclutter Windows"), 0, this, TQ_SLOT( slotUnclutterWindows() ),
m_actionCollection, "unclutter" );
- new TDEAction(i18n("Cascade Windows"), 0, this, TQT_SLOT( slotCascadeWindows() ),
+ new TDEAction(i18n("Cascade Windows"), 0, this, TQ_SLOT( slotCascadeWindows() ),
m_actionCollection, "cascade" );
// arrange menu actions
- if (m_bDesktopEnabled && kapp->authorize("editable_desktop_icons"))
+ if (m_bDesktopEnabled && tdeApp->authorize("editable_desktop_icons"))
{
- new TDEAction(i18n("By Name (Case Sensitive)"), 0, this, TQT_SLOT( slotArrangeByNameCS() ),
+ new TDEAction(i18n("By Name (Case Sensitive)"), 0, this, TQ_SLOT( slotArrangeByNameCS() ),
m_actionCollection, "sort_ncs");
- new TDEAction(i18n("By Name (Case Insensitive)"), 0, this, TQT_SLOT( slotArrangeByNameCI() ),
+ new TDEAction(i18n("By Name (Case Insensitive)"), 0, this, TQ_SLOT( slotArrangeByNameCI() ),
m_actionCollection, "sort_nci");
- new TDEAction(i18n("By Size"), 0, this, TQT_SLOT( slotArrangeBySize() ),
+ new TDEAction(i18n("By Size"), 0, this, TQ_SLOT( slotArrangeBySize() ),
m_actionCollection, "sort_size");
- new TDEAction(i18n("By Type"), 0, this, TQT_SLOT( slotArrangeByType() ),
+ new TDEAction(i18n("By Type"), 0, this, TQ_SLOT( slotArrangeByType() ),
m_actionCollection, "sort_type");
- new TDEAction(i18n("By Date"), 0, this, TQT_SLOT( slotArrangeByDate() ),
+ new TDEAction(i18n("By Date"), 0, this, TQ_SLOT( slotArrangeByDate() ),
m_actionCollection, "sort_date");
TDEToggleAction *aSortDirsFirst = new TDEToggleAction( i18n("Directories First"), 0, m_actionCollection, "sort_directoriesfirst" );
- connect( aSortDirsFirst, TQT_SIGNAL( toggled( bool ) ),
- this, TQT_SLOT( slotToggleDirFirst( bool ) ) );
+ connect( aSortDirsFirst, TQ_SIGNAL( toggled( bool ) ),
+ this, TQ_SLOT( slotToggleDirFirst( bool ) ) );
new TDEAction(i18n("Line Up Horizontally"), 0,
- this, TQT_SLOT( slotLineupIconsHoriz() ),
+ this, TQ_SLOT( slotLineupIconsHoriz() ),
m_actionCollection, "lineupHoriz" );
new TDEAction(i18n("Line Up Vertically"), 0,
- this, TQT_SLOT( slotLineupIconsVert() ),
+ this, TQ_SLOT( slotLineupIconsVert() ),
m_actionCollection, "lineupVert" );
TDEToggleAction *aAutoAlign = new TDEToggleAction(i18n("Align to Grid"), 0,
m_actionCollection, "realign" );
- connect( aAutoAlign, TQT_SIGNAL( toggled( bool ) ),
- this, TQT_SLOT( slotToggleAutoAlign( bool ) ) );
+ connect( aAutoAlign, TQ_SIGNAL( toggled( bool ) ),
+ this, TQ_SLOT( slotToggleAutoAlign( bool ) ) );
TDEToggleAction *aLockIcons = new TDEToggleAction(i18n("Lock in Place"), 0, m_actionCollection, "lock_icons");
- connect( aLockIcons, TQT_SIGNAL( toggled( bool ) ),
- this, TQT_SLOT( slotToggleLockIcons( bool ) ) );
+ connect( aLockIcons, TQ_SIGNAL( toggled( bool ) ),
+ this, TQ_SLOT( slotToggleLockIcons( bool ) ) );
}
if (m_bDesktopEnabled)
{
- new TDEAction(i18n("Refresh Desktop"), "desktop", 0, this, TQT_SLOT( slotRefreshDesktop() ),
+ new TDEAction(i18n("Refresh Desktop"), "desktop", 0, this, TQ_SLOT( slotRefreshDesktop() ),
m_actionCollection, "refresh" );
}
// Icons in sync with kicker
- if (kapp->authorize("lock_screen"))
+ if (tdeApp->authorize("lock_screen"))
{
- new TDEAction(i18n("Lock Session"), "system-lock-screen", 0, this, TQT_SLOT( slotLock() ),
+ new TDEAction(i18n("Lock Session"), "system-lock-screen", 0, this, TQ_SLOT( slotLock() ),
m_actionCollection, "lock" );
}
- if (kapp->authorize("logout"))
+ if (tdeApp->authorize("logout"))
{
new TDEAction(i18n("Log Out \"%1\"...").arg(KUser().loginName()), "system-log-out", 0,
- this, TQT_SLOT( slotLogout() ), m_actionCollection, "logout" );
+ this, TQ_SLOT( slotLogout() ), m_actionCollection, "logout" );
}
- if (kapp->authorize("start_new_session") && DM().isSwitchable())
+ if (tdeApp->authorize("start_new_session") && DM().isSwitchable())
{
new TDEAction(i18n("Start New Session"), "fork", 0, this,
- TQT_SLOT( slotNewSession() ), m_actionCollection, "newsession" );
- if (kapp->authorize("lock_screen"))
+ TQ_SLOT( slotNewSession() ), m_actionCollection, "newsession" );
+ if (tdeApp->authorize("lock_screen"))
{
new TDEAction(i18n("Lock Current && Start New Session"), "system-lock-screen", 0, this,
- TQT_SLOT( slotLockNNewSession() ), m_actionCollection, "lockNnewsession" );
+ TQ_SLOT( slotLockNNewSession() ), m_actionCollection, "lockNnewsession" );
}
}
@@ -249,8 +249,8 @@ void KRootWm::initConfig()
// Read configuration for icons alignment
if ( m_bDesktopEnabled ) {
m_pDesktop->iconView()->setAutoAlign( KDesktopSettings::autoLineUpIcons() );
- if ( kapp->authorize( "editable_desktop_icons" ) ) {
- m_pDesktop->iconView()->setItemsMovable( !KDesktopSettings::lockIcons() );
+ if ( tdeApp->authorize( "editable_desktop_icons" ) ) {
+ m_pDesktop->iconView()->setIconsLocked( KDesktopSettings::lockIcons() );
TDEToggleAction *aLockIcons = static_cast<TDEToggleAction*>(m_actionCollection->action("lock_icons"));
if (aLockIcons)
aLockIcons->setChecked( KDesktopSettings::lockIcons() );
@@ -314,8 +314,8 @@ void KRootWm::buildMenus()
if (m_actionCollection->action("newsession"))
{
sessionsMenu = new TQPopupMenu;
- connect( sessionsMenu, TQT_SIGNAL(aboutToShow()), TQT_SLOT(slotPopulateSessions()) );
- connect( sessionsMenu, TQT_SIGNAL(activated(int)), TQT_SLOT(slotSessionActivated(int)) );
+ connect( sessionsMenu, TQ_SIGNAL(aboutToShow()), TQ_SLOT(slotPopulateSessions()) );
+ connect( sessionsMenu, TQ_SIGNAL(activated(int)), TQ_SLOT(slotSessionActivated(int)) );
}
if (menuBar) {
@@ -450,7 +450,7 @@ void KRootWm::buildMenus()
TQPopupMenu* pWindowOperationsMenu = new TQPopupMenu;
m_actionCollection->action("cascade")->plug( pWindowOperationsMenu );
m_actionCollection->action("unclutter")->plug( pWindowOperationsMenu );
- desktopMenu->insertItem(SmallIconSet("window_list"), i18n("Windows"), pWindowOperationsMenu);
+ desktopMenu->insertItem(SmallIconSet("window_duplicate"), i18n("Windows"), pWindowOperationsMenu);
if (m_bDesktopEnabled)
{
@@ -464,7 +464,7 @@ void KRootWm::buildMenus()
}
int lastSep = desktopMenu->insertSeparator();
- if (sessionsMenu && kapp->authorize("switch_user"))
+ if (sessionsMenu && tdeApp->authorize("switch_user"))
{
desktopMenu->insertItem(SmallIconSet("switchuser" ), i18n("Switch User"), sessionsMenu);
needSeparator = true;
@@ -489,7 +489,7 @@ void KRootWm::buildMenus()
desktopMenu->removeItem(lastSep);
}
- connect( desktopMenu, TQT_SIGNAL( aboutToShow() ), this, TQT_SLOT( slotFileNewAboutToShow() ) );
+ connect( desktopMenu, TQ_SIGNAL( aboutToShow() ), this, TQ_SLOT( slotFileNewAboutToShow() ) );
if (menuBar) {
menuBar->insertItem(i18n("File"), file);
@@ -609,16 +609,16 @@ void KRootWm::mousePressed( const TQPoint& _global, int _button )
{
if (!desktopMenu) return; // initialisation not yet done
switch ( _button ) {
- case Qt::LeftButton:
+ case TQt::LeftButton:
if ( m_bShowMenuBar && menuBar )
menuBar->raise();
activateMenu( leftButtonChoice, _global );
break;
- case Qt::MidButton:
+ case TQt::MidButton:
activateMenu( middleButtonChoice, _global );
break;
- case Qt::RightButton:
- if (!kapp->authorize("action/kdesktop_rmb")) return;
+ case TQt::RightButton:
+ if (!tdeApp->authorize("action/kdesktop_rmb")) return;
activateMenu( rightButtonChoice, _global );
break;
default:
@@ -637,13 +637,13 @@ void KRootWm::slotWindowList() {
else
r = desktop->screenGeometry( desktop->screenNumber(TQCursor::pos()));
windowListMenu->init();
- disconnect( windowListMenu, TQT_SIGNAL( aboutToShow() ),
- this, TQT_SLOT( slotWindowListAboutToShow() ) ); // avoid calling init() twice
+ disconnect( windowListMenu, TQ_SIGNAL( aboutToShow() ),
+ this, TQ_SLOT( slotWindowListAboutToShow() ) ); // avoid calling init() twice
// windowListMenu->rect() is not valid before showing, use sizeHint()
windowListMenu->popup(r.center() - TQRect( TQPoint( 0, 0 ), windowListMenu->sizeHint()).center());
windowListMenu->selectActiveWindow(); // make the popup more useful
- connect( windowListMenu, TQT_SIGNAL( aboutToShow() ),
- this, TQT_SLOT( slotWindowListAboutToShow() ) );
+ connect( windowListMenu, TQ_SIGNAL( aboutToShow() ),
+ this, TQ_SLOT( slotWindowListAboutToShow() ) );
}
void KRootWm::slotSwitchUser() {
@@ -657,11 +657,11 @@ void KRootWm::slotSwitchUser() {
else
r = desktop->screenGeometry( desktop->screenNumber(TQCursor::pos()));
slotPopulateSessions();
- disconnect( sessionsMenu, TQT_SIGNAL( aboutToShow() ),
- this, TQT_SLOT( slotPopulateSessions() ) ); // avoid calling init() twice
+ disconnect( sessionsMenu, TQ_SIGNAL( aboutToShow() ),
+ this, TQ_SLOT( slotPopulateSessions() ) ); // avoid calling init() twice
sessionsMenu->popup(r.center() - TQRect( TQPoint( 0, 0 ), sessionsMenu->sizeHint()).center());
- connect( sessionsMenu, TQT_SIGNAL( aboutToShow() ),
- TQT_SLOT( slotPopulateSessions() ) );
+ connect( sessionsMenu, TQ_SIGNAL( aboutToShow() ),
+ TQ_SLOT( slotPopulateSessions() ) );
}
void KRootWm::slotArrangeByNameCS()
@@ -732,12 +732,24 @@ void KRootWm::slotLineupIcons() {
void KRootWm::slotToggleLockIcons( bool lock )
{
- if (m_bDesktopEnabled)
- {
- m_pDesktop->iconView()->setItemsMovable( !lock );
- KDesktopSettings::setLockIcons( lock );
- KDesktopSettings::writeConfig();
- }
+ KDesktopSettings::setLockIcons( lock );
+ KDesktopSettings::writeConfig();
+
+ // Also save it globally...
+ int desktop = TDEApplication::desktop()->primaryScreen();
+ TQCString cfilename;
+ if (desktop == 0)
+ cfilename = "kdesktoprc";
+ else
+ cfilename.sprintf("kdesktop-screen-%drc", desktop);
+
+ TDEConfig *kdg_config = new TDEConfig(cfilename, false, false);
+ kdg_config->setGroup( "General" );
+ kdg_config->writeEntry( "LockIcons", lock );
+ kdg_config->sync();
+ delete kdg_config;
+
+ m_pDesktop->iconView()->setIconsLocked( lock );
}
void KRootWm::slotRefreshDesktop() {
@@ -774,12 +786,12 @@ void KRootWm::slotConfigureDesktop() {
if (!m_configDialog)
{
m_configDialog = new KCMultiDialog( (TQWidget*)0, "configureDialog" );
- connect(m_configDialog, TQT_SIGNAL(finished()), this, TQT_SLOT(slotConfigClosed()));
+ connect(m_configDialog, TQ_SIGNAL(finished()), this, TQ_SLOT(slotConfigClosed()));
TQStringList modules = configModules();
for (TQStringList::const_iterator it = modules.constBegin(); it != modules.constEnd(); ++it)
{
- if (kapp->authorizeControlModule(*it))
+ if (tdeApp->authorizeControlModule(*it))
{
m_configDialog->addModule(*it);
}
@@ -803,22 +815,22 @@ void KRootWm::slotToggleDesktopMenu()
KDesktopSettings::writeConfig();
TQByteArray data;
- kapp->dcopClient()->send( kdesktop_name, "KDesktopIface", "configure()", data);
+ tdeApp->dcopClient()->send( kdesktop_name, "KDesktopIface", "configure()", data);
// for the standalone menubar setting
- kapp->dcopClient()->send( "menuapplet*", "menuapplet", "configure()", data );
- kapp->dcopClient()->send( kicker_name, kicker_name, "configureMenubar()", data );
- kapp->dcopClient()->send( "twin*", "", "reconfigure()", data );
+ tdeApp->dcopClient()->send( "menuapplet*", "menuapplet", "configure()", data );
+ tdeApp->dcopClient()->send( kicker_name, kicker_name, "configureMenubar()", data );
+ tdeApp->dcopClient()->send( "twin*", "", "reconfigure()", data );
}
void KRootWm::slotUnclutterWindows()
{
- kapp->dcopClient()->send(twin_name, "KWinInterface", "unclutterDesktop()", TQString(""));
+ tdeApp->dcopClient()->send(twin_name, "KWinInterface", "unclutterDesktop()", TQString(""));
}
void KRootWm::slotCascadeWindows() {
- kapp->dcopClient()->send(twin_name, "KWinInterface", "cascadeDesktop()", TQString(""));
+ tdeApp->dcopClient()->send(twin_name, "KWinInterface", "cascadeDesktop()", TQString(""));
}
@@ -828,7 +840,7 @@ void KRootWm::slotLock() {
void KRootWm::slotSave() {
- kapp->dcopClient()->send(kdesktop_name, "KScreensaverIface", "save()", TQString(""));
+ tdeApp->dcopClient()->send(kdesktop_name, "KScreensaverIface", "save()", TQString(""));
}
diff --git a/kdesktop/krootwm.h b/kdesktop/krootwm.h
index 8fb5af8b9..efdd64c3e 100644
--- a/kdesktop/krootwm.h
+++ b/kdesktop/krootwm.h
@@ -64,7 +64,7 @@ class KRootWmThreadHelperObject;
* This class is the handler for the menus (root popup menu and desktop menubar)
*/
class KRootWm: public TQObject {
- Q_OBJECT
+ TQ_OBJECT
public:
KRootWm(SaverEngine*, KDesktop*);
@@ -80,7 +80,7 @@ public:
static KRootWm * self() { return s_rootWm; }
/**
- * share this with desktop.cc
+ * share this with desktop.cpp
*/
KNewMenu * newMenu() const { return menuNew; }
diff --git a/kdesktop/kwebdesktop/kwebdesktop.cpp b/kdesktop/kwebdesktop/kwebdesktop.cpp
index 1e2499ea2..37358f758 100644
--- a/kdesktop/kwebdesktop/kwebdesktop.cpp
+++ b/kdesktop/kwebdesktop/kwebdesktop.cpp
@@ -52,10 +52,10 @@ KWebDesktopRun::KWebDesktopRun( KWebDesktop* webDesktop, const KURL & url )
{
kdDebug() << "KWebDesktopRun::KWebDesktopRun starting get" << endl;
TDEIO::Job * job = TDEIO::get(m_url, false, false);
- connect( job, TQT_SIGNAL( result( TDEIO::Job *)),
- this, TQT_SLOT( slotFinished(TDEIO::Job *)));
- connect( job, TQT_SIGNAL( mimetype( TDEIO::Job *, const TQString &)),
- this, TQT_SLOT( slotMimetype(TDEIO::Job *, const TQString &)));
+ connect( job, TQ_SIGNAL( result( TDEIO::Job *)),
+ this, TQ_SLOT( slotFinished(TDEIO::Job *)));
+ connect( job, TQ_SIGNAL( mimetype( TDEIO::Job *, const TQString &)),
+ this, TQ_SLOT( slotMimetype(TDEIO::Job *, const TQString &)));
}
void KWebDesktopRun::slotMimetype( TDEIO::Job *job, const TQString &_type )
@@ -79,7 +79,7 @@ void KWebDesktopRun::slotFinished( TDEIO::Job * job )
if (job->error())
{
kdDebug() << job->errorString() << endl;
- kapp->exit(1);
+ tdeApp->exit(1);
}
}
@@ -141,7 +141,7 @@ void KWebDesktop::slotCompleted()
TQPixmap snapshot = TQPixmap::grabWidget( m_part->widget() );
snapshot.save( m_imageFile, "PNG" );
// And terminate the app.
- kapp->quit();
+ tdeApp->quit();
}
KParts::ReadOnlyPart* KWebDesktop::createPart( const TQString& mimeType )
@@ -166,7 +166,7 @@ KParts::ReadOnlyPart* KWebDesktop::createPart( const TQString& mimeType )
((TQScrollView *)htmlPart->widget())->setHScrollBarMode( TQScrollView::AlwaysOff );
((TQScrollView *)htmlPart->widget())->setVScrollBarMode( TQScrollView::AlwaysOff );
- connect( htmlPart, TQT_SIGNAL( completed() ), this, TQT_SLOT( slotCompleted() ) );
+ connect( htmlPart, TQ_SIGNAL( completed() ), this, TQ_SLOT( slotCompleted() ) );
m_part = htmlPart;
} else {
// Try to find an appropriate viewer component
@@ -176,13 +176,13 @@ KParts::ReadOnlyPart* KWebDesktop::createPart( const TQString& mimeType )
kdWarning() << "No handler found for " << mimeType << endl;
else {
kdDebug() << "Loaded " << m_part->className() << endl;
- connect( m_part, TQT_SIGNAL( completed() ),
- this, TQT_SLOT( slotCompleted() ) );
+ connect( m_part, TQ_SIGNAL( completed() ),
+ this, TQ_SLOT( slotCompleted() ) );
}
}
if ( m_part ) {
- connect( m_part, TQT_SIGNAL( canceled(const TQString &) ),
- this, TQT_SLOT( slotCompleted() ) );
+ connect( m_part, TQ_SIGNAL( canceled(const TQString &) ),
+ this, TQ_SLOT( slotCompleted() ) );
}
return m_part;
}
diff --git a/kdesktop/kwebdesktop/kwebdesktop.h b/kdesktop/kwebdesktop/kwebdesktop.h
index 2641378cf..686e40297 100644
--- a/kdesktop/kwebdesktop/kwebdesktop.h
+++ b/kdesktop/kwebdesktop/kwebdesktop.h
@@ -28,7 +28,7 @@ namespace TDEIO { class Job; }
class KWebDesktop : public TQObject
{
- Q_OBJECT
+ TQ_OBJECT
public:
KWebDesktop( TQObject* parent, const TQCString & imageFile, int width, int height )
: TQObject( parent ),
@@ -51,9 +51,9 @@ private:
};
-class KWebDesktopRun : public QObject
+class KWebDesktopRun : public TQObject
{
- Q_OBJECT
+ TQ_OBJECT
public:
KWebDesktopRun( KWebDesktop* webDesktop, const KURL & url );
~KWebDesktopRun() {}
diff --git a/kdesktop/kwebdesktop/kwebdesktop.kcfg b/kdesktop/kwebdesktop/kwebdesktop.kcfg
index b0920f410..b9a1edbb5 100644
--- a/kdesktop/kwebdesktop/kwebdesktop.kcfg
+++ b/kdesktop/kwebdesktop/kwebdesktop.kcfg
@@ -11,7 +11,7 @@
<default>http://www.kde.org/</default>
<label></label>
<whatsthis></whatsthis>
- <!-- kdiconview.cc:1103 -->
+ <!-- kdiconview.cpp:1103 -->
<!-- cfg.readEntry( "URL" ) == "trash:/" ) { -->
</entry>
</group>
diff --git a/kdesktop/lock/CMakeLists.txt b/kdesktop/lock/CMakeLists.txt
index 05e14e938..abeebb3d2 100644
--- a/kdesktop/lock/CMakeLists.txt
+++ b/kdesktop/lock/CMakeLists.txt
@@ -34,14 +34,14 @@ link_directories(
set( target kdesktop_lock )
set( ${target}_SRCS
- lockprocess.cc lockdlg.cc infodlg.cc querydlg.cc sakdlg.cc
- securedlg.cc autologout.cc main.cc
+ lockprocess.cpp lockdlg.cpp infodlg.cpp querydlg.cpp sakdlg.cpp
+ securedlg.cpp autologout.cpp main.cpp
)
tde_add_executable( ${target} AUTOMOC
SOURCES ${${target}_SRCS}
- LINK kdesktopsettings-static dmctl-static tdeio-shared Xext
- pthread ${GL_LIBRARIES} ${LIBTDELDAP_LIBRARIES}
+ LINK kdesktopsettings-static dmctl-static tdeio-shared Xext ${TDEHW_LIBRARIES}
+ ${CMAKE_THREAD_LIBS_INIT} ${GL_LIBRARIES}
"${LINKER_IMMEDIATE_BINDING_FLAGS}"
DESTINATION ${BIN_INSTALL_DIR}
)
diff --git a/kdesktop/lock/Makefile.am b/kdesktop/lock/Makefile.am
index c686e3ea9..4c2fb22a8 100644
--- a/kdesktop/lock/Makefile.am
+++ b/kdesktop/lock/Makefile.am
@@ -8,7 +8,7 @@ kdesktop_lock_LDADD = ../libkdesktopsettings.la ../../tdmlib/libdmctl.la $(LI
bin_PROGRAMS = kdesktop_lock
-kdesktop_lock_SOURCES = lockprocess.cc lockdlg.cc infodlg.cc querydlg.cc autologout.cc main.cc
+kdesktop_lock_SOURCES = lockprocess.cpp lockdlg.cpp infodlg.cpp querydlg.cpp autologout.cpp main.cpp
noinst_HEADERS = lockprocess.h lockdlg.h infodlg.h querydlg.h autologout.h main.h
diff --git a/kdesktop/lock/autologout.cc b/kdesktop/lock/autologout.cpp
index 6e05c439d..ee1d8e1db 100644
--- a/kdesktop/lock/autologout.cc
+++ b/kdesktop/lock/autologout.cpp
@@ -67,7 +67,7 @@ AutoLogout::AutoLogout(LockProcess *parent) : TQDialog(parent, "password dialog"
unlockDialogLayout->addWidget( frame );
frameLayout = new TQGridLayout(frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint());
- frameLayout->addMultiCellWidget(pixLabel, 0, 2, 0, 0, Qt::AlignCenter | Qt::AlignTop);
+ frameLayout->addMultiCellWidget(pixLabel, 0, 2, 0, 0, TQt::AlignCenter | TQt::AlignTop);
frameLayout->addWidget(greetLabel, 0, 1);
frameLayout->addWidget(mStatusLabel, 1, 1);
frameLayout->addWidget(infoLabel, 2, 1);
@@ -83,7 +83,7 @@ AutoLogout::AutoLogout(LockProcess *parent) : TQDialog(parent, "password dialog"
mCountdownTimerId = startTimer(1000/25);
- connect(tqApp, TQT_SIGNAL(activity()), TQT_SLOT(slotActivity()));
+ connect(tqApp, TQ_SIGNAL(activity()), TQ_SLOT(slotActivity()));
setFixedSize( sizeHint() );
}
@@ -119,7 +119,7 @@ void AutoLogout::slotActivity()
void AutoLogout::logout()
{
- TQT_TQOBJECT(this)->killTimers();
+ this->killTimers();
DCOPRef("ksmserver","ksmserver").send("logout", 0, 0, 0);
}
diff --git a/kdesktop/lock/autologout.h b/kdesktop/lock/autologout.h
index 89cbb880e..834f4fd0e 100644
--- a/kdesktop/lock/autologout.h
+++ b/kdesktop/lock/autologout.h
@@ -22,7 +22,7 @@ class TQProgressBar;
class AutoLogout : public TQDialog
{
- Q_OBJECT
+ TQ_OBJECT
public:
AutoLogout(LockProcess *parent);
diff --git a/kdesktop/lock/infodlg.cc b/kdesktop/lock/infodlg.cpp
index 3efaf060d..a37c92b8e 100644
--- a/kdesktop/lock/infodlg.cc
+++ b/kdesktop/lock/infodlg.cpp
@@ -14,7 +14,7 @@
#include <tdelocale.h>
#include <kpushbutton.h>
#include <kseparator.h>
-#include <kstandarddirs.h>
+#include <tdestandarddirs.h>
#include <tdeglobalsettings.h>
#include <tdeconfig.h>
#include <kiconloader.h>
@@ -97,7 +97,7 @@ InfoDlg::InfoDlg(LockProcess *parent)
layStatus->addWidget( mStatusLabel );
frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() );
- frameLayout->addMultiCellWidget( mpixLabel, 0, 2, 0, 0, Qt::AlignTop );
+ frameLayout->addMultiCellWidget( mpixLabel, 0, 2, 0, 0, TQt::AlignTop );
frameLayout->addLayout( layStatus, 1, 1 );
installEventFilter(this);
@@ -111,7 +111,7 @@ InfoDlg::~InfoDlg()
void InfoDlg::updateLabel(TQString &txt)
{
- mStatusLabel->setPaletteForegroundColor(Qt::black);
+ mStatusLabel->setPaletteForegroundColor(TQt::black);
mStatusLabel->setText("<b>" + txt + "</b>");
}
diff --git a/kdesktop/lock/infodlg.h b/kdesktop/lock/infodlg.h
index 3daf4d2ce..ec5569748 100644
--- a/kdesktop/lock/infodlg.h
+++ b/kdesktop/lock/infodlg.h
@@ -26,7 +26,7 @@ class TQListView;
//
class InfoDlg : public TQDialog
{
- Q_OBJECT
+ TQ_OBJECT
public:
InfoDlg(LockProcess *parent);
diff --git a/kdesktop/lock/lockdlg.cc b/kdesktop/lock/lockdlg.cpp
index d4b456a9e..c5d3d1aea 100644
--- a/kdesktop/lock/lockdlg.cc
+++ b/kdesktop/lock/lockdlg.cpp
@@ -20,7 +20,8 @@
#include <tdelocale.h>
#include <kpushbutton.h>
#include <kseparator.h>
-#include <kstandarddirs.h>
+#include <tdestandarddirs.h>
+#include <tdesimpleconfig.h>
#include <tdeglobalsettings.h>
#include <tdeconfig.h>
#include <kiconloader.h>
@@ -43,7 +44,10 @@
#include <tqlistview.h>
#include <tqheader.h>
#include <tqcheckbox.h>
+#ifdef WITH_TDEHWLIB
#include <tqfile.h>
+#include <tdecryptographiccarddevice.h>
+#endif
#include <ctype.h>
#include <unistd.h>
@@ -58,9 +62,6 @@
#include <X11/Xatom.h>
#include <fixx11h.h>
-#ifdef HAVE_KRB5
-#include <libtdeldap.h>
-#endif
#ifndef AF_LOCAL
# define AF_LOCAL AF_UNIX
@@ -101,6 +102,7 @@ PasswordDlg::PasswordDlg(LockProcess *parent, GreeterPluginHandle *plugin, TQDat
mPlugin( plugin ),
mCapsLocked(-1),
mUnlockingFailed(false),
+ validUserCardInserted(false),
showInfoMessages(true),
mCardLoginInProgress(false)
{
@@ -198,7 +200,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin)
if (!m_lockStartDT.isNull()) {
frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() );
- frameLayout->addMultiCellWidget( theader, 0, 0, 0, 2, Qt::AlignTop );
+ frameLayout->addMultiCellWidget( theader, 0, 0, 0, 2, TQt::AlignTop );
frameLayout->addWidget( greetLabel, 1, 1 );
frameLayout->addWidget( lockDTLabel, 2, 1 );
frameLayout->addItem( greet->getLayoutItem(), 3, 1 );
@@ -208,7 +210,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin)
}
else {
frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() );
- frameLayout->addMultiCellWidget( theader, 0, 0, 0, 2, Qt::AlignTop );
+ frameLayout->addMultiCellWidget( theader, 0, 0, 0, 2, TQt::AlignTop );
frameLayout->addWidget( greetLabel, 1, 1 );
frameLayout->addItem( greet->getLayoutItem(), 2, 1 );
frameLayout->addLayout( layStatus, 3, 1 );
@@ -218,7 +220,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin)
}
else {
frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() );
- frameLayout->addMultiCellWidget( pixLabel, 0, 2, 0, 0, Qt::AlignTop );
+ frameLayout->addMultiCellWidget( pixLabel, 0, 2, 0, 0, TQt::AlignTop );
frameLayout->addWidget( greetLabel, 0, 1 );
frameLayout->addItem( greet->getLayoutItem(), 1, 1 );
frameLayout->addLayout( layStatus, 2, 1 );
@@ -235,14 +237,14 @@ void PasswordDlg::init(GreeterPluginHandle *plugin)
}
setTabOrder( mNewSessButton, mLayoutButton );
- connect(mLayoutButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(layoutClicked()));
+ connect(mLayoutButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(layoutClicked()));
if (show_cancel_button) {
- connect(cancel, TQT_SIGNAL(clicked()), TQT_SLOT(reject()));
+ connect(cancel, TQ_SIGNAL(clicked()), TQ_SLOT(reject()));
}
- connect(ok, TQT_SIGNAL(clicked()), TQT_SLOT(slotOK()));
- connect(mNewSessButton, TQT_SIGNAL(clicked()), TQT_SLOT(slotSwitchUser()));
+ connect(ok, TQ_SIGNAL(clicked()), TQ_SLOT(slotOK()));
+ connect(mNewSessButton, TQ_SIGNAL(clicked()), TQ_SLOT(slotSwitchUser()));
- if (!DM().isSwitchable() || !kapp->authorize("switch_user")) {
+ if (!DM().isSwitchable() || !tdeApp->authorize("switch_user")) {
mNewSessButton->hide();
}
@@ -251,7 +253,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin)
mFailedTimerId = 0;
mTimeoutTimerId = startTimer(PASSDLG_HIDE_TIMEOUT);
- connect(tqApp, TQT_SIGNAL(activity()), TQT_SLOT(slotActivity()) );
+ connect(tqApp, TQ_SIGNAL(activity()), TQ_SLOT(slotActivity()) );
greet->setInfoMessageDisplay(showInfoMessages);
greet->start();
@@ -327,12 +329,12 @@ void PasswordDlg::setLayoutText( const TQString &txt )
void PasswordDlg::updateLabel()
{
if (mUnlockingFailed) {
- mStatusLabel->setPaletteForegroundColor(Qt::black);
+ mStatusLabel->setPaletteForegroundColor(TQt::black);
mStatusLabel->setText(i18n("<b>Unlocking failed</b>"));
// mStatusLabel->show();
}
else if (mCapsLocked) {
- mStatusLabel->setPaletteForegroundColor(Qt::red);
+ mStatusLabel->setPaletteForegroundColor(TQt::red);
mStatusLabel->setText(i18n("<b>Warning: Caps Lock on</b>"));
// mStatusLabel->show();
}
@@ -479,6 +481,7 @@ void PasswordDlg::reapVerify()
switch (WEXITSTATUS(status)) {
case AuthOk:
{
+#ifdef WITH_TDEHWLIB
KUser userinfo;
TQString fileName = userinfo.homeDir() + "/.tde_card_login_state";
TQFile flagFile(fileName);
@@ -493,6 +496,7 @@ void PasswordDlg::reapVerify()
// Card was not used to log in
flagFile.remove();
}
+#endif
// Signal success
greet->succeeded();
@@ -555,6 +559,7 @@ void PasswordDlg::handleVerify()
setFixedSize( sizeHint().width(), sizeHint().height() + 1 );
setFixedSize( sizeHint() );
+#ifdef WITH_TDEHWLIB
// Check if cryptographic card login is being used
if (mCardLoginInProgress) {
// Attempt authentication if configured
@@ -563,11 +568,12 @@ void PasswordDlg::handleVerify()
TQString autoPIN = cdevice->autoPIN();
if (autoPIN != TQString::null) {
greet->setPassword(autoPIN);
- TQTimer::singleShot(0, this, SLOT(slotOK()));
+ TQTimer::singleShot(0, this, TQ_SLOT(slotOK()));
}
}
mCardLoginInProgress = false;
}
+#endif
}
else {
greet->textPrompt( arr, false, false );
@@ -706,12 +712,12 @@ void PasswordDlg::gplugMsgBox( TQMessageBox::Icon type, const TQString &text )
KPushButton *button = new KPushButton( KStdGuiItem::ok(), winFrame );
button->setDefault( true );
button->setSizePolicy( TQSizePolicy( TQSizePolicy::Preferred, TQSizePolicy::Preferred ) );
- connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( accept() ) );
+ connect( button, TQ_SIGNAL( clicked() ), TQ_SLOT( accept() ) );
TQGridLayout *grid = new TQGridLayout( winFrame, 2, 2, 10 );
- grid->addWidget( label1, 0, 0, Qt::AlignCenter );
- grid->addWidget( label2, 0, 1, Qt::AlignCenter );
- grid->addMultiCellWidget( button, 1,1, 0,1, Qt::AlignCenter );
+ grid->addWidget( label1, 0, 0, TQt::AlignCenter );
+ grid->addWidget( label2, 0, 1, TQt::AlignCenter );
+ grid->addMultiCellWidget( button, 1,1, 0,1, TQt::AlignCenter );
static_cast< LockProcess* >(parent())->execDialog( &dialog );
}
@@ -777,16 +783,16 @@ void PasswordDlg::slotStartNewSession()
TQLabel *label2 = new TQLabel( qt_text, winFrame );
KPushButton *okbutton = new KPushButton( KGuiItem(i18n("&Start New Session"), "fork"), winFrame );
okbutton->setDefault( true );
- connect( okbutton, TQT_SIGNAL( clicked() ), dialog, TQT_SLOT( accept() ) );
+ connect( okbutton, TQ_SIGNAL( clicked() ), dialog, TQ_SLOT( accept() ) );
KPushButton *cbutton = new KPushButton( KStdGuiItem::cancel(), winFrame );
- connect( cbutton, TQT_SIGNAL( clicked() ), dialog, TQT_SLOT( reject() ) );
+ connect( cbutton, TQ_SIGNAL( clicked() ), dialog, TQ_SLOT( reject() ) );
TQBoxLayout *mbox = new TQVBoxLayout( winFrame, KDialog::marginHint(), KDialog::spacingHint() );
TQGridLayout *grid = new TQGridLayout( mbox, 2, 2, 2 * KDialog::spacingHint() );
grid->setMargin( KDialog::marginHint() );
- grid->addWidget( label1, 0, 0, Qt::AlignCenter );
- grid->addWidget( label2, 0, 1, Qt::AlignCenter );
+ grid->addWidget( label1, 0, 0, TQt::AlignCenter );
+ grid->addWidget( label2, 0, 1, TQt::AlignCenter );
TQCheckBox *cb = new TQCheckBox( i18n("&Do not ask again"), winFrame );
grid->addMultiCellWidget( cb, 1,1, 0,1 );
@@ -895,8 +901,8 @@ void PasswordDlg::slotSwitchUser()
SessList sess;
if (dm.localSessions( sess )) {
lv = new TQListView( winFrame );
- connect( lv, TQT_SIGNAL(doubleClicked(TQListViewItem *, const TQPoint&, int)), TQT_SLOT(slotSessionActivated()) );
- connect( lv, TQT_SIGNAL(doubleClicked(TQListViewItem *, const TQPoint&, int)), &dialog, TQT_SLOT(accept()) );
+ connect( lv, TQ_SIGNAL(doubleClicked(TQListViewItem *, const TQPoint&, int)), TQ_SLOT(slotSessionActivated()) );
+ connect( lv, TQ_SIGNAL(doubleClicked(TQListViewItem *, const TQPoint&, int)), &dialog, TQ_SLOT(accept()) );
lv->setAllColumnsShowFocus( true );
lv->addColumn( i18n("Session") );
lv->addColumn( i18n("Location") );
@@ -927,16 +933,16 @@ void PasswordDlg::slotSwitchUser()
vbox1->addWidget( lv );
btn = new KPushButton( KGuiItem(i18n("session", "&Activate"), "fork"), winFrame );
- connect( btn, TQT_SIGNAL(clicked()), TQT_SLOT(slotSessionActivated()) );
- connect( btn, TQT_SIGNAL(clicked()), &dialog, TQT_SLOT(accept()) );
+ connect( btn, TQ_SIGNAL(clicked()), TQ_SLOT(slotSessionActivated()) );
+ connect( btn, TQ_SIGNAL(clicked()), &dialog, TQ_SLOT(accept()) );
vbox2->addWidget( btn );
vbox2->addStretch( 2 );
}
- if (kapp->authorize("start_new_session") && (p = dm.numReserve()) >= 0) {
+ if (tdeApp->authorize("start_new_session") && (p = dm.numReserve()) >= 0) {
btn = new KPushButton( KGuiItem(i18n("Start &New Session"), "fork"), winFrame );
- connect( btn, TQT_SIGNAL(clicked()), TQT_SLOT(slotStartNewSession()) );
- connect( btn, TQT_SIGNAL(clicked()), &dialog, TQT_SLOT(accept()) );
+ connect( btn, TQ_SIGNAL(clicked()), TQ_SLOT(slotStartNewSession()) );
+ connect( btn, TQ_SIGNAL(clicked()), &dialog, TQ_SLOT(accept()) );
if (!p)
btn->setEnabled( false );
vbox2->addWidget( btn );
@@ -944,7 +950,7 @@ void PasswordDlg::slotSwitchUser()
}
btn = new KPushButton( KStdGuiItem::cancel(), winFrame );
- connect( btn, TQT_SIGNAL(clicked()), &dialog, TQT_SLOT(reject()) );
+ connect( btn, TQ_SIGNAL(clicked()), &dialog, TQ_SLOT(reject()) );
vbox2->addWidget( btn );
dialog.setFixedSize( dialog.sizeHint() );
@@ -974,16 +980,22 @@ void PasswordDlg::capsLocked()
}
void PasswordDlg::attemptCardLogin() {
-#ifdef HAVE_KRB5
- // Make sure card logins are enabled before attempting one
- if (!LDAPManager::pkcsLoginEnabled()) {
- return;
- }
-#else
+#ifdef WITH_TDEHWLIB
+#ifndef HAVE_KRB5
// Don't enable card-based logins if Kerberos integration was disabled
return;
#endif
+ // Make sure card logins are enabled before attempting one
+ TDESimpleConfig *systemconfig = new TDESimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/ldap/ldapconfigrc" ));
+ systemconfig->setGroup(NULL);
+ bool enabled = systemconfig->readBoolEntry("EnablePKCS11Login", false);
+ delete systemconfig;
+ if (!enabled)
+ {
+ return;
+ }
+
if (mCardLoginInProgress) {
return;
}
@@ -1003,10 +1015,12 @@ void PasswordDlg::attemptCardLogin() {
// Bypass initial password prompt
greet->start();
greet->setPassword("");
- TQTimer::singleShot(0, this, SLOT(slotOK()));
+ TQTimer::singleShot(0, this, TQ_SLOT(slotOK()));
+#endif
}
void PasswordDlg::resetCardLogin() {
+#ifdef WITH_TDEHWLIB
validUserCardInserted = false;
greet->abort();
greet->clear();
@@ -1019,9 +1033,10 @@ void PasswordDlg::resetCardLogin() {
setFixedSize(sizeHint());
// Restore information message display settings
- greet->setInfoMessageDisplay(showInfoMessages);
+ greet->setInfoMessageDisplay(showInfoMessages);
mCardLoginInProgress = false;
+#endif
}
#include "lockdlg.moc"
diff --git a/kdesktop/lock/lockdlg.h b/kdesktop/lock/lockdlg.h
index 571d825fa..3f8500a42 100644
--- a/kdesktop/lock/lockdlg.h
+++ b/kdesktop/lock/lockdlg.h
@@ -33,7 +33,7 @@ class TQListView;
//
class PasswordDlg : public TQDialog, public KGreeterPluginHandler
{
- Q_OBJECT
+ TQ_OBJECT
public:
PasswordDlg(LockProcess *parent, GreeterPluginHandle *plugin);
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cpp
index fdde3fc9e..2ad89f5ab 100644
--- a/kdesktop/lock/lockprocess.cc
+++ b/kdesktop/lock/lockprocess.cpp
@@ -17,6 +17,14 @@
//some image will be corrupted).
#include <config.h>
+#include <tdeglobal.h>
+
+#ifdef WITH_TDEHWLIB
+#include <ksslcertificate.h>
+#include <kuser.h>
+#include <tdehardwaredevices.h>
+#include <tdecryptographiccarddevice.h>
+#endif
#include "lockprocess.h"
#include "lockdlg.h"
@@ -30,11 +38,10 @@
#include <dmctl.h>
#include <dcopref.h>
-#include <kstandarddirs.h>
+#include <tdestandarddirs.h>
#include <tdeapplication.h>
#include <kservicegroup.h>
#include <kdebug.h>
-#include <kuser.h>
#include <tdemessagebox.h>
#include <tdeglobalsettings.h>
#include <tdelocale.h>
@@ -78,7 +85,7 @@
#include <sys/types.h>
#include <fcntl.h>
-#include <kcrash.h>
+#include <tdecrash.h>
#include <pthread.h>
@@ -144,14 +151,6 @@ Atom kde_wm_system_modal_notification = 0;
Atom kde_wm_transparent_to_desktop = 0;
Atom kde_wm_transparent_to_black = 0;
-static void segv_handler(int)
-{
- kdError(KDESKTOP_DEBUG_ID) << "A fatal exception was encountered."
- << " Trapping and ignoring it so as not to compromise desktop security..."
- << kdBacktrace() << endl;
- sleep(1);
-}
-
extern Atom tqt_wm_state;
extern bool trinity_desktop_lock_use_system_modal_dialogs;
extern bool trinity_desktop_lock_delay_screensaver_start;
@@ -159,24 +158,32 @@ extern bool trinity_desktop_lock_use_sak;
extern bool trinity_desktop_lock_hide_active_windows;
extern bool trinity_desktop_lock_hide_cancel_button;
extern bool trinity_desktop_lock_forced;
-
-extern LockProcess* trinity_desktop_lock_process;
+extern bool trinity_desktop_lock_failed_grab;
extern bool argb_visual;
extern pid_t kdesktop_pid;
extern TQXLibWindowList trinity_desktop_lock_hidden_window_list;
-bool trinity_desktop_lock_autohide_lockdlg = TRUE;
+bool trinity_desktop_lock_autohide_lockdlg = true;
+
+static void segv_handler(int)
+{
+ kdError(KDESKTOP_DEBUG_ID) << "A fatal exception was encountered."
+ << " Trapping and ignoring it so as not to compromise desktop security..."
+ << kdBacktrace() << endl;
+
+ sleep(1);
+}
#define ENABLE_CONTINUOUS_LOCKDLG_DISPLAY \
-if (!mForceContinualLockDisplayTimer->isActive()) mForceContinualLockDisplayTimer->start(100, FALSE); \
-trinity_desktop_lock_autohide_lockdlg = FALSE; \
+if (!mForceContinualLockDisplayTimer->isActive()) mForceContinualLockDisplayTimer->start(100, false); \
+trinity_desktop_lock_autohide_lockdlg = false; \
mHackDelayStartupTimer->stop();
#define DISABLE_CONTINUOUS_LOCKDLG_DISPLAY \
mForceContinualLockDisplayTimer->stop(); \
-trinity_desktop_lock_autohide_lockdlg = TRUE; \
+trinity_desktop_lock_autohide_lockdlg = true; \
mHackDelayStartupTimer->stop();
//===========================================================================
@@ -227,7 +234,9 @@ LockProcess::LockProcess()
m_notifyReadyRequested(false),
m_loginCardDevice(NULL),
m_maskWidget(NULL),
- m_saverRootWindow(0)
+ m_saverRootWindow(0),
+ mControlPipeHandler(nullptr),
+ mControlPipeHandlerThread(nullptr)
{
#ifdef KEEP_MOUSE_UNGRABBED
setNFlags(WX11DisableMove|WX11DisableClose|WX11DisableShade|WX11DisableMinimize|WX11DisableMaximize);
@@ -240,7 +249,7 @@ LockProcess::LockProcess()
kde_wm_transparent_to_desktop = XInternAtom(tqt_xdisplay(), "_TDE_TRANSPARENT_TO_DESKTOP", False);
kde_wm_transparent_to_black = XInternAtom(tqt_xdisplay(), "_TDE_TRANSPARENT_TO_BLACK", False);
- kapp->installX11EventFilter(this);
+ tdeApp->installX11EventFilter(this);
mForceContinualLockDisplayTimer = new TQTimer( this );
mHackDelayStartupTimer = new TQTimer( this );
@@ -249,7 +258,7 @@ LockProcess::LockProcess()
if (!argb_visual) {
// Try to get the root pixmap
if (!m_rootPixmap) m_rootPixmap = new KRootPixmap(this);
- connect(m_rootPixmap, TQT_SIGNAL(backgroundUpdated(const TQPixmap &)), this, TQT_SLOT(slotPaintBackground(const TQPixmap &)));
+ connect(m_rootPixmap, TQ_SIGNAL(backgroundUpdated(const TQPixmap &)), this, TQ_SLOT(slotPaintBackground(const TQPixmap &)));
m_rootPixmap->setCustomPainting(true);
m_rootPixmap->start();
}
@@ -291,18 +300,20 @@ LockProcess::LockProcess()
}
}
+#ifdef WITH_TDEHWLIB
// Initialize SmartCard readers
TDEGenericDevice *hwdevice;
TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices();
TDEGenericHardwareList cardReaderList = hwdevices->listByDeviceClass(TDEGenericDeviceType::CryptographicCard);
for (hwdevice = cardReaderList.first(); hwdevice; hwdevice = cardReaderList.next()) {
TDECryptographicCardDevice* cdevice = static_cast<TDECryptographicCardDevice*>(hwdevice);
- // connect(cdevice, SIGNAL(pinRequested(TQString,TDECryptographicCardDevice*)), this, SLOT(cryptographicCardPinRequested(TQString,TDECryptographicCardDevice*)));
- connect(cdevice, TQT_SIGNAL(certificateListAvailable(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardInserted(TDECryptographicCardDevice*)));
- connect(cdevice, TQT_SIGNAL(cardRemoved(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardRemoved(TDECryptographicCardDevice*)));
+ // connect(cdevice, TQ_SIGNAL(pinRequested(TQString,TDECryptographicCardDevice*)), this, TQ_SLOT(cryptographicCardPinRequested(TQString,TDECryptographicCardDevice*)));
+ connect(cdevice, TQ_SIGNAL(certificateListAvailable(TDECryptographicCardDevice*)), this, TQ_SLOT(cryptographicCardInserted(TDECryptographicCardDevice*)));
+ connect(cdevice, TQ_SIGNAL(cardRemoved(TDECryptographicCardDevice*)), this, TQ_SLOT(cryptographicCardRemoved(TDECryptographicCardDevice*)));
cdevice->enableCardMonitoring(true);
// cdevice->enablePINEntryCallbacks(true);
}
+#endif
#ifdef KEEP_MOUSE_UNGRABBED
setEnabled(false);
@@ -322,8 +333,6 @@ LockProcess::~LockProcess()
mControlPipeHandler->terminateThread();
mControlPipeHandlerThread->wait();
delete mControlPipeHandler;
-// delete mControlPipeHandlerThread;
-
if (resizeTimer != NULL) {
resizeTimer->stop();
delete resizeTimer;
@@ -379,12 +388,12 @@ void LockProcess::init(bool child, bool useBlankOnly)
generateBackingImages();
// Connect all signals
- connect( mForceContinualLockDisplayTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(displayLockDialogIfNeeded()) );
- connect( mHackDelayStartupTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(closeDialogAndStartHack()) );
- connect( mEnsureVRootWindowSecurityTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(repaintRootWindowIfNeeded()) );
- connect(tqApp, TQT_SIGNAL(mouseInteraction(XEvent *)), TQT_SLOT(slotMouseActivity(XEvent *)));
- connect(&mHackProc, TQT_SIGNAL(processExited(TDEProcess *)), TQT_SLOT(hackExited(TDEProcess *)));
- connect(&mSuspendTimer, TQT_SIGNAL(timeout()), TQT_SLOT(suspend()));
+ connect( mForceContinualLockDisplayTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(displayLockDialogIfNeeded()) );
+ connect( mHackDelayStartupTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(closeDialogAndStartHack()) );
+ connect( mEnsureVRootWindowSecurityTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(repaintRootWindowIfNeeded()) );
+ connect(tqApp, TQ_SIGNAL(mouseInteraction(XEvent *)), TQ_SLOT(slotMouseActivity(XEvent *)));
+ connect(&mHackProc, TQ_SIGNAL(processExited(TDEProcess *)), TQ_SLOT(hackExited(TDEProcess *)));
+ connect(&mSuspendTimer, TQ_SIGNAL(timeout()), TQ_SLOT(suspend()));
#ifdef HAVE_DPMS
//if the user decided that the screensaver should run independent from
@@ -394,7 +403,7 @@ void LockProcess::init(bool child, bool useBlankOnly)
CARD16 state;
if (DPMSInfo(tqt_xdisplay(), &state, &on)) {
if (on) {
- connect(&mCheckDPMS, TQT_SIGNAL(timeout()), TQT_SLOT(checkDPMSActive()));
+ connect(&mCheckDPMS, TQ_SIGNAL(timeout()), TQ_SLOT(checkDPMSActive()));
// we can save CPU if we stop it as quickly as possible
// but we waste CPU if we check too often -> so take 10s
mCheckDPMS.start(10000);
@@ -403,9 +412,7 @@ void LockProcess::init(bool child, bool useBlankOnly)
}
#endif
-#if (TQT_VERSION-0 >= 0x030200) // XRANDR support
- connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized()));
-#endif
+ connect( tdeApp->desktop(), TQ_SIGNAL( resized( int )), TQ_SLOT( desktopResized()));
if (!trinity_desktop_lock_use_system_modal_dialogs) {
setWFlags((WFlags)WX11BypassWM);
@@ -426,21 +433,25 @@ void LockProcess::init(bool child, bool useBlankOnly)
mControlPipeHandler = new ControlPipeHandlerObject();
mControlPipeHandler->mParent = this;
mControlPipeHandler->moveToThread(mControlPipeHandlerThread);
- TQObject::connect(mControlPipeHandler, SIGNAL(processCommand(TQString)), this, SLOT(processInputPipeCommand(TQString)));
- TQTimer::singleShot(0, mControlPipeHandler, SLOT(run()));
+ TQObject::connect(mControlPipeHandler, TQ_SIGNAL(processCommand(TQString)), this, TQ_SLOT(processInputPipeCommand(TQString)));
+ TQTimer::singleShot(0, mControlPipeHandler, TQ_SLOT(run()));
mControlPipeHandlerThread->start();
+ // If the lock process terminates before 'mControlPipeHandler::run()' has been called, the
+ // 'mControlPipeHandlerThread' thread would not terminate and the lock process would have a
+ // dirty exit, potentially leaving 'kdesktop' in a dirty state that prevents the lock from
+ // working correctly till 'kdesktop' is killed and restarted. By forcing a call to 'processEvents()'
+ // we make sure to handle pending timer events and execute the required call
+ tdeApp->processEvents();
}
static int signal_pipe[2];
static void sigterm_handler(int)
{
- if ((!trinity_desktop_lock_process) || (!trinity_desktop_lock_process->inSecureDialog())) {
- // Exit uncleanly
- char tmp = 'U';
- if (::write( signal_pipe[1], &tmp, 1) == -1) {
- // Error handler to shut up gcc warnings
- }
+ // Exit uncleanly
+ char tmp = 'U';
+ if (::write( signal_pipe[1], &tmp, 1) == -1) {
+ // Error handler to shut up gcc warnings
}
}
@@ -454,7 +465,7 @@ static void sighup_handler(int)
bool LockProcess::closeCurrentWindow()
{
- mClosingWindows = TRUE;
+ mClosingWindows = true;
if (currentDialog != NULL) {
mForceReject = true;
if (dynamic_cast<SAKDlg*>(currentDialog)) {
@@ -469,12 +480,12 @@ bool LockProcess::closeCurrentWindow()
}
if( mDialogs.isEmpty() ) {
- mClosingWindows = FALSE;
+ mClosingWindows = false;
mForceReject = false;
return false;
}
else {
- mClosingWindows = TRUE;
+ mClosingWindows = true;
return true;
}
}
@@ -524,8 +535,8 @@ void LockProcess::setupSignals()
if (pipe(signal_pipe) == -1) {
// Error handler to shut up gcc warnings
}
- TQSocketNotifier* notif = new TQSocketNotifier(signal_pipe[0], TQSocketNotifier::Read, TQT_TQOBJECT(this) );
- connect( notif, TQT_SIGNAL(activated(int)), TQT_SLOT(signalPipeSignal()));
+ TQSocketNotifier* notif = new TQSocketNotifier(signal_pipe[0], TQSocketNotifier::Read, this );
+ connect( notif, TQ_SIGNAL(activated(int)), TQ_SLOT(signalPipeSignal()));
}
@@ -543,9 +554,11 @@ void LockProcess::signalPipeSignal()
startLock();
}
else if( tmp == 'U' ) {
- // Exit uncleanly
- quitSaver();
- exit(1);
+ if (!inSecureDialog()) {
+ // Exit uncleanly
+ quitSaver();
+ exit(1);
+ }
}
}
@@ -557,7 +570,7 @@ bool LockProcess::lock()
m_startupStatusDialog->setStatusMessage(i18n("Securing desktop session").append("..."));
m_startupStatusDialog->show();
m_startupStatusDialog->setActiveWindow();
- tqApp->processEvents();
+ tdeApp->processEvents();
#endif
if (startSaver(true)) {
@@ -568,7 +581,7 @@ bool LockProcess::lock()
// selecting "lock screen", that looks really untidy.
mBusy = true;
if (startLock()) {
- TQTimer::singleShot(1000, this, TQT_SLOT(slotDeadTimePassed()));
+ TQTimer::singleShot(1000, this, TQ_SLOT(slotDeadTimePassed()));
return true;
}
stopSaver();
@@ -589,7 +602,7 @@ bool LockProcess::defaultSave()
mOverrideHackStartupEnabled = true;
if (startSaver()) {
if (mLockGrace >= 0) {
- TQTimer::singleShot(mLockGrace, this, TQT_SLOT(startLock()));
+ TQTimer::singleShot(mLockGrace, this, TQ_SLOT(startLock()));
}
return true;
}
@@ -609,18 +622,18 @@ void LockProcess::quitSaver()
{
DISABLE_CONTINUOUS_LOCKDLG_DISPLAY
if (closeCurrentWindow()) {
- TQTimer::singleShot( 0, this, SLOT(quitSaver()) );
+ TQTimer::singleShot( 0, this, TQ_SLOT(quitSaver()) );
return;
}
stopSaver();
- kapp->quit();
+ tdeApp->quit();
}
//---------------------------------------------------------------------------
void LockProcess::startSecureDialog()
{
if ((backingPixmap.isNull()) && (mBackingStartupDelayTimer < 100)) {
- TQTimer::singleShot(10, this, TQT_SLOT(startSecureDialog()));
+ TQTimer::singleShot(10, this, TQ_SLOT(startSecureDialog()));
mBackingStartupDelayTimer++;
return;
}
@@ -641,7 +654,7 @@ void LockProcess::startSecureDialog()
mInSecureDialog = false;
if (ret == 0) {
mClosingWindows = 1;
- kapp->quit();
+ tdeApp->quit();
}
if (ret == 1) {
// In case of a forced lock we don't react to events during
@@ -652,18 +665,18 @@ void LockProcess::startSecureDialog()
mBusy = true;
trinity_desktop_lock_forced = true;
// Make sure the cursor is not showing busy status
- setCursor( tqarrowCursor );
+ setCursor( TQt::arrowCursor );
if (startLock())
{
if (trinity_desktop_lock_delay_screensaver_start) {
mBusy = false;
}
else {
- TQTimer::singleShot(1000, this, TQT_SLOT(slotDeadTimePassed()));
+ TQTimer::singleShot(1000, this, TQ_SLOT(slotDeadTimePassed()));
}
if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced && trinity_desktop_lock_use_system_modal_dialogs) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
- if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
}
else {
if (mHackStartupEnabled == true) {
@@ -672,7 +685,7 @@ void LockProcess::startSecureDialog()
else {
if (trinity_desktop_lock_use_system_modal_dialogs == true) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
- if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
}
else {
startHack();
@@ -690,18 +703,18 @@ void LockProcess::startSecureDialog()
if (system("ksysguard &") == -1) {
// Error handler to shut up gcc warnings
}
- kapp->quit();
+ tdeApp->quit();
}
if (ret == 3) {
mClosingWindows = 1;
DCOPRef("ksmserver","ksmserver").send("logout", (int)TDEApplication::ShutdownConfirmYes, (int)TDEApplication::ShutdownTypeNone, (int)TDEApplication::ShutdownModeInteractive);
- kapp->quit();
+ tdeApp->quit();
}
// FIXME
// Handle remaining case (switch user)
if (forcecontdisp) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
- if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
}
stopSaver();
}
@@ -713,13 +726,13 @@ bool LockProcess::runSecureDialog()
m_startupStatusDialog->setStatusMessage(i18n("Securing desktop session").append("..."));
m_startupStatusDialog->show();
m_startupStatusDialog->setActiveWindow();
- tqApp->processEvents();
+ tdeApp->processEvents();
#endif
mInSecureDialog = true;
if (startSaver()) {
mBackingStartupDelayTimer = 0;
- TQTimer::singleShot(0, this, TQT_SLOT(startSecureDialog()));
+ TQTimer::singleShot(0, this, TQ_SLOT(startSecureDialog()));
return true;
}
else {
@@ -789,9 +802,9 @@ void LockProcess::readSaver()
if (!mSaver.isEmpty()) {
TQString file = locate("scrsav", mSaver);
- bool opengl = kapp->authorize("opengl_screensavers");
- bool manipulatescreen = kapp->authorize("manipulatescreen_screensavers");
- KDesktopFile config(file, true);
+ bool opengl = tdeApp->authorize("opengl_screensavers");
+ bool manipulatescreen = tdeApp->authorize("manipulatescreen_screensavers");
+ TDEDesktopFile config(file, true);
if (config.readEntry("X-TDE-Type").utf8() != 0) {
TQString saverType = config.readEntry("X-TDE-Type").utf8();
TQStringList saverTypes = TQStringList::split(";", saverType);
@@ -1031,7 +1044,7 @@ void LockProcess::desktopResized()
}
else {
mEnsureScreenHiddenTimer = new TQTimer( this );
- connect( mEnsureScreenHiddenTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotForcePaintBackground()) );
+ connect( mEnsureScreenHiddenTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(slotForcePaintBackground()) );
}
mEnsureScreenHiddenTimer->start(DESKTOP_WALLPAPER_OBTAIN_TIMEOUT_MS, true);
}
@@ -1054,9 +1067,9 @@ void LockProcess::desktopResized()
// being displayed, so we finish the hack restarting/display prettying operations in a separate timed slot
if (resizeTimer == NULL) {
resizeTimer = new TQTimer( this );
- connect( resizeTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(doDesktopResizeFinish()) );
+ connect( resizeTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(doDesktopResizeFinish()) );
}
- resizeTimer->start( 100, TRUE ); // 100 millisecond single shot timer; should allow display switching operations to finish before hack is started
+ resizeTimer->start( 100, true ); // 100 millisecond single shot timer; should allow display switching operations to finish before hack is started
}
void LockProcess::doDesktopResizeFinish()
@@ -1066,7 +1079,7 @@ void LockProcess::doDesktopResizeFinish()
}
mDialogControlLock = true;
if (closeCurrentWindow()) {
- TQTimer::singleShot( 0, this, SLOT(doDesktopResizeFinish()) );
+ TQTimer::singleShot( 0, this, TQ_SLOT(doDesktopResizeFinish()) );
mDialogControlLock = false;
return;
}
@@ -1075,7 +1088,7 @@ void LockProcess::doDesktopResizeFinish()
// Restart the hack as the window size is now different
if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_use_system_modal_dialogs) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
- if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
}
else {
if (mHackStartupEnabled == true) {
@@ -1084,7 +1097,7 @@ void LockProcess::doDesktopResizeFinish()
else {
if (trinity_desktop_lock_use_system_modal_dialogs == true) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
- if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
}
else {
startHack();
@@ -1234,10 +1247,10 @@ bool LockProcess::grabMouse()
{
HANDLE cursorHandle;
if (mHackActive) {
- cursorHandle = TQCursor(tqblankCursor).handle();
+ cursorHandle = TQCursor(TQt::blankCursor).handle();
}
else {
- cursorHandle = TQCursor(tqbusyCursor).handle();
+ cursorHandle = TQCursor(TQt::busyCursor).handle();
}
int rv = XGrabPointer( tqt_xdisplay(), TQApplication::desktop()->winId(),
True, GRABEVENTS, GrabModeAsync, GrabModeAsync, None,
@@ -1334,6 +1347,7 @@ bool LockProcess::startSaver(bool notify_ready)
if (!child_saver && !grabInput())
{
kdWarning(KDESKTOP_DEBUG_ID) << "LockProcess::startSaver() grabInput() failed!!!!" << endl;
+ trinity_desktop_lock_failed_grab = true;
return false;
}
mBusy = false;
@@ -1344,8 +1358,8 @@ bool LockProcess::startSaver(bool notify_ready)
saveVRoot();
if (mParent) {
- TQSocketNotifier *notifier = new TQSocketNotifier(mParent, TQSocketNotifier::Read, TQT_TQOBJECT(this), "notifier");
- connect(notifier, TQT_SIGNAL( activated (int)), TQT_SLOT( quitSaver()));
+ TQSocketNotifier *notifier = new TQSocketNotifier(mParent, TQSocketNotifier::Read, this, "notifier");
+ connect(notifier, TQ_SIGNAL( activated (int)), TQ_SLOT( quitSaver()));
}
createSaverWindow();
move(0, 0);
@@ -1361,7 +1375,8 @@ bool LockProcess::startSaver(bool notify_ready)
slotPaintBackground(rootWinSnapShot);
}
- if (((!(trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced)) && (!mInSecureDialog)) && (mHackStartupEnabled || mOverrideHackStartupEnabled)) {
+ if (!(trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced) && !mInSecureDialog &&
+ (mHackStartupEnabled || mOverrideHackStartupEnabled)) {
if (argb_visual) {
setTransparentBackgroundARGB();
}
@@ -1388,10 +1403,10 @@ bool LockProcess::startSaver(bool notify_ready)
}
}
- if (mInSecureDialog == FALSE) {
+ if (!mInSecureDialog) {
if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced && trinity_desktop_lock_use_system_modal_dialogs) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
- if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
}
else {
if (mHackStartupEnabled || mOverrideHackStartupEnabled) {
@@ -1401,7 +1416,7 @@ bool LockProcess::startSaver(bool notify_ready)
else {
if (trinity_desktop_lock_use_system_modal_dialogs == true) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
- if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
}
else {
startHack();
@@ -1520,7 +1535,7 @@ void LockProcess::closeDialogAndStartHack()
// Make sure saver will attempt to start again after DPMS wakeup
// This is related to Bug 1475
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
- if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
// Should not start saver here, because the DPMS check method below would turn it right back off!
// This is related to Bug 1475
return;
@@ -1533,7 +1548,7 @@ void LockProcess::closeDialogAndStartHack()
DISABLE_CONTINUOUS_LOCKDLG_DISPLAY
mSuspended = true;
if (closeCurrentWindow()) {
- TQTimer::singleShot( 0, this, SLOT(closeDialogAndStartHack()) );
+ TQTimer::singleShot( 0, this, TQ_SLOT(closeDialogAndStartHack()) );
}
else {
resume(true);
@@ -1568,10 +1583,10 @@ void LockProcess::repaintRootWindowIfNeeded()
bool LockProcess::startHack()
{
- mHackActive = TRUE;
+ mHackActive = true;
if ((mEnsureVRootWindowSecurityTimer) && (!mEnsureVRootWindowSecurityTimer->isActive())) {
- mEnsureVRootWindowSecurityTimer->start(250, FALSE);
+ mEnsureVRootWindowSecurityTimer->start(250, false);
}
if (currentDialog || (!mDialogs.isEmpty())) {
@@ -1593,8 +1608,8 @@ bool LockProcess::startHack()
return false;
}
- setCursor( tqblankCursor );
- XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqblankCursor).handle(), CurrentTime);
+ setCursor( TQt::blankCursor );
+ XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::blankCursor).handle(), CurrentTime);
if (mSaverExec.isEmpty()) {
return false;
@@ -1650,7 +1665,7 @@ bool LockProcess::startHack()
mSuspended = false;
}
- XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqblankCursor).handle(), CurrentTime);
+ XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::blankCursor).handle(), CurrentTime);
if (mHackProc.start() == true) {
#ifdef HAVE_SETPRIORITY
setpriority(PRIO_PROCESS, mHackProc.pid(), mPriority);
@@ -1660,7 +1675,7 @@ bool LockProcess::startHack()
if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced) {
// Close any active dialogs
if (closeCurrentWindow()) {
- TQTimer::singleShot( 0, this, SLOT(closeCurrentWindow()) );
+ TQTimer::singleShot( 0, this, TQ_SLOT(closeCurrentWindow()) );
}
}
if (m_startupStatusDialog) { m_startupStatusDialog->closeSMDialog(); m_startupStatusDialog=NULL; }
@@ -1700,7 +1715,7 @@ bool LockProcess::startHack()
}
if (trinity_desktop_lock_use_system_modal_dialogs) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
- if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
}
saverReadyIfNeeded();
}
@@ -1724,9 +1739,9 @@ void LockProcess::stopHack()
mHackProc.kill(SIGKILL);
}
}
- setCursor( tqarrowCursor );
+ setCursor( TQt::arrowCursor );
- mHackActive = FALSE;
+ mHackActive = false;
}
//---------------------------------------------------------------------------
@@ -1735,7 +1750,7 @@ void LockProcess::hackExited(TDEProcess *)
{
// Hack exited while we're supposed to be saving the screen.
// Make sure the saver window is black.
- mHackActive = FALSE;
+ mHackActive = false;
usleep(100);
TQApplication::syncX();
if (!trinity_desktop_lock_use_system_modal_dialogs) {
@@ -1770,7 +1785,7 @@ void LockProcess::hackExited(TDEProcess *)
if (!mSuspended) {
if (trinity_desktop_lock_use_system_modal_dialogs) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
- if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
}
}
saverReadyIfNeeded();
@@ -1782,19 +1797,17 @@ void LockProcess::displayLockDialogIfNeeded()
m_startupStatusDialog->closeSMDialog();
m_startupStatusDialog = NULL;
}
- if (!mInSecureDialog) {
- if (trinity_desktop_lock_use_system_modal_dialogs) {
- if (!mBusy) {
- mBusy = true;
- if (mLocked) {
- if (checkPass()) {
- mClosingWindows = true;
- stopSaver();
- kapp->quit();
- }
+ if (!mInSecureDialog && trinity_desktop_lock_use_system_modal_dialogs) {
+ if (!mBusy) {
+ mBusy = true;
+ if (mLocked) {
+ if (checkPass()) {
+ mClosingWindows = true;
+ stopSaver();
+ tdeApp->quit();
}
- mBusy = false;
}
+ mBusy = false;
}
}
}
@@ -1807,7 +1820,7 @@ void LockProcess::suspend()
stopHack();
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
if (mHackStartupEnabled) {
- mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
}
}
else {
@@ -1825,7 +1838,7 @@ void LockProcess::suspend()
}
hackstat[8191] = 0;
hackStatus = hackstat;
- hackStatus = hackStatus.remove(TQRegExp("(*) ", TRUE, TRUE));
+ hackStatus = hackStatus.remove(TQRegExp("(*) ", true, true));
TQStringList hackStatusList = TQStringList::split(" ", hackStatus);
hackStatus = (*(hackStatusList.at(1)));
}
@@ -1980,7 +1993,7 @@ int LockProcess::execDialog( TQDialog *dlg )
if (mDialogs.isEmpty()) {
suspend();
- XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqarrowCursor).handle(), CurrentTime);
+ XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::arrowCursor).handle(), CurrentTime);
}
mDialogs.prepend( dlg );
fakeFocusIn( dlg->winId());
@@ -2007,20 +2020,20 @@ int LockProcess::execDialog( TQDialog *dlg )
if( mDialogs.isEmpty() ) {
HANDLE cursorHandle;
if (mHackActive) {
- cursorHandle = TQCursor(tqblankCursor).handle();
+ cursorHandle = TQCursor(TQt::blankCursor).handle();
}
else {
- cursorHandle = TQCursor(tqbusyCursor).handle();
+ cursorHandle = TQCursor(TQt::busyCursor).handle();
}
XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, cursorHandle, CurrentTime);
if (trinity_desktop_lock_use_system_modal_dialogs) {
// Slight delay before screensaver resume to allow the dialog window to fully disappear
if (hackResumeTimer == NULL) {
hackResumeTimer = new TQTimer( this );
- connect( hackResumeTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(resumeUnforced()) );
+ connect( hackResumeTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(resumeUnforced()) );
}
if (mResizingDesktopLock == false) {
- hackResumeTimer->start( 10, TRUE );
+ hackResumeTimer->start( 10, true );
}
}
else {
@@ -2037,7 +2050,7 @@ int LockProcess::execDialog( TQDialog *dlg )
void LockProcess::slotForcePaintBackground()
{
TQPixmap blankPixmap(mRootWidth, mRootHeight);
- blankPixmap.fill(Qt::black);
+ blankPixmap.fill(TQt::black);
slotPaintBackground(blankPixmap);
printf("[WARNING] Unable to obtain desktop wallpaper in a timely manner. High system load or possibly a TDE bug!\n"); fflush(stdout);
}
@@ -2056,7 +2069,7 @@ void LockProcess::slotPaintBackground(const TQPixmap &rpm)
}
else {
mEnsureScreenHiddenTimer = new TQTimer( this );
- connect( mEnsureScreenHiddenTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotForcePaintBackground()) );
+ connect( mEnsureScreenHiddenTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(slotForcePaintBackground()) );
}
// Only remove the mask widget once the resize is 100% complete!
@@ -2118,7 +2131,7 @@ void LockProcess::doFunctionKeyBroadcast() {
// This does NOT work with the SAK or system modal dialogs!
if ((!trinity_desktop_lock_use_system_modal_dialogs) && (!trinity_desktop_lock_use_sak)) {
mBusy=true;
- TQTimer::singleShot(1000, this, TQT_SLOT(slotDeadTimePassed()));
+ TQTimer::singleShot(1000, this, TQ_SLOT(slotDeadTimePassed()));
if (mkeyCode == XKeysymToKeycode(tqt_xdisplay(), XF86XK_Display)) {
while (mDialogControlLock == true) {
usleep(100000);
@@ -2158,7 +2171,7 @@ bool LockProcess::x11Event(XEvent *event)
(event->xkey.keycode == XKeysymToKeycode(event->xkey.display, XF86XK_AudioRaiseVolume)) || \
(event->xkey.keycode == XKeysymToKeycode(event->xkey.display, XF86XK_AudioLowerVolume))) {
mkeyCode = event->xkey.keycode;
- TQTimer::singleShot( 100, this, TQT_SLOT(doFunctionKeyBroadcast()) );
+ TQTimer::singleShot( 100, this, TQ_SLOT(doFunctionKeyBroadcast()) );
return true;
}
// ACPI power keys
@@ -2167,7 +2180,7 @@ bool LockProcess::x11Event(XEvent *event)
(event->xkey.keycode == XKeysymToKeycode(event->xkey.display, XF86XK_Suspend)) || \
(event->xkey.keycode == XKeysymToKeycode(event->xkey.display, XF86XK_Hibernate))) {
mkeyCode = event->xkey.keycode;
- TQTimer::singleShot( 100, this, TQT_SLOT(doFunctionKeyBroadcast()) );
+ TQTimer::singleShot( 100, this, TQ_SLOT(doFunctionKeyBroadcast()) );
return true;
}
}
@@ -2183,7 +2196,7 @@ bool LockProcess::x11Event(XEvent *event)
// fall through
case KeyPress:
if ((mHackDelayStartupTimer) && (mHackDelayStartupTimer->isActive())) {
- if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
}
if (mBusy || !mDialogs.isEmpty()) {
break;
@@ -2193,12 +2206,12 @@ bool LockProcess::x11Event(XEvent *event)
if (mLocked) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
if (mHackStartupEnabled) {
- mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
}
}
- if ((!mLocked) && (!mInSecureDialog)) {
+ if (!mLocked && !mInSecureDialog) {
stopSaver();
- kapp->quit();
+ tdeApp->quit();
}
if (mAutoLogout) {
// we need to restart the auto logout countdown
@@ -2210,7 +2223,7 @@ bool LockProcess::x11Event(XEvent *event)
if (!mLocked || checkPass()) {
mClosingWindows = true;
stopSaver();
- kapp->quit();
+ tdeApp->quit();
}
else if (mAutoLogout) {
// we need to restart the auto logout countdown
@@ -2242,7 +2255,7 @@ bool LockProcess::x11Event(XEvent *event)
else {
if (trinity_desktop_lock_use_system_modal_dialogs == true) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
- if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
+ if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true);
}
else {
resume( false );
@@ -2299,7 +2312,7 @@ bool LockProcess::x11Event(XEvent *event)
&& event->xkey.window != mDialogs.first()->winId()) {
XEvent ev2 = *event;
ev2.xkey.window = ev2.xkey.subwindow = mDialogs.first()->winId();
- tqApp->x11ProcessEvent( &ev2 );
+ tdeApp->x11ProcessEvent( &ev2 );
return true;
}
@@ -2433,14 +2446,14 @@ void LockProcess::msgBox( TQMessageBox::Icon type, const TQString &txt )
KPushButton *button = new KPushButton( KStdGuiItem::ok(), winFrame );
button->setDefault( true );
button->setSizePolicy( TQSizePolicy( TQSizePolicy::Preferred, TQSizePolicy::Preferred ) );
- connect( button, TQT_SIGNAL( clicked() ), &box, TQT_SLOT( accept() ) );
+ connect( button, TQ_SIGNAL( clicked() ), &box, TQ_SLOT( accept() ) );
TQVBoxLayout *vbox = new TQVBoxLayout( &box );
vbox->addWidget( winFrame );
TQGridLayout *grid = new TQGridLayout( winFrame, 2, 2, 10 );
- grid->addWidget( label1, 0, 0, Qt::AlignCenter );
- grid->addWidget( label2, 0, 1, Qt::AlignCenter );
- grid->addMultiCellWidget( button, 1,1, 0,1, Qt::AlignCenter );
+ grid->addWidget( label1, 0, 0, TQt::AlignCenter );
+ grid->addWidget( label2, 0, 1, TQt::AlignCenter );
+ grid->addMultiCellWidget( button, 1,1, 0,1, TQt::AlignCenter );
execDialog( &box );
}
@@ -2449,19 +2462,13 @@ static int run_vkbd = -1;
void LockProcess::showVkbd()
{
if( run_vkbd == - 1 ) {
-#ifdef WITH_HAL
- 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 && !TDEStandardDirs::findExe( "xvkbd" ).isEmpty()) ? 1 : 0;
-#else // WITH_HAL
run_vkbd = (!TDEStandardDirs::findExe( "xvkbd" ).isEmpty());
-#endif // WITH_HAL
}
if( run_vkbd ) {
mVkbdWindows.clear();
mVkbdLastEventWindow = None;
mKWinModule = new KWinModule( NULL, KWinModule::INFO_WINDOWS );
- connect( mKWinModule, TQT_SIGNAL( windowAdded( WId )), TQT_SLOT( windowAdded( WId )));
+ connect( mKWinModule, TQ_SIGNAL( windowAdded( WId )), TQ_SLOT( windowAdded( WId )));
mVkbdProcess = new TDEProcess;
*mVkbdProcess << "xvkbd" << "-compact" << "-geometry" << "-0-0" << "-xdm";
mVkbdProcess->start();
@@ -2567,7 +2574,7 @@ bool LockProcess::forwardVkbdEvent( XEvent* event )
}
// vkbd windows are kept topmost, so just find the first one in the position
for( TQValueList< VkbdWindow >::ConstIterator it = mVkbdWindows.begin(); it != mVkbdWindows.end(); ++it ) {
- if( TQT_TQRECT_OBJECT((*it).rect).contains( pos )) {
+ 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;
@@ -2675,7 +2682,7 @@ void LockProcess::slotMouseActivity(XEvent *event)
}
// Clicked inside dialog; set focus
- if (inFrame == TRUE) {
+ if (inFrame) {
WId window = mDialogs.first()->winId();
XSetInputFocus(tqt_xdisplay(), window, RevertToParent, CurrentTime);
fakeFocusIn(window);
@@ -2685,20 +2692,20 @@ void LockProcess::slotMouseActivity(XEvent *event)
}
// Clicked inside window handle (or border); drag window
- if ((inFrame == TRUE) && (inDialog == FALSE)) {
+ if (inFrame && !inDialog) {
TQPoint oldPoint = mDialogs.first()->pos();
m_mouseDown = 1;
m_dialogPrevX = oldPoint.x();
m_dialogPrevY = oldPoint.y();
m_mousePrevX = be->x_root;
m_mousePrevY = be->y_root;
- XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqsizeAllCursor).handle(), CurrentTime);
+ XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::sizeAllCursor).handle(), CurrentTime);
}
}
// Drag the window...
if (event->type == MotionNotify) {
- if (m_mouseDown == TRUE) {
+ if (m_mouseDown) {
int deltaX = me->x_root - m_mousePrevX;
int deltaY = me->y_root - m_mousePrevY;
m_dialogPrevX = m_dialogPrevX + deltaX;
@@ -2712,7 +2719,7 @@ void LockProcess::slotMouseActivity(XEvent *event)
if (event->type == ButtonRelease) {
m_mouseDown = 0;
- XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqarrowCursor).handle(), CurrentTime);
+ XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::arrowCursor).handle(), CurrentTime);
}
}
@@ -2823,6 +2830,7 @@ void LockProcess::processInputPipeCommand(TQString inputcommand) {
}
void LockProcess::cryptographicCardInserted(TDECryptographicCardDevice* cdevice) {
+#ifdef WITH_TDEHWLIB
TQString login_name = TQString::null;
X509CertificatePtrList certList = cdevice->cardX509Certificates();
if (certList.count() > 0) {
@@ -2845,31 +2853,36 @@ void LockProcess::cryptographicCardInserted(TDECryptographicCardDevice* cdevice)
m_loginCardDevice = cdevice;
if (dynamic_cast<SAKDlg*>(currentDialog)) {
dynamic_cast<SAKDlg*>(currentDialog)->closeDialogForced();
- TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardLogin()));
+ TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardLogin()));
}
else if (dynamic_cast<SecureDlg*>(currentDialog)) {
dynamic_cast<SecureDlg*>(currentDialog)->closeDialogForced();
- TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardLogin()));
+ TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardLogin()));
}
else if (dynamic_cast<PasswordDlg*>(currentDialog)) {
signalPassDlgToAttemptCardLogin();
}
}
}
+#endif
}
void LockProcess::cryptographicCardRemoved(TDECryptographicCardDevice* cdevice) {
+#ifdef WITH_TDEHWLIB
PasswordDlg* passDlg = dynamic_cast<PasswordDlg*>(currentDialog);
if (passDlg) {
passDlg->resetCardLogin();
}
else {
m_loginCardDevice = NULL;
- TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardAbort()));
+ TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardAbort()));
}
+#endif
}
-void LockProcess::signalPassDlgToAttemptCardLogin() {
+void LockProcess::signalPassDlgToAttemptCardLogin()
+{
+#ifdef WITH_TDEHWLIB
PasswordDlg* passDlg = dynamic_cast<PasswordDlg*>(currentDialog);
if (passDlg && m_loginCardDevice) {
passDlg->attemptCardLogin();
@@ -2877,12 +2890,15 @@ void LockProcess::signalPassDlgToAttemptCardLogin() {
else {
if (currentDialog && m_loginCardDevice) {
// Try again later
- TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardLogin()));
+ TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardLogin()));
}
}
+#endif
}
-void LockProcess::signalPassDlgToAttemptCardAbort() {
+void LockProcess::signalPassDlgToAttemptCardAbort()
+{
+#ifdef WITH_TDEHWLIB
PasswordDlg* passDlg = dynamic_cast<PasswordDlg*>(currentDialog);
if (passDlg) {
passDlg->resetCardLogin();
@@ -2890,12 +2906,15 @@ void LockProcess::signalPassDlgToAttemptCardAbort() {
else {
if (currentDialog) {
// Try again later
- TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardAbort()));
+ TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardAbort()));
}
}
+#endif
}
-void LockProcess::cryptographicCardPinRequested(TQString prompt, TDECryptographicCardDevice* cdevice) {
+void LockProcess::cryptographicCardPinRequested(TQString prompt, TDECryptographicCardDevice* cdevice)
+{
+#ifdef WITH_TDEHWLIB
TQCString password;
TQString pin_entry;
@@ -2911,10 +2930,16 @@ void LockProcess::cryptographicCardPinRequested(TQString prompt, TDECryptographi
else {
cdevice->setProvidedPin(TQString::null);
}
+#endif
}
-TDECryptographicCardDevice* LockProcess::cryptographicCardDevice() {
+TDECryptographicCardDevice* LockProcess::cryptographicCardDevice()
+{
+#ifdef WITH_TDEHWLIB
return m_loginCardDevice;
+#else
+ return NULL;
+#endif
}
void LockProcess::fullyOnline() {
@@ -2942,7 +2967,7 @@ void LockProcess::saverReady() {
// Control pipe handler
//
ControlPipeHandlerObject::ControlPipeHandlerObject() : TQObject() {
- mParent = NULL;
+ mParent = nullptr;
mRunning = false;
mTerminate = false;
mThreadID = 0L;
@@ -2966,7 +2991,7 @@ void ControlPipeHandlerObject::run(void) {
int display_number = atoi(TQString(XDisplayString(tqt_xdisplay())).replace(":","").ascii());
if (display_number < 0) {
- printf("[kdesktop_lock] Warning: unable to create control socket. Interactive logon modules may not function properly.\n");
+ printf("[kdesktop_lock] Warning: unable to create control socket. Interactive logon modules may not function properly.\n");
mRunning = false;
TQApplication::eventLoop()->exit(-1);
return;
@@ -2997,7 +3022,7 @@ void ControlPipeHandlerObject::run(void) {
}
if (!mParent->mPipeOpen) {
- printf("[kdesktop_lock] Warning: unable to create control socket '%s'. Interactive logon modules may not function properly.\n", fifo_file);
+ printf("[kdesktop_lock] Warning: unable to create control socket '%s'. Interactive logon modules may not function properly.\n", fifo_file);
mRunning = false;
TQApplication::eventLoop()->exit(-1);
return;
diff --git a/kdesktop/lock/lockprocess.h b/kdesktop/lock/lockprocess.h
index 4dc2d8bab..1afc9bb46 100644
--- a/kdesktop/lock/lockprocess.h
+++ b/kdesktop/lock/lockprocess.h
@@ -10,14 +10,8 @@
#ifndef __LOCKENG_H__
#define __LOCKENG_H__
-#include <ksslcertificate.h>
-
-#include <tdehardwaredevices.h>
-#include <tdecryptographiccarddevice.h>
-
#include <kgreeterplugin.h>
-
-#include <kprocess.h>
+#include <tdeprocess.h>
#include <kpixmap.h>
#include <krootpixmap.h>
@@ -35,6 +29,11 @@ class KLibrary;
class KWinModule;
class KSMModalDialog;
class LockProcess;
+#ifdef WITH_TDEHWLIB
+class TDECryptographicCardDevice;
+#else
+#define TDECryptographicCardDevice void
+#endif
struct GreeterPluginHandle {
KLibrary *library;
@@ -53,7 +52,7 @@ typedef TQValueList<Window> TQXLibWindowList;
//
class ControlPipeHandlerObject : public TQObject
{
- Q_OBJECT
+ TQ_OBJECT
public:
ControlPipeHandlerObject();
@@ -82,7 +81,7 @@ class ControlPipeHandlerObject : public TQObject
//
class LockProcess : public TQWidget
{
- Q_OBJECT
+ TQ_OBJECT
public:
LockProcess();
@@ -107,9 +106,6 @@ class LockProcess : public TQWidget
TDECryptographicCardDevice* cryptographicCardDevice();
- signals:
- void terminateHelperThread();
-
public slots:
void quitSaver();
void preparePopup();
diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cpp
index f1407070c..9f707c35d 100644
--- a/kdesktop/lock/main.cc
+++ b/kdesktop/lock/main.cpp
@@ -33,14 +33,14 @@
#include <kdebug.h>
#include <tdeglobalsettings.h>
#include <dcopref.h>
-#include <ksimpleconfig.h>
-#include <kstandarddirs.h>
+#include <tdesimpleconfig.h>
+#include <tdestandarddirs.h>
#include <tdmtsak.h>
#include <stdlib.h>
-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300
+#if defined(TQ_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300
#define COMPOSITE
#endif
@@ -58,49 +58,49 @@
TQXLibWindowList trinity_desktop_lock_hidden_window_list;
// [FIXME] Add GUI configuration checkboxes for these three settings (see kdesktoprc [ScreenSaver] UseUnmanagedLockWindows, DelaySaverStart, and UseTDESAK)
-bool trinity_desktop_lock_use_system_modal_dialogs = FALSE;
-bool trinity_desktop_lock_delay_screensaver_start = FALSE;
-bool trinity_desktop_lock_use_sak = FALSE;
-bool trinity_desktop_lock_hide_active_windows = FALSE;
-bool trinity_desktop_lock_hide_cancel_button = FALSE;
-bool trinity_desktop_lock_forced = FALSE;
-
-LockProcess* trinity_desktop_lock_process = NULL;
+bool trinity_desktop_lock_use_system_modal_dialogs = false;
+bool trinity_desktop_lock_delay_screensaver_start = false;
+bool trinity_desktop_lock_use_sak = false;
+bool trinity_desktop_lock_hide_active_windows = false;
+bool trinity_desktop_lock_hide_cancel_button = false;
+bool trinity_desktop_lock_forced = false;
+// This is a temporary variable used till a fix for the grab issue is prepared
+bool trinity_desktop_lock_failed_grab = false;
bool signalled_forcelock;
bool signalled_dontlock;
bool signalled_securedialog;
bool signalled_blank;
bool signalled_run;
-bool in_internal_mode = FALSE;
+bool in_internal_mode = false;
-bool argb_visual = FALSE;
+bool argb_visual = false;
pid_t kdesktop_pid = -1;
-bool trinity_desktop_lock_settings_initialized = FALSE;
+bool trinity_desktop_lock_settings_initialized = false;
static void sigusr1_handler(int)
{
- signalled_forcelock = TRUE;
+ signalled_forcelock = true;
}
static void sigusr2_handler(int)
{
- signalled_dontlock = TRUE;
+ signalled_dontlock = true;
}
-static void sigusr3_handler(int)
+static void sigwinch_handler(int)
{
- signalled_securedialog = TRUE;
+ signalled_securedialog = true;
}
-static void sigusr4_handler(int)
+static void sigttin_handler(int)
{
- signalled_blank = TRUE;
+ signalled_blank = true;
}
-static void sigusr5_handler(int)
+static void sigttou_handler(int)
{
- signalled_run = TRUE;
+ signalled_run = true;
}
static int trapXErrors(Display *, XErrorEvent *)
@@ -236,9 +236,9 @@ int main( int argc, char **argv )
XSetErrorHandler(trapXErrors);
- MyApp* app = NULL;
+ MyApp *app = nullptr;
- while (1 == 1) {
+ while (true) {
sigset_t new_mask;
sigset_t orig_mask;
@@ -246,11 +246,11 @@ int main( int argc, char **argv )
sigfillset(&new_mask);
sigprocmask(SIG_BLOCK, &new_mask, NULL);
- signalled_forcelock = FALSE;
- signalled_dontlock = FALSE;
- signalled_securedialog = FALSE;
- signalled_blank = FALSE;
- signalled_run = FALSE;
+ signalled_forcelock = false;
+ signalled_dontlock = false;
+ signalled_securedialog = false;
+ signalled_blank = false;
+ signalled_run = false;
int kdesktop_screen_number = 0;
int starting_screen = 0;
@@ -261,7 +261,7 @@ int main( int argc, char **argv )
if (TDEGlobalSettings::isMultiHead()) {
Display *dpy = XOpenDisplay(NULL);
- if (! dpy) {
+ if (!dpy) {
fprintf(stderr,
"%s: FATAL ERROR: couldn't open display '%s'\n",
argv[0], XDisplayName(NULL));
@@ -303,14 +303,11 @@ int main( int argc, char **argv )
}
}
- env.sprintf("DISPLAY=%s.%d", display_name.data(),
- kdesktop_screen_number);
+ env.sprintf("DISPLAY=%s.%d", display_name.data(), kdesktop_screen_number);
kdDebug() << "env " << env << endl;
if (putenv(strdup(env.data()))) {
- fprintf(stderr,
- "%s: WARNING: unable to set DISPLAY environment variable\n",
- argv[0]);
+ fprintf(stderr, "%s: WARNING: unable to set DISPLAY environment variable\n", argv[0]);
perror("putenv()");
}
}
@@ -374,17 +371,17 @@ int main( int argc, char **argv )
TDEGlobal::locale()->insertCatalogue("libdmctl");
struct stat st;
- KSimpleConfig* tdmconfig;
+ TDESimpleConfig* tdmconfig;
if( stat( KDE_CONFDIR "/tdm/tdmdistrc" , &st ) == 0) {
- tdmconfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" ));
+ tdmconfig = new TDESimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" ));
}
else {
- tdmconfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" ));
+ tdmconfig = new TDESimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" ));
}
tdmconfig->setGroup("X-:*-Greeter");
// Create new LockProcess, which also spawns threads inheriting the blocked signal mask
- trinity_desktop_lock_process = new LockProcess;
+ LockProcess lock_process;
// Unblock reception of all signals in this thread
sigprocmask(SIG_UNBLOCK, &new_mask, NULL);
@@ -396,7 +393,7 @@ int main( int argc, char **argv )
kdesktop_pid = atoi(args->getOption( "internal" ));
struct sigaction act;
- in_internal_mode = TRUE;
+ in_internal_mode = true;
// handle SIGUSR1
act.sa_handler= sigusr1_handler;
@@ -410,20 +407,20 @@ int main( int argc, char **argv )
sigaddset(&(act.sa_mask), SIGUSR2);
act.sa_flags = 0;
sigaction(SIGUSR2, &act, 0L);
- // handle SIGWINCH (an ersatz SIGUSR3)
- act.sa_handler= sigusr3_handler;
+ // handle SIGWINCH (as custom user signal rather than its inherent meaning)
+ act.sa_handler= sigwinch_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGWINCH);
act.sa_flags = 0;
sigaction(SIGWINCH, &act, 0L);
- // handle SIGTTIN (an ersatz SIGUSR4)
- act.sa_handler= sigusr4_handler;
+ // handle SIGTTIN (as custom user signal rather than its inherent meaning)
+ act.sa_handler= sigttin_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGTTIN);
act.sa_flags = 0;
sigaction(SIGTTIN, &act, 0L);
- // handle SIGTTOU (an ersatz SIGUSR5)
- act.sa_handler= sigusr5_handler;
+ // handle SIGTTOU (as custom user signal rather than its inherent meaning)
+ act.sa_handler= sigttou_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGTTOU);
act.sa_flags = 0;
@@ -437,7 +434,7 @@ int main( int argc, char **argv )
sigaddset(&new_mask,SIGTTIN);
sigaddset(&new_mask,SIGTTOU);
- while (signalled_run == FALSE) {
+ while (!signalled_run) {
// let kdesktop know the saver process is ready
if (kill(kdesktop_pid, SIGTTIN) < 0) {
// The controlling kdesktop process probably died. Commit suicide...
@@ -454,7 +451,7 @@ int main( int argc, char **argv )
// wait for SIGUSR1, SIGUSR2, SIGWINCH, SIGTTIN, or SIGTTOU
sigprocmask(SIG_BLOCK, &new_mask, &orig_mask);
- if (signalled_run != TRUE) {
+ if (!signalled_run) {
sigsuspend(&orig_mask);
}
sigprocmask(SIG_UNBLOCK, &new_mask, NULL);
@@ -494,42 +491,54 @@ int main( int argc, char **argv )
delete tdmconfig;
- if (args->isSet( "forcelock" ) || (signalled_forcelock == TRUE)) {
- trinity_desktop_lock_forced = TRUE;
+ if (args->isSet( "forcelock" ) || signalled_forcelock) {
+ trinity_desktop_lock_forced = true;
}
- trinity_desktop_lock_process->init(child, (args->isSet( "blank" ) || (signalled_blank == TRUE)));
+ lock_process.init(child, (args->isSet( "blank" ) || signalled_blank));
if (!child) {
- trinity_desktop_lock_process->setChildren(child_sockets);
+ lock_process.setChildren(child_sockets);
}
else {
- trinity_desktop_lock_process->setParent(parent_connection);
+ lock_process.setParent(parent_connection);
}
+ trinity_desktop_lock_failed_grab = false;
bool rt;
- if( (((!child) && (args->isSet( "forcelock" ))) || (signalled_forcelock == TRUE))) {
- rt = trinity_desktop_lock_process->lock();
+ if( (!child && args->isSet( "forcelock" )) || signalled_forcelock) {
+ rt = lock_process.lock();
}
- else if( child || (args->isSet( "dontlock" ) || (signalled_dontlock == TRUE))) {
- rt = trinity_desktop_lock_process->dontLock();
+ else if( child || (args->isSet( "dontlock" ) || signalled_dontlock)) {
+ rt = lock_process.dontLock();
}
- else if( child || (args->isSet( "securedialog" ) || (signalled_securedialog == TRUE))) {
+ else if( child || (args->isSet( "securedialog" ) || signalled_securedialog)) {
int retcode = tde_sak_verify_calling_process();
if (retcode == 0) {
- rt = trinity_desktop_lock_process->runSecureDialog();
+ rt = lock_process.runSecureDialog();
}
else {
return 1;
}
}
else {
- rt = trinity_desktop_lock_process->defaultSave();
+ rt = lock_process.defaultSave();
}
+
+ // Make sure to handle all pending responses from the X server.
+ // If we don't do this, in case of failed activation of the saver/lock screen,
+ // we will end up in a dirty state and the screen lock will no longer hide the windows
+ // on the screen due to 'm_rootPixmap' failing to load the background image.
+ // This is caused by a 'XConvertSelection' request in 'TDESharedPixmap::loadFromShared'
+ // not being handled and causing the corresponding property to become unusuable in X for
+ // subsequent lock requests.
+ XSync(tqt_xdisplay(), False);
+ app->processEvents();
+
if (!rt) {
- return 0;
+ return (trinity_desktop_lock_failed_grab ? 0 : 12);
}
- if (in_internal_mode == FALSE) {
+ if (!in_internal_mode) {
trinity_desktop_lock_hidden_window_list.clear();
int ret = app->exec();
restore_hidden_override_redirect_windows();
@@ -548,9 +557,6 @@ int main( int argc, char **argv )
return 12;
}
- delete trinity_desktop_lock_process;
- trinity_desktop_lock_process = NULL;
-
// FIXME
// We should not have to return (restart) at all,
// but it seems that some X11 connections are left active,
diff --git a/kdesktop/lock/main.h b/kdesktop/lock/main.h
index fd19c6183..162542555 100644
--- a/kdesktop/lock/main.h
+++ b/kdesktop/lock/main.h
@@ -25,10 +25,10 @@
#include <time.h>
class MyApp : public TDEApplication {
- Q_OBJECT
+ TQ_OBJECT
public:
MyApp() : TDEApplication(), lastTick( 0 ) {}
- MyApp(Display *display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0, bool allowStyles=true) : TDEApplication(display, visual, colormap, allowStyles), lastTick( 0 ) {}
+ MyApp(Display *display, TQt::HANDLE visual = 0, TQt::HANDLE colormap = 0, bool allowStyles=true) : TDEApplication(display, visual, colormap, allowStyles), lastTick( 0 ) {}
protected:
bool x11EventFilter( XEvent * );
diff --git a/kdesktop/lock/querydlg.cc b/kdesktop/lock/querydlg.cpp
index 1fc5d260c..5b1fea0f3 100644
--- a/kdesktop/lock/querydlg.cc
+++ b/kdesktop/lock/querydlg.cpp
@@ -14,7 +14,7 @@
#include <tdelocale.h>
#include <kpushbutton.h>
#include <kseparator.h>
-#include <kstandarddirs.h>
+#include <tdestandarddirs.h>
#include <tdeglobalsettings.h>
#include <tdeconfig.h>
#include <kiconloader.h>
@@ -111,13 +111,13 @@ QueryDlg::QueryDlg(LockProcess *parent)
layButtons->addWidget( ok );
frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() );
- frameLayout->addMultiCellWidget( mpixLabel, 0, 2, 0, 0, Qt::AlignTop );
+ frameLayout->addMultiCellWidget( mpixLabel, 0, 2, 0, 0, TQt::AlignTop );
frameLayout->addLayout( layStatus, 0, 1 );
frameLayout->addLayout( layPin, 2, 1 );
frameLayout->addMultiCellWidget( sep, 3, 3, 0, 1 );
frameLayout->addMultiCellLayout( layButtons, 4, 4, 0, 1 );
- connect(ok, TQT_SIGNAL(clicked()), TQT_SLOT(slotOK()));
+ connect(ok, TQ_SIGNAL(clicked()), TQ_SLOT(slotOK()));
installEventFilter(this);
setFixedSize( sizeHint() );
@@ -140,7 +140,7 @@ TQString QueryDlg::getEntry()
void QueryDlg::updateLabel(TQString &txt)
{
- mStatusLabel->setPaletteForegroundColor(Qt::black);
+ mStatusLabel->setPaletteForegroundColor(TQt::black);
mStatusLabel->setText("<b>" + txt + "</b>");
}
diff --git a/kdesktop/lock/querydlg.h b/kdesktop/lock/querydlg.h
index d5c4f7f33..0b3e55aa8 100644
--- a/kdesktop/lock/querydlg.h
+++ b/kdesktop/lock/querydlg.h
@@ -28,7 +28,7 @@ class TQListView;
//
class QueryDlg : public TQDialog
{
- Q_OBJECT
+ TQ_OBJECT
public:
QueryDlg(LockProcess *parent);
diff --git a/kdesktop/lock/sakdlg.cc b/kdesktop/lock/sakdlg.cpp
index 803c77919..5b23a9c5a 100644
--- a/kdesktop/lock/sakdlg.cc
+++ b/kdesktop/lock/sakdlg.cpp
@@ -14,7 +14,7 @@
#include <tdelocale.h>
#include <kpushbutton.h>
#include <kseparator.h>
-#include <kstandarddirs.h>
+#include <tdestandarddirs.h>
#include <tdeglobalsettings.h>
#include <tdeconfig.h>
#include <kiconloader.h>
@@ -108,7 +108,7 @@ SAKDlg::SAKDlg(LockProcess *parent)
mSAKProcess = new TDEProcess;
*mSAKProcess << "tdmtsak";
- connect(mSAKProcess, TQT_SIGNAL(processExited(TDEProcess*)), this, TQT_SLOT(slotSAKProcessExited()));
+ connect(mSAKProcess, TQ_SIGNAL(processExited(TDEProcess*)), this, TQ_SLOT(slotSAKProcessExited()));
mSAKProcess->start();
}
@@ -142,7 +142,7 @@ void SAKDlg::reject()
void SAKDlg::updateLabel(TQString &txt)
{
- mStatusLabel->setPaletteForegroundColor(Qt::black);
+ mStatusLabel->setPaletteForegroundColor(TQt::black);
mStatusLabel->setText("<b>" + txt + "</b>");
}
diff --git a/kdesktop/lock/sakdlg.h b/kdesktop/lock/sakdlg.h
index faded4b6e..12d80b8cb 100644
--- a/kdesktop/lock/sakdlg.h
+++ b/kdesktop/lock/sakdlg.h
@@ -26,7 +26,7 @@ class TQListView;
//
class SAKDlg : public TQDialog
{
- Q_OBJECT
+ TQ_OBJECT
public:
SAKDlg(LockProcess *parent);
diff --git a/kdesktop/lock/securedlg.cc b/kdesktop/lock/securedlg.cpp
index fca79a707..ba2b08af0 100644
--- a/kdesktop/lock/securedlg.cc
+++ b/kdesktop/lock/securedlg.cpp
@@ -14,7 +14,7 @@
#include <tdelocale.h>
#include <kpushbutton.h>
#include <kseparator.h>
-#include <kstandarddirs.h>
+#include <tdestandarddirs.h>
#include <tdeglobalsettings.h>
#include <tdeconfig.h>
#include <kiconloader.h>
@@ -137,11 +137,11 @@ SecureDlg::SecureDlg(LockProcess *parent)
frameLayout->addMultiCellWidget( sep, 2, 2, 0, 1 );
frameLayout->addMultiCellLayout( layPBGrid, 3, 3, 0, 1, AlignLeft | AlignVCenter);
- connect(mCancelButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnCancel()));
- connect(mLockButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnLock()));
- connect(mTaskButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnTask()));
- connect(mShutdownButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnShutdown()));
- connect(mSwitchButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnSwitchUser()));
+ connect(mCancelButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnCancel()));
+ connect(mLockButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnLock()));
+ connect(mTaskButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnTask()));
+ connect(mShutdownButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnShutdown()));
+ connect(mSwitchButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnSwitchUser()));
TQSize dlgSz = sizeHint();
int btnSize = dlgSz.width();
diff --git a/kdesktop/lock/securedlg.h b/kdesktop/lock/securedlg.h
index 9ad0ac1da..c6c9fa7fe 100644
--- a/kdesktop/lock/securedlg.h
+++ b/kdesktop/lock/securedlg.h
@@ -27,7 +27,7 @@ class TQListView;
//
class SecureDlg : public TQDialog
{
- Q_OBJECT
+ TQ_OBJECT
public:
SecureDlg(LockProcess *parent);
diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc
deleted file mode 100644
index f02e51440..000000000
--- a/kdesktop/lockeng.cc
+++ /dev/null
@@ -1,1004 +0,0 @@
-//===========================================================================
-//
-// This file is part of the TDE project
-//
-// Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
-// Copyright (c) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
-//
-
-
-#include <config.h>
-
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#include <ksslcertificate.h>
-
-#include <tdehardwaredevices.h>
-#include <tdecryptographiccarddevice.h>
-
-#include <kstandarddirs.h>
-#include <tdeapplication.h>
-#include <kservicegroup.h>
-#include <ksimpleconfig.h>
-#include <kdebug.h>
-#include <kuser.h>
-#include <tdelocale.h>
-#include <tqfile.h>
-#include <tqtimer.h>
-#include <tqeventloop.h>
-#include <dcopclient.h>
-#include <assert.h>
-
-#include <dmctl.h>
-
-#include <dbus/dbus-shared.h>
-#include <tqdbusdata.h>
-#include <tqdbuserror.h>
-#include <tqdbusmessage.h>
-#include <tqdbusobjectpath.h>
-#include <tqdbusproxy.h>
-
-#include "lockeng.h"
-#include "lockeng.moc"
-#include "kdesktopsettings.h"
-
-#define SYSTEMD_LOGIN1_SERVICE "org.freedesktop.login1"
-#define SYSTEMD_LOGIN1_PATH "/org/freedesktop/login1"
-#define SYSTEMD_LOGIN1_MANAGER_IFACE "org.freedesktop.login1.Manager"
-#define SYSTEMD_LOGIN1_SESSION_IFACE "org.freedesktop.login1.Session"
-#define SYSTEMD_LOGIN1_SEAT_IFACE "org.freedesktop.login1.Seat"
-
-#define DBUS_CONN_NAME "kdesktop_lock"
-
-#include "xautolock_c.h"
-extern xautolock_corner_t xautolock_corners[ 4 ];
-
-bool trinity_lockeng_sak_available = TRUE;
-
-SaverEngine* m_masterSaverEngine = NULL;
-static void sigusr1_handler(int)
-{
- if (m_masterSaverEngine) {
- m_masterSaverEngine->m_threadHelperObject->slotLockProcessWaiting();
- }
-}
-static void sigusr2_handler(int)
-{
- if (m_masterSaverEngine) {
- m_masterSaverEngine->m_threadHelperObject->slotLockProcessFullyActivated();
- }
-}
-static void sigttin_handler(int)
-{
- if (m_masterSaverEngine) {
- m_masterSaverEngine->slotLockProcessReady();
- }
-}
-
-//===========================================================================
-//
-// Screen saver engine. Doesn't handle the actual screensaver window,
-// starting screensaver hacks, or password entry. That's done by
-// a newly started process.
-//
-SaverEngine::SaverEngine()
- : TQWidget(),
- KScreensaverIface(),
- mBlankOnly(false),
- mSAKProcess(NULL),
- mTerminationRequested(false),
- mSaverProcessReady(false),
- mNewVTAfterLockEngage(false),
- mValidCryptoCardInserted(false),
- mSwitchVTAfterLockEngage(-1),
- dBusLocal(0),
- dBusWatch(0),
- systemdSession(0)
-{
- // handle SIGUSR1
- m_masterSaverEngine = this;
- mSignalAction.sa_handler= sigusr1_handler;
- sigemptyset(&(mSignalAction.sa_mask));
- sigaddset(&(mSignalAction.sa_mask), SIGUSR1);
- mSignalAction.sa_flags = 0;
- sigaction(SIGUSR1, &mSignalAction, 0L);
-
- // handle SIGUSR2
- m_masterSaverEngine = this;
- mSignalAction.sa_handler= sigusr2_handler;
- sigemptyset(&(mSignalAction.sa_mask));
- sigaddset(&(mSignalAction.sa_mask), SIGUSR2);
- mSignalAction.sa_flags = 0;
- sigaction(SIGUSR2, &mSignalAction, 0L);
-
- // handle SIGTTIN
- m_masterSaverEngine = this;
- mSignalAction.sa_handler= sigttin_handler;
- sigemptyset(&(mSignalAction.sa_mask));
- sigaddset(&(mSignalAction.sa_mask), SIGTTIN);
- mSignalAction.sa_flags = 0;
- sigaction(SIGTTIN, &mSignalAction, 0L);
-
- // Save X screensaver parameters
- XGetScreenSaver(tqt_xdisplay(), &mXTimeout, &mXInterval,
- &mXBlanking, &mXExposures);
-
- mState = Waiting;
- mXAutoLock = 0;
- mEnabled = false;
-
- m_helperThread = new TQEventLoopThread;
- m_helperThread->start();
- m_threadHelperObject = new SaverEngineThreadHelperObject;
- m_threadHelperObject->moveToThread(m_helperThread);
- connect(this, TQT_SIGNAL(terminateHelperThread()), m_threadHelperObject, TQT_SLOT(terminateThread()));
- connect(m_threadHelperObject, TQT_SIGNAL(lockProcessWaiting()), this, TQT_SLOT(lockProcessWaiting()));
- connect(m_threadHelperObject, TQT_SIGNAL(lockProcessFullyActivated()), this, TQT_SLOT(lockProcessFullyActivated()));
-
- connect(&mLockProcess, TQT_SIGNAL(processExited(TDEProcess *)),
- TQT_SLOT(lockProcessExited()));
-
- configure();
-
- // Create SAK process only if SAK is enabled
- KSimpleConfig *config;
- struct stat st;
- if (stat( KDE_CONFDIR "/tdm/tdmdistrc" , &st) == 0) {
- config = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" ));
- }
- else {
- config = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" ));
- }
- config->setGroup("X-:*-Greeter");
- bool useSAKProcess = false;
-#ifdef BUILD_TSAK
- useSAKProcess = config->readBoolEntry("UseSAK", false) && KDesktopSettings::useTDESAK();
-#endif
- if (useSAKProcess) {
- mSAKProcess = new TDEProcess;
- *mSAKProcess << "tdmtsak";
- connect(mSAKProcess, TQT_SIGNAL(processExited(TDEProcess*)), this, TQT_SLOT(slotSAKProcessExited()));
- TQTimer::singleShot( 0, this, TQT_SLOT(handleSecureDialog()) );
- }
-
- mLockProcess.clearArguments();
- TQString path = TDEStandardDirs::findExe( "kdesktop_lock" );
- if( path.isEmpty())
- {
- kdDebug( 1204 ) << "Can't find kdesktop_lock!" << endl;
- }
- mLockProcess << path;
- mLockProcess << TQString( "--internal" ) << TQString( "%1" ).arg(getpid());
- if (mLockProcess.start() == false )
- {
- kdDebug( 1204 ) << "Failed to start kdesktop_lock!" << endl;
- }
-
- // Prevent kdesktop_lock signals from being handled by the wrong (GUI) thread
- sigemptyset(&mThreadBlockSet);
- sigaddset(&mThreadBlockSet, SIGUSR1);
- sigaddset(&mThreadBlockSet, SIGUSR2);
- sigaddset(&mThreadBlockSet, SIGTTIN);
- pthread_sigmask(SIG_BLOCK, &mThreadBlockSet, NULL);
-
- // Wait for the saver process to signal ready...
- if (!waitForLockProcessStart()) {
- kdDebug( 1204 ) << "Failed to initialize kdesktop_lock (unexpected termination)!" << endl;
- }
-
- // lock the desktop if required
- config->setGroup("X-:0-Core");
- bool autoLoginEnable = config->readBoolEntry("AutoLoginEnable", false);
- bool autoLoginLocked = config->readBoolEntry("AutoLoginLocked", false);
- if (autoLoginEnable && autoLoginLocked) {
- mLockProcess.kill(SIGTTOU);
- mLockProcess.kill(SIGUSR1);
- }
- delete config;
- config = NULL;
-
- // Initialize SmartCard readers
- TDEGenericDevice *hwdevice;
- TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices();
- TDEGenericHardwareList cardReaderList = hwdevices->listByDeviceClass(TDEGenericDeviceType::CryptographicCard);
- for (hwdevice = cardReaderList.first(); hwdevice; hwdevice = cardReaderList.next()) {
- TDECryptographicCardDevice* cdevice = static_cast<TDECryptographicCardDevice*>(hwdevice);
- connect(cdevice, TQT_SIGNAL(certificateListAvailable(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardInserted(TDECryptographicCardDevice*)));
- connect(cdevice, TQT_SIGNAL(cardRemoved(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardRemoved(TDECryptographicCardDevice*)));
- cdevice->enableCardMonitoring(true);
- }
-
- // Check card login status
- KUser userinfo;
- TQString fileName = userinfo.homeDir() + "/.tde_card_login_state";
- TQFile flagFile(fileName);
- if (flagFile.open(IO_ReadOnly)) {
- TQTextStream stream(&flagFile);
- if (stream.readLine().startsWith("1")) {
- // Card was likely used to log in
- TQTimer::singleShot(5000, this, SLOT(cardStartupTimeout()));
- }
- flagFile.close();
- }
-
- dBusConnect();
-}
-
-//---------------------------------------------------------------------------
-//
-// Destructor - usual cleanups.
-//
-SaverEngine::~SaverEngine()
-{
- if (mState == Waiting) {
- kill(mLockProcess.pid(), SIGKILL);
- }
-
- mLockProcess.detach(); // don't kill it if we crash
- delete mXAutoLock;
-
- dBusClose();
-
- // Restore X screensaver parameters
- XSetScreenSaver(tqt_xdisplay(), mXTimeout, mXInterval, mXBlanking,
- mXExposures);
-
- terminateHelperThread();
- m_helperThread->wait();
- delete m_threadHelperObject;
- delete m_helperThread;
-}
-
-void SaverEngine::cardStartupTimeout() {
- if (!mValidCryptoCardInserted) {
- // Restore saver timeout
- configure();
-
- // Force lock
- lockScreen();
- }
-}
-
-void SaverEngine::cryptographicCardInserted(TDECryptographicCardDevice* cdevice) {
- TQString login_name = TQString::null;
- X509CertificatePtrList certList = cdevice->cardX509Certificates();
- if (certList.count() > 0) {
- KSSLCertificate* card_cert = NULL;
- card_cert = KSSLCertificate::fromX509(certList[0]);
- TQStringList cert_subject_parts = TQStringList::split("/", card_cert->getSubject(), false);
- for (TQStringList::Iterator it = cert_subject_parts.begin(); it != cert_subject_parts.end(); ++it ) {
- TQString lcpart = (*it).lower();
- if (lcpart.startsWith("cn=")) {
- login_name = lcpart.right(lcpart.length() - strlen("cn="));
- }
- }
- delete card_cert;
- }
-
- if (login_name != "") {
- KUser user;
- if (login_name == user.loginName()) {
- mValidCryptoCardInserted = true;
- }
- }
-}
-
-void SaverEngine::cryptographicCardRemoved(TDECryptographicCardDevice* cdevice) {
- if (mValidCryptoCardInserted) {
- mValidCryptoCardInserted = false;
-
- // Restore saver timeout
- configure();
-
- // Force lock
- lockScreen();
- }
-}
-
-//---------------------------------------------------------------------------
-//
-// This should be called only using DCOP.
-//
-void SaverEngine::lock()
-{
- lockScreen(true);
-}
-
-//---------------------------------------------------------------------------
-//
-// Lock the screen
-//
-void SaverEngine::lockScreen(bool DCOP)
-{
- if (mValidCryptoCardInserted) {
- return;
- }
-
- bool ok = true;
- if (mState == Waiting)
- {
- ok = startLockProcess( ForceLock );
- // It takes a while for kdesktop_lock to start and lock the screen.
- // Therefore delay the DCOP call until it tells kdesktop that the locking is in effect.
- // This is done only for --forcelock .
- if( ok && mState != Saving )
- {
- if (DCOP) {
- DCOPClientTransaction* trans = kapp->dcopClient()->beginTransaction();
- if (trans) {
- mLockTransactions.append( trans );
- }
- }
- }
- }
- else
- {
- mLockProcess.kill( SIGHUP );
- }
-}
-
-void SaverEngine::processLockTransactions()
-{
- for( TQValueVector< DCOPClientTransaction* >::ConstIterator it = mLockTransactions.begin();
- it != mLockTransactions.end();
- ++it )
- {
- TQCString replyType = "void";
- TQByteArray arr;
- kapp->dcopClient()->endTransaction( *it, replyType, arr );
- }
- mLockTransactions.clear();
-}
-
-void SaverEngine::saverLockReady()
-{
- if( mState != Engaging )
- {
- kdDebug( 1204 ) << "Got unexpected saverReady()" << endl;
- }
- kdDebug( 1204 ) << "Saver Lock Ready" << endl;
- processLockTransactions();
-}
-
-//---------------------------------------------------------------------------
-void SaverEngine::save()
-{
- if (!mValidCryptoCardInserted) {
- if (mState == Waiting) {
- startLockProcess( DefaultLock );
- }
- }
-}
-
-//---------------------------------------------------------------------------
-void SaverEngine::quit()
-{
- if (mState == Saving || mState == Engaging)
- {
- stopLockProcess();
- }
-}
-
-//---------------------------------------------------------------------------
-bool SaverEngine::isEnabled()
-{
- return mEnabled;
-}
-
-//---------------------------------------------------------------------------
-bool SaverEngine::enable( bool e )
-{
- if ( e == mEnabled )
- return true;
-
- // If we aren't in a suitable state, we will not reconfigure.
- if (mState != Waiting)
- return false;
-
- mEnabled = e;
-
- if (mEnabled) {
- if ( !mXAutoLock ) {
- mXAutoLock = new XAutoLock();
- connect(mXAutoLock, TQT_SIGNAL(timeout()), TQT_SLOT(idleTimeout()));
- }
- mXAutoLock->setTimeout(mTimeout);
- mXAutoLock->setDPMS(true);
- //mXAutoLock->changeCornerLockStatus( mLockCornerTopLeft, mLockCornerTopRight, mLockCornerBottomLeft, mLockCornerBottomRight);
-
- // We'll handle blanking
- XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures);
- kdDebug() << "XSetScreenSaver " << mTimeout + 10 << endl;
-
- mXAutoLock->start();
-
- kdDebug(1204) << "Saver Engine started, timeout: " << mTimeout << endl;
- }
- else {
- if (mXAutoLock) {
- delete mXAutoLock;
- mXAutoLock = 0;
- }
-
- XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset );
- XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures);
- kdDebug(1204) << "Saver Engine disabled" << endl;
- }
-
- return true;
-}
-
-//---------------------------------------------------------------------------
-bool SaverEngine::isBlanked()
-{
- return (mState != Waiting);
-}
-
-void SaverEngine::enableExports()
-{
-#ifdef Q_WS_X11
- kdDebug(270) << k_lineinfo << "activating background exports.\n";
- DCOPClient *client = kapp->dcopClient();
- if (!client->isAttached()) {
- client->attach();
- }
- TQByteArray data;
- TQDataStream args( data, IO_WriteOnly );
- args << 1;
-
- TQCString appname( "kdesktop" );
- int screen_number = DefaultScreen(tqt_xdisplay());
- if ( screen_number ) {
- appname.sprintf("kdesktop-screen-%d", screen_number );
- }
-
- client->send( appname, "KBackgroundIface", "setExport(int)", data );
-#endif
-}
-
-//---------------------------------------------------------------------------
-void SaverEngine::handleSecureDialog()
-{
- // Wait for SAK press
- if (mSAKProcess && !mSAKProcess->isRunning()) {
- mSAKProcess->start();
- }
-}
-
-void SaverEngine::slotSAKProcessExited()
-{
- if (!mSAKProcess) {
- printf("[kdesktop] SAK process does not exist. Something went wrong. Ignoring...\n"); fflush(stdout);
- return;
- }
- int retcode = mSAKProcess->exitStatus();
- if ((retcode != 0) && (mSAKProcess->normalExit())) {
- trinity_lockeng_sak_available = FALSE;
- printf("[kdesktop] SAK driven secure dialog is not available for use (retcode %d). Check tdmtsak for proper functionality.\n", retcode); fflush(stdout);
- }
-
- if (mState == Preparing) {
- return;
- }
-
- if ((mSAKProcess->normalExit()) && (trinity_lockeng_sak_available == TRUE)) {
- bool ok = true;
- if (mState == Waiting)
- {
- ok = startLockProcess( SecureDialog );
- if( ok && mState != Saving )
- {
- }
- }
- else
- {
- mLockProcess.kill( SIGHUP );
- }
- }
-}
-
-//---------------------------------------------------------------------------
-//
-// Read and apply configuration.
-//
-void SaverEngine::configure()
-{
- // If we aren't in a suitable state, we will not reconfigure.
- if (mState != Waiting) {
- return;
- }
-
- // create a new config obj to ensure we read the latest options
- KDesktopSettings::self()->readConfig();
-
- bool e = KDesktopSettings::screenSaverEnabled();
- mTimeout = KDesktopSettings::timeout();
-
- mEnabled = !e; // force the enable()
-
- int action;
- action = KDesktopSettings::actionTopLeft();
- xautolock_corners[0] = applyManualSettings(action);
- action = KDesktopSettings::actionTopRight();
- xautolock_corners[1] = applyManualSettings(action);
- action = KDesktopSettings::actionBottomLeft();
- xautolock_corners[2] = applyManualSettings(action);
- action = KDesktopSettings::actionBottomRight();
- xautolock_corners[3] = applyManualSettings(action);
-
- enable( e );
-}
-
-//---------------------------------------------------------------------------
-//
-// Set a variable to indicate only using the blanker and not the saver.
-//
-void SaverEngine::setBlankOnly( bool blankOnly )
-{
- mBlankOnly = blankOnly;
- // FIXME: if running, stop and restart? What about security
- // implications of this?
-}
-
-bool SaverEngine::restartDesktopLockProcess()
-{
- if (!mLockProcess.isRunning()) {
- mSaverProcessReady = false;
- mLockProcess.clearArguments();
- TQString path = TDEStandardDirs::findExe( "kdesktop_lock" );
- if (path.isEmpty()) {
- kdDebug( 1204 ) << "Can't find kdesktop_lock!" << endl;
- return false;
- }
- mLockProcess << path;
- mLockProcess << TQString( "--internal" ) << TQString( "%1" ).arg(getpid());
- if (mLockProcess.start() == false) {
- kdDebug( 1204 ) << "Failed to start kdesktop_lock!" << endl;
- return false;
- }
- // Wait for the saver process to signal ready...
- if (!waitForLockProcessStart()) {
- kdDebug( 1204 ) << "Failed to initialize kdesktop_lock (unexpected termination)!" << endl;
- return false;
- }
- }
- return true;
-}
-
-//---------------------------------------------------------------------------
-//
-// Start the screen saver.
-//
-bool SaverEngine::startLockProcess( LockType lock_type )
-{
- int ret;
-
- if (mState == Saving) {
- return true;
- }
-
- mState = Preparing;
- if (mSAKProcess) {
- mSAKProcess->kill(SIGTERM);
- }
-
- enableExports();
-
- kdDebug(1204) << "SaverEngine: starting saver" << endl;
- emitDCOPSignal("KDE_start_screensaver()", TQByteArray());
-
- if (!restartDesktopLockProcess()) {
- mState = Waiting;
- return false;
- }
-
- switch( lock_type )
- {
- case ForceLock:
- mLockProcess.kill(SIGUSR1); // Request forcelock
- break;
- case DontLock:
- mLockProcess.kill(SIGUSR2); // Request dontlock
- break;
- case SecureDialog:
- mLockProcess.kill(SIGWINCH); // Request secure dialog
- break;
- default:
- break;
- }
- if (mBlankOnly) {
- mLockProcess.kill(SIGTTIN); // Request blanking
- }
-
- ret = mLockProcess.kill(SIGTTOU); // Start lock
- if (!ret) {
- mState = Waiting;
- return false;
- }
- XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, mXExposures);
-
- mState = Engaging;
- if (mXAutoLock) {
- mXAutoLock->stop();
- }
- return true;
-}
-
-//---------------------------------------------------------------------------
-//
-// Stop the screen saver.
-//
-void SaverEngine::stopLockProcess()
-{
- if (mState == Waiting) {
- kdWarning(1204) << "SaverEngine::stopSaver() saver not active" << endl;
- return;
- }
- kdDebug(1204) << "SaverEngine: stopping lock" << endl;
- emitDCOPSignal("KDE_stop_screensaver()", TQByteArray());
-
- mTerminationRequested = true;
- mLockProcess.kill();
-
- if (mEnabled) {
- if (mXAutoLock) {
- mXAutoLock->start();
- }
- XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset );
- XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures);
- }
- processLockTransactions();
- mState = Waiting;
-
- if( systemdSession && systemdSession->canSend() ) {
- TQValueList<TQT_DBusData> params;
- params << TQT_DBusData::fromBool(false);
- TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params);
- }
-}
-
-void SaverEngine::recoverFromHackingAttempt()
-{
- // Try to relaunch saver with forcelock
- if (!startLockProcess(ForceLock)) {
- // Terminate the TDE session ASAP!
- // Values are explained at http://lists.kde.org/?l=kde-linux&m=115770988603387
- TQByteArray data;
- TQDataStream arg(data, IO_WriteOnly);
- arg << (int)0 << (int)0 << (int)2;
- if (!kapp->dcopClient()->send("ksmserver", "default", "logout(int,int,int)", data)) {
- // Someone got to DCOP before we did
- // Try an emergency system logout
- system("logout");
- }
- }
-}
-
-void SaverEngine::lockProcessExited()
-{
- bool abnormalExit = false;
- if (mLockProcess.normalExit() == false) {
- abnormalExit = true;
- }
- else {
- if (mLockProcess.exitStatus() != 0) {
- abnormalExit = true;
- }
- }
- if (mTerminationRequested == true) {
- abnormalExit = false;
- mTerminationRequested = false;
- }
- if (abnormalExit == true) {
- // PROBABLE HACKING ATTEMPT DETECTED
- restartDesktopLockProcess();
- mState = Waiting;
- TQTimer::singleShot( 100, this, SLOT(recoverFromHackingAttempt()) );
- }
- else {
- // Restart the lock process
- restartDesktopLockProcess();
- }
-}
-
-void SaverEngineThreadHelperObject::slotLockProcessWaiting()
-{
- // lockProcessWaiting cannot be called directly from a signal handler, as it will hang in certain obscure circumstances
- // Instead we use a single-shot timer to immediately call lockProcessWaiting once control has returned to the Qt main loop
- lockProcessWaiting();
-}
-
-void SaverEngineThreadHelperObject::slotLockProcessFullyActivated()
-{
- lockProcessFullyActivated();
-}
-
-void SaverEngine::lockProcessFullyActivated()
-{
- mState = Saving;
-
- if( systemdSession && systemdSession->canSend() ) {
- TQValueList<TQT_DBusData> params;
- params << TQT_DBusData::fromBool(true);
- TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params);
- }
-
- if (mNewVTAfterLockEngage) {
- DM().startReserve();
- mNewVTAfterLockEngage = false;
- }
- else if (mSwitchVTAfterLockEngage != -1) {
- DM().switchVT(mSwitchVTAfterLockEngage);
- mSwitchVTAfterLockEngage = -1;
- }
-}
-
-void SaverEngine::slotLockProcessReady()
-{
- mSaverProcessReady = true;
-}
-
-void SaverEngine::lockProcessWaiting()
-{
- kdDebug(1204) << "SaverEngine: lock exited" << endl;
- if (trinity_lockeng_sak_available == TRUE) {
- handleSecureDialog();
- }
- if( mState == Waiting ) {
- return;
- }
- emitDCOPSignal("KDE_stop_screensaver()", TQByteArray());
- if (mEnabled) {
- if (mXAutoLock) {
- mXAutoLock->start();
- }
- XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset );
- XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures);
- }
- processLockTransactions();
- mState = Waiting;
-
- if( systemdSession && systemdSession->canSend() ) {
- TQValueList<TQT_DBusData> params;
- params << TQT_DBusData::fromBool(false);
- TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params);
- }
-}
-
-//---------------------------------------------------------------------------
-//
-// XAutoLock has detected the required idle time.
-//
-void SaverEngine::idleTimeout()
-{
- if (!mValidCryptoCardInserted) {
- // disable X screensaver
- XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset );
- XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures);
- startLockProcess( DefaultLock );
- }
-}
-
-xautolock_corner_t SaverEngine::applyManualSettings(int action)
-{
- if (action == 0) {
- kdDebug() << "no lock" << endl;
- return ca_nothing;
- }
- else if (action == 1) {
- kdDebug() << "lock screen" << endl;
- return ca_forceLock;
- }
- else if (action == 2) {
- kdDebug() << "prevent lock" << endl;
- return ca_dontLock;
- }
- else{
- kdDebug() << "no lock nothing" << endl;
- return ca_nothing;
- }
-}
-
-/*!
- * This function try a reconnect to D-Bus.
- * \return boolean with the result of the operation
- * \retval true if successful reconnected to D-Bus
- * \retval false if unsuccessful
- */
-bool SaverEngine::dBusReconnect() {
- // close D-Bus connection
- dBusClose();
- // init D-Bus conntection
- return (dBusConnect());
-}
-
-/*!
- * This function is used to close D-Bus connection.
- */
-void SaverEngine::dBusClose() {
- if( dBusConn.isConnected() ) {
- if( dBusLocal ) {
- delete dBusLocal;
- dBusLocal = 0;
- }
- if( dBusWatch ) {
- delete dBusWatch;
- dBusWatch = 0;
- }
- if( systemdSession ) {
- delete systemdSession;
- systemdSession = 0;
- }
- }
- dBusConn.closeConnection(DBUS_CONN_NAME);
-}
-
-/*!
- * This function is used to connect to D-Bus.
- */
-bool SaverEngine::dBusConnect() {
- dBusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus, DBUS_CONN_NAME);
- if( !dBusConn.isConnected() ) {
- kdError() << "Failed to open connection to system message bus: " << dBusConn.lastError().message() << endl;
- TQTimer::singleShot(4000, this, TQT_SLOT(dBusReconnect()));
- return false;
- }
-
- // watcher for Disconnect signal
- dBusLocal = new TQT_DBusProxy(DBUS_SERVICE_DBUS, DBUS_PATH_LOCAL, DBUS_INTERFACE_LOCAL, dBusConn);
- TQObject::connect(dBusLocal, TQT_SIGNAL(dbusSignal(const TQT_DBusMessage&)),
- this, TQT_SLOT(handleDBusSignal(const TQT_DBusMessage&)));
-
- // watcher for NameOwnerChanged signals
- dBusWatch = new TQT_DBusProxy(DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, dBusConn);
- TQObject::connect(dBusWatch, TQT_SIGNAL(dbusSignal(const TQT_DBusMessage&)),
- this, TQT_SLOT(handleDBusSignal(const TQT_DBusMessage&)));
-
- // find already running SystemD
- TQT_DBusProxy checkSystemD(DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, dBusConn);
- if( checkSystemD.canSend() ) {
- TQValueList<TQT_DBusData> params;
- params << TQT_DBusData::fromString(SYSTEMD_LOGIN1_SERVICE);
- TQT_DBusMessage reply = checkSystemD.sendWithReply("NameHasOwner", params);
- if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1 && reply[0].toBool() ) {
- onDBusServiceRegistered(SYSTEMD_LOGIN1_SERVICE);
- }
- }
- return true;
-}
-
-/*!
- * This function handles D-Bus service registering
- */
-void SaverEngine::onDBusServiceRegistered(const TQString& service) {
- if( service == SYSTEMD_LOGIN1_SERVICE ) {
- // get current systemd session
- TQT_DBusProxy managerIface(SYSTEMD_LOGIN1_SERVICE, SYSTEMD_LOGIN1_PATH, SYSTEMD_LOGIN1_MANAGER_IFACE, dBusConn);
- TQT_DBusObjectPath systemdSessionPath = TQT_DBusObjectPath();
- if( managerIface.canSend() ) {
- TQValueList<TQT_DBusData> params;
- params << TQT_DBusData::fromUInt32( getpid() );
- TQT_DBusMessage reply = managerIface.sendWithReply("GetSessionByPID", params);
- if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1 ) {
- systemdSessionPath = reply[0].toObjectPath();
- }
- }
- // wather for systemd session signals
- if( systemdSessionPath.isValid() ) {
- systemdSession = new TQT_DBusProxy(SYSTEMD_LOGIN1_SERVICE, systemdSessionPath, SYSTEMD_LOGIN1_SESSION_IFACE, dBusConn);
- TQObject::connect(systemdSession, TQT_SIGNAL(dbusSignal(const TQT_DBusMessage&)),
- this, TQT_SLOT(handleDBusSignal(const TQT_DBusMessage&)));
- }
- return;
- }
-}
-
-/*!
- * This function handles D-Bus service unregistering
- */
-void SaverEngine::onDBusServiceUnregistered(const TQString& service) {
- if( service == SYSTEMD_LOGIN1_SERVICE ) {
- if( systemdSession ) {
- delete systemdSession;
- systemdSession = 0;
- }
- return;
- }
-}
-
-/*!
- * This function handles signals from the D-Bus daemon.
- */
-void SaverEngine::handleDBusSignal(const TQT_DBusMessage& msg) {
- // dbus terminated
- if( msg.path() == DBUS_PATH_LOCAL
- && msg.interface() == DBUS_INTERFACE_LOCAL
- && msg.member() == "Disconnected" ) {
- dBusClose();
- TQTimer::singleShot(1000, this, TQT_SLOT(dBusReconnect()));
- return;
- }
-
- // service registered / unregistered
- if( msg.path() == DBUS_PATH_DBUS
- && msg.interface() == DBUS_INTERFACE_DBUS
- && msg.member() == "NameOwnerChanged" ) {
- if( msg[1].toString().isEmpty() ) {
- // old-owner is empty
- onDBusServiceRegistered(msg[0].toString());
- }
- if( msg[2].toString().isEmpty() ) {
- // new-owner is empty
- onDBusServiceUnregistered(msg[0].toString());
- }
- return;
- }
-
- // systemd signal Lock()
- if( systemdSession && systemdSession->canSend()
- && msg.path() == systemdSession->path()
- && msg.interface() == SYSTEMD_LOGIN1_SESSION_IFACE
- && msg.member() == "Lock") {
- lockScreen();
- return;
- }
-
- // systemd signal Unlock()
- if( systemdSession && systemdSession->canSend()
- && msg.path() == systemdSession->path()
- && msg.interface() == SYSTEMD_LOGIN1_SESSION_IFACE
- && msg.member() == "Unlock") {
- // unlock?
- return;
- }
-}
-
-bool SaverEngine::waitForLockProcessStart() {
- sigset_t new_mask;
- sigset_t empty_mask;
- sigemptyset(&empty_mask);
-
- // ensure that SIGCHLD is not subject to a race condition
- sigemptyset(&new_mask);
- sigaddset(&new_mask, SIGCHLD);
-
- pthread_sigmask(SIG_BLOCK, &new_mask, NULL);
- while ((mLockProcess.isRunning()) && (!mSaverProcessReady)) {
- // wait for any signal(s) to arrive
- sigsuspend(&empty_mask);
- }
- pthread_sigmask(SIG_UNBLOCK, &new_mask, NULL);
-
- return mLockProcess.isRunning();
-}
-
-bool SaverEngine::waitForLockEngage() {
- sigset_t empty_mask;
- sigemptyset(&empty_mask);
-
- // wait for SIGUSR1, SIGUSR2, SIGTTIN
- while ((mLockProcess.isRunning()) && (mState != Waiting) && (mState != Saving)) {
- // wait for any signal(s) to arrive
- sigsuspend(&empty_mask);
- }
-
- return mLockProcess.isRunning();
-}
-
-void SaverEngine::lockScreenAndDoNewSession() {
- mNewVTAfterLockEngage = true;
- lockScreen();
-}
-
-void SaverEngine::lockScreenAndSwitchSession(int vt) {
- mSwitchVTAfterLockEngage = vt;
- lockScreen();
-}
-
-void SaverEngineThreadHelperObject::terminateThread() {
- TQEventLoop* eventLoop = TQApplication::eventLoop();
- if (eventLoop) {
- eventLoop->exit(0);
- }
-}
diff --git a/kdesktop/lockeng.cpp b/kdesktop/lockeng.cpp
new file mode 100644
index 000000000..fc3c9db6e
--- /dev/null
+++ b/kdesktop/lockeng.cpp
@@ -0,0 +1,1049 @@
+//===========================================================================
+//
+// This file is part of the TDE project
+//
+// Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+// Copyright (c) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+//
+
+#include <config.h>
+
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <tdeglobal.h>
+
+#ifdef WITH_TDEHWLIB
+#include <ksslcertificate.h>
+#include <kuser.h>
+#include <tdehardwaredevices.h>
+#include <tdecryptographiccarddevice.h>
+#endif
+
+#include <tdestandarddirs.h>
+#include <tdeapplication.h>
+#include <kservicegroup.h>
+#include <tdesimpleconfig.h>
+#include <kdebug.h>
+#include <tdelocale.h>
+#include <tqfile.h>
+#include <tqtimer.h>
+#include <tqeventloop.h>
+#include <dcopclient.h>
+#include <assert.h>
+
+#include <dmctl.h>
+
+#include <dbus/dbus-shared.h>
+#include <tqdbusdata.h>
+#include <tqdbuserror.h>
+#include <tqdbusmessage.h>
+#include <tqdbusobjectpath.h>
+#include <tqdbusproxy.h>
+
+#include "lockeng.h"
+#include "lockeng.moc"
+#include "kdesktopsettings.h"
+
+#include "xautolock_c.h"
+
+#define SYSTEMD_LOGIN1_SERVICE "org.freedesktop.login1"
+#define SYSTEMD_LOGIN1_MANAGER_IFACE "org.freedesktop.login1.Manager"
+#define SYSTEMD_LOGIN1_SESSION_IFACE "org.freedesktop.login1.Session"
+#define SYSTEMD_LOGIN1_SEAT_IFACE "org.freedesktop.login1.Seat"
+#define SYSTEMD_LOGIN1_PATH "/org/freedesktop/login1"
+
+#define DBUS_CONN_NAME "kdesktop_lock"
+
+extern xautolock_corner_t xautolock_corners[ 4 ];
+bool trinity_lockeng_sak_available = true;
+
+SaverEngineEventHandler *gbl_saverEngineEventHandler = nullptr;
+
+static void sigusr1_handler(int)
+{
+ if (gbl_saverEngineEventHandler)
+ {
+ gbl_saverEngineEventHandler->lockCompleted();
+ }
+}
+
+static void sigusr2_handler(int)
+{
+ if (gbl_saverEngineEventHandler)
+ {
+ gbl_saverEngineEventHandler->lockFullyActivated();
+ }
+}
+
+static void sigttin_handler(int)
+{
+ if (gbl_saverEngineEventHandler)
+ {
+ gbl_saverEngineEventHandler->lockReady();
+ }
+}
+
+SaverEngine::SaverEngine()
+ : TQObject(),
+ KScreensaverIface(),
+ mBlankOnly(false),
+ mNewVTAfterLockEngage(false),
+ mValidCryptoCardInserted(false),
+ mSwitchVTAfterLockEngage(-1),
+ dBusLocal(0),
+ dBusWatch(0),
+ systemdSession(0)
+{
+ // handle SIGUSR1
+ mSignalAction.sa_handler= sigusr1_handler;
+ sigemptyset(&(mSignalAction.sa_mask));
+ sigaddset(&(mSignalAction.sa_mask), SIGUSR1);
+ mSignalAction.sa_flags = 0;
+ sigaction(SIGUSR1, &mSignalAction, 0L);
+
+ // handle SIGUSR2
+ mSignalAction.sa_handler= sigusr2_handler;
+ sigemptyset(&(mSignalAction.sa_mask));
+ sigaddset(&(mSignalAction.sa_mask), SIGUSR2);
+ mSignalAction.sa_flags = 0;
+ sigaction(SIGUSR2, &mSignalAction, 0L);
+
+ // handle SIGTTIN (as custom user signal rather than its inherent meaning)
+ mSignalAction.sa_handler= sigttin_handler;
+ sigemptyset(&(mSignalAction.sa_mask));
+ sigaddset(&(mSignalAction.sa_mask), SIGTTIN);
+ mSignalAction.sa_flags = 0;
+ sigaction(SIGTTIN, &mSignalAction, 0L);
+
+ // Save X screensaver parameters
+ XGetScreenSaver(tqt_xdisplay(), &mXTimeout, &mXInterval, &mXBlanking, &mXExposures);
+
+ // Create event handler thread, event loop and object
+ m_eventHandlerThread = new TQEventLoopThread;
+ m_eventHandlerThread->start();
+ m_saverEngineEventHandler = new SaverEngineEventHandler(this);
+ gbl_saverEngineEventHandler = m_saverEngineEventHandler;
+ m_saverEngineEventHandler->moveToThread(m_eventHandlerThread);
+ connect(this, TQ_SIGNAL(terminateEventHandlerThread()), m_saverEngineEventHandler, TQ_SLOT(terminateThread()));
+ connect(this, TQ_SIGNAL(lockScreenSignal(bool)), m_saverEngineEventHandler, TQ_SLOT(lockScreen(bool)));
+ connect(this, TQ_SIGNAL(activateSaverOrLockSignal(LockType)),
+ m_saverEngineEventHandler, TQ_SLOT(activateSaverOrLock(LockType)));
+
+ mXAutoLock = nullptr;
+ mEnabled = false;
+
+ configure();
+
+ // Prevent kdesktop_lock signals from being handled by the main GUI thread.
+ // Those signals will be handled by m_eventHandlerThread instead
+ //
+ // Make sure to keep this code after the constructor of `m_eventHandlerThread`, so that
+ // the new thread starts with the signals unblocked.
+ sigset_t sigBlockMask;
+ sigemptyset(&sigBlockMask);
+ sigaddset(&sigBlockMask, SIGUSR1);
+ sigaddset(&sigBlockMask, SIGUSR2);
+ sigaddset(&sigBlockMask, SIGTTIN);
+ sigaddset(&sigBlockMask, SIGCHLD);
+ pthread_sigmask(SIG_BLOCK, &sigBlockMask, NULL);
+
+ // Start SAK and lock processes
+ TQTimer::singleShot(0, m_saverEngineEventHandler, TQ_SLOT(restartLockProcess()));
+
+#ifdef WITH_TDEHWLIB
+ // Initialize SmartCard readers
+ TDEGenericDevice *hwdevice;
+ TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices();
+ TDEGenericHardwareList cardReaderList = hwdevices->listByDeviceClass(TDEGenericDeviceType::CryptographicCard);
+ for (hwdevice = cardReaderList.first(); hwdevice; hwdevice = cardReaderList.next())
+ {
+ TDECryptographicCardDevice *cdevice = static_cast<TDECryptographicCardDevice*>(hwdevice);
+ connect(cdevice, TQ_SIGNAL(certificateListAvailable(TDECryptographicCardDevice*)),
+ this, TQ_SLOT(cryptographicCardInserted(TDECryptographicCardDevice*)));
+ connect(cdevice, TQ_SIGNAL(cardRemoved(TDECryptographicCardDevice*)),
+ this, TQ_SLOT(cryptographicCardRemoved(TDECryptographicCardDevice*)));
+ cdevice->enableCardMonitoring(true);
+ }
+
+ // Check card login status
+ KUser userinfo;
+ TQString fileName = userinfo.homeDir() + "/.tde_card_login_state";
+ TQFile flagFile(fileName);
+ if (flagFile.open(IO_ReadOnly))
+ {
+ TQTextStream stream(&flagFile);
+ if (stream.readLine().startsWith("1"))
+ {
+ // Card was likely used to log in
+ TQTimer::singleShot(5000, this, TQ_SLOT(cardStartupTimeout()));
+ }
+ flagFile.close();
+ }
+#endif
+
+ dBusConnect();
+}
+
+SaverEngine::~SaverEngine()
+{
+ m_saverEngineEventHandler->terminateLockProcess();
+ delete mXAutoLock;
+ dBusClose();
+
+ // Restore X screensaver parameters
+ XSetScreenSaver(tqt_xdisplay(), mXTimeout, mXInterval, mXBlanking, mXExposures);
+ emit terminateEventHandlerThread();
+ m_eventHandlerThread->wait();
+ delete m_saverEngineEventHandler;
+ delete m_eventHandlerThread;
+}
+
+void SaverEngine::cardStartupTimeout()
+{
+ if (!mValidCryptoCardInserted)
+ {
+ configure(); // Restore saver timeout
+ lockScreen(); // Force lock
+ }
+}
+
+void SaverEngine::cryptographicCardInserted(TDECryptographicCardDevice* cdevice)
+{
+#ifdef WITH_TDEHWLIB
+ TQString login_name = TQString::null;
+ X509CertificatePtrList certList = cdevice->cardX509Certificates();
+ if (certList.count() > 0)
+ {
+ KSSLCertificate* card_cert = NULL;
+ card_cert = KSSLCertificate::fromX509(certList[0]);
+ TQStringList cert_subject_parts = TQStringList::split("/", card_cert->getSubject(), false);
+ for (TQStringList::Iterator it = cert_subject_parts.begin(); it != cert_subject_parts.end(); ++it)
+ {
+ TQString lcpart = (*it).lower();
+ if (lcpart.startsWith("cn="))
+ {
+ login_name = lcpart.right(lcpart.length() - strlen("cn="));
+ }
+ }
+ delete card_cert;
+ }
+
+ if (login_name != "")
+ {
+ KUser user;
+ if (login_name == user.loginName())
+ {
+ mValidCryptoCardInserted = true;
+ }
+ }
+#endif
+}
+
+void SaverEngine::cryptographicCardRemoved(TDECryptographicCardDevice* cdevice)
+{
+#ifdef WITH_TDEHWLIB
+ if (mValidCryptoCardInserted)
+ {
+ mValidCryptoCardInserted = false;
+
+ // Restore saver timeout
+ configure();
+
+ // Force lock
+ lockScreen();
+ }
+#endif
+}
+
+// DCOP interface method
+void SaverEngine::lock()
+{
+ lockScreen(true);
+}
+
+void SaverEngine::lockScreen(bool dcop)
+{
+ if (mValidCryptoCardInserted)
+ {
+ kdDebug(1204) << "SaverEngine: crypto card inserted, ignore lock request" << endl;
+ return;
+ }
+ emit lockScreenSignal(dcop);
+}
+
+void SaverEngine::lockScreenGUI()
+{
+ DCOPClientTransaction *trans = tdeApp->dcopClient()->beginTransaction();
+ if (trans)
+ {
+ mLockTransactions.append(trans);
+ }
+}
+
+void SaverEngine::processLockTransactions()
+{
+ TQValueVector<DCOPClientTransaction*>::ConstIterator it = mLockTransactions.begin();
+ for (; it != mLockTransactions.end(); ++it)
+ {
+ TQCString replyType = "void";
+ TQByteArray arr;
+ tdeApp->dcopClient()->endTransaction(*it, replyType, arr);
+ }
+ mLockTransactions.clear();
+}
+
+void SaverEngine::saverLockReady()
+{
+ if (m_saverEngineEventHandler->getState() != SaverState::Engaging)
+ {
+ kdDebug(1204) << "Got unexpected saverLockReady()" << endl;
+ }
+
+ kdDebug(1204) << "Saver Lock Ready" << endl;
+ processLockTransactions();
+}
+
+// DCOP interface method
+void SaverEngine::save()
+{
+ if (mValidCryptoCardInserted)
+ {
+ kdDebug(1204) << "SaverEngine: crypto card inserted, ignore save request" << endl;
+ return;
+ }
+ TQTimer::singleShot(0, m_saverEngineEventHandler, TQ_SLOT(saveScreen()));
+}
+
+// DCOP interface method
+void SaverEngine::quit()
+{
+ TQTimer::singleShot(0, m_saverEngineEventHandler, TQ_SLOT(stopLockProcess()));
+}
+
+// DCOP interface method
+bool SaverEngine::isEnabled()
+{
+ return mEnabled;
+}
+
+// DCOP interface method
+bool SaverEngine::enable(bool e)
+{
+ if (e == mEnabled)
+ return true;
+
+ // If we aren't in a suitable state, we will not reconfigure.
+ if (m_saverEngineEventHandler->getState() != SaverState::Waiting)
+ return false;
+
+ mEnabled = e;
+
+ if (mEnabled)
+ {
+ if (!mXAutoLock)
+ {
+ mXAutoLock = new XAutoLock();
+ connect(mXAutoLock, TQ_SIGNAL(timeout()), TQ_SLOT(idleTimeout()));
+ }
+ mXAutoLock->setTimeout(mTimeout);
+ mXAutoLock->setDPMS(true);
+
+ // We'll handle blanking
+ XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures);
+ mXAutoLock->start();
+ kdDebug(1204) << "Saver engine started, timeout: " << mTimeout << endl;
+ }
+ else
+ {
+ if (mXAutoLock)
+ {
+ delete mXAutoLock;
+ mXAutoLock = nullptr;
+ }
+
+ XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset);
+ XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures);
+ kdDebug(1204) << "Saver engine disabled" << endl;
+ }
+
+ return true;
+}
+
+// DCOP interface method
+bool SaverEngine::isBlanked()
+{
+ return (m_saverEngineEventHandler->getState() != SaverState::Waiting);
+}
+
+void SaverEngine::enableExports()
+{
+#ifdef TQ_WS_X11
+ kdDebug(270) << k_lineinfo << "activating background exports" << endl;
+ DCOPClient *client = tdeApp->dcopClient();
+ if (!client->isAttached())
+ {
+ client->attach();
+ }
+ TQByteArray data;
+ TQDataStream args(data, IO_WriteOnly);
+ args << 1;
+
+ TQCString appname("kdesktop");
+ int screen_number = DefaultScreen(tqt_xdisplay());
+ if (screen_number)
+ {
+ appname.sprintf("kdesktop-screen-%d", screen_number);
+ }
+
+ client->send(appname, "KBackgroundIface", "setExport(int)", data);
+#endif
+}
+
+// Read and apply configuration.
+void SaverEngine::configure()
+{
+ // If we aren't in a suitable state, we will not reconfigure.
+ if (m_saverEngineEventHandler->getState() != SaverState::Waiting)
+ {
+ return;
+ }
+
+ // create a new config obj to ensure we read the latest options
+ KDesktopSettings::self()->readConfig();
+
+ mTimeout = KDesktopSettings::timeout();
+ bool e = KDesktopSettings::screenSaverEnabled();
+ mEnabled = !e; // enable the screensaver by forcibly toggling it
+ enable(e);
+
+ int action;
+ action = KDesktopSettings::actionTopLeft();
+ xautolock_corners[0] = applyManualSettings(action);
+ action = KDesktopSettings::actionTopRight();
+ xautolock_corners[1] = applyManualSettings(action);
+ action = KDesktopSettings::actionBottomLeft();
+ xautolock_corners[2] = applyManualSettings(action);
+ action = KDesktopSettings::actionBottomRight();
+ xautolock_corners[3] = applyManualSettings(action);
+}
+
+// DCOP interface method
+// Set a variable to indicate only to blank the screen and not use the saver
+void SaverEngine::setBlankOnly(bool blankOnly)
+{
+ mBlankOnly = blankOnly;
+}
+
+void SaverEngine::activateSaverOrLockGUI()
+{
+ XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, mXExposures);
+ if (mXAutoLock)
+ {
+ mXAutoLock->stop();
+ }
+ emitDCOPSignal("KDE_start_screensaver()", TQByteArray());
+}
+
+void SaverEngine::stopLockProcessGUI()
+{
+ emitDCOPSignal("KDE_stop_screensaver()", TQByteArray());
+
+ if (mEnabled)
+ {
+ if (mXAutoLock)
+ {
+ mXAutoLock->start();
+ }
+ XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset);
+ XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures);
+ }
+ processLockTransactions();
+
+ if (systemdSession && systemdSession->canSend())
+ {
+ TQValueList<TQT_DBusData> params;
+ params << TQT_DBusData::fromBool(false);
+ TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params);
+ }
+}
+
+void SaverEngine::terminateTDESession()
+{
+ // Terminate the TDE session ASAP!
+ // Values are explained at http://lists.kde.org/?l=kde-linux&m=115770988603387
+ TQByteArray data;
+ TQDataStream arg(data, IO_WriteOnly);
+ arg << (int)0 << (int)0 << (int)2;
+ if (!tdeApp->dcopClient()->send("ksmserver", "default", "logout(int,int,int)", data))
+ {
+ // Someone got to DCOP before we did. Try an emergency system logout
+ system("logout");
+ }
+}
+
+void SaverEngine::lockProcessFullyActivatedGUI()
+{
+ if (systemdSession && systemdSession->canSend())
+ {
+ TQValueList<TQT_DBusData> params;
+ params << TQT_DBusData::fromBool(true);
+ TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params);
+ }
+
+ if (mNewVTAfterLockEngage)
+ {
+ DM().startReserve();
+ mNewVTAfterLockEngage = false;
+ }
+ else if (mSwitchVTAfterLockEngage != -1)
+ {
+ DM().switchVT(mSwitchVTAfterLockEngage);
+ mSwitchVTAfterLockEngage = -1;
+ }
+}
+
+// XAutoLock has detected the required idle time.
+void SaverEngine::idleTimeout()
+{
+ if (!mValidCryptoCardInserted)
+ {
+ // disable X screensaver
+ XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset);
+ XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures);
+ emit activateSaverOrLockSignal(DefaultLock);
+ }
+}
+
+xautolock_corner_t SaverEngine::applyManualSettings(int action)
+{
+ if (action == 0)
+ {
+ kdDebug() << "no lock" << endl;
+ return ca_nothing;
+ }
+ else if (action == 1)
+ {
+ kdDebug() << "lock screen" << endl;
+ return ca_forceLock;
+ }
+ else if (action == 2)
+ {
+ kdDebug() << "prevent lock" << endl;
+ return ca_dontLock;
+ }
+ else
+ {
+ kdDebug() << "no lock nothing" << endl;
+ return ca_nothing;
+ }
+}
+
+/*
+ * This function try to reconnect to D-Bus.
+ * \return boolean with the result of the operation
+ * \retval true if successful reconnected to D-Bus
+ * \retval false if unsuccessful
+ */
+bool SaverEngine::dBusReconnect()
+{
+ dBusClose(); // close D-Bus connection
+ return (dBusConnect()); // init D-Bus conntection
+}
+
+// This function is used to close D-Bus connection.
+void SaverEngine::dBusClose()
+{
+ if (dBusConn.isConnected())
+ {
+ if (dBusLocal)
+ {
+ delete dBusLocal;
+ dBusLocal = nullptr;
+ }
+ if (dBusWatch)
+ {
+ delete dBusWatch;
+ dBusWatch = nullptr;
+ }
+ if (systemdSession)
+ {
+ delete systemdSession;
+ systemdSession = nullptr;
+ }
+ }
+ dBusConn.closeConnection(DBUS_CONN_NAME);
+}
+
+// This function is used to connect to D-Bus.
+bool SaverEngine::dBusConnect()
+{
+ dBusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus, DBUS_CONN_NAME);
+ if (!dBusConn.isConnected())
+ {
+ kdError() << "Failed to open connection to system message bus: " << dBusConn.lastError().message() << endl;
+ TQTimer::singleShot(4000, this, TQ_SLOT(dBusReconnect()));
+ return false;
+ }
+
+ // watcher for Disconnect signal
+ dBusLocal = new TQT_DBusProxy(DBUS_SERVICE_DBUS, DBUS_PATH_LOCAL, DBUS_INTERFACE_LOCAL, dBusConn);
+ TQObject::connect(dBusLocal, TQ_SIGNAL(dbusSignal(const TQT_DBusMessage&)),
+ this, TQ_SLOT(handleDBusSignal(const TQT_DBusMessage&)));
+
+ // watcher for NameOwnerChanged signals
+ dBusWatch = new TQT_DBusProxy(DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, dBusConn);
+ TQObject::connect(dBusWatch, TQ_SIGNAL(dbusSignal(const TQT_DBusMessage&)),
+ this, TQ_SLOT(handleDBusSignal(const TQT_DBusMessage&)));
+
+ // find already running SystemD
+ TQT_DBusProxy checkSystemD(DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, dBusConn);
+ if (checkSystemD.canSend())
+ {
+ TQValueList<TQT_DBusData> params;
+ params << TQT_DBusData::fromString(SYSTEMD_LOGIN1_SERVICE);
+ TQT_DBusMessage reply = checkSystemD.sendWithReply("NameHasOwner", params);
+ if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1 && reply[0].toBool())
+ {
+ onDBusServiceRegistered(SYSTEMD_LOGIN1_SERVICE);
+ }
+ }
+ return true;
+}
+
+// This function handles D-Bus service registering
+void SaverEngine::onDBusServiceRegistered(const TQString& service)
+{
+ if (service == SYSTEMD_LOGIN1_SERVICE)
+ {
+ // get current systemd session
+ TQT_DBusProxy managerIface(SYSTEMD_LOGIN1_SERVICE, SYSTEMD_LOGIN1_PATH, SYSTEMD_LOGIN1_MANAGER_IFACE, dBusConn);
+ TQT_DBusObjectPath systemdSessionPath = TQT_DBusObjectPath();
+ if (managerIface.canSend())
+ {
+ TQValueList<TQT_DBusData> params;
+ params << TQT_DBusData::fromUInt32(getpid());
+ TQT_DBusMessage reply = managerIface.sendWithReply("GetSessionByPID", params);
+ if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1)
+ {
+ systemdSessionPath = reply[0].toObjectPath();
+ }
+ }
+ // wather for systemd session signals
+ if (systemdSessionPath.isValid())
+ {
+ systemdSession = new TQT_DBusProxy(SYSTEMD_LOGIN1_SERVICE, systemdSessionPath, SYSTEMD_LOGIN1_SESSION_IFACE, dBusConn);
+ TQObject::connect(systemdSession, TQ_SIGNAL(dbusSignal(const TQT_DBusMessage&)),
+ this, TQ_SLOT(handleDBusSignal(const TQT_DBusMessage&)));
+ }
+ return;
+ }
+}
+
+// This function handles D-Bus service unregistering
+void SaverEngine::onDBusServiceUnregistered(const TQString& service)
+{
+ if (service == SYSTEMD_LOGIN1_SERVICE)
+ {
+ if (systemdSession)
+ {
+ delete systemdSession;
+ systemdSession = nullptr;
+ }
+ return;
+ }
+}
+
+// This function handles signals from the D-Bus daemon.
+void SaverEngine::handleDBusSignal(const TQT_DBusMessage& msg)
+{
+ // dbus terminated
+ if (msg.path() == DBUS_PATH_LOCAL && msg.interface() == DBUS_INTERFACE_LOCAL &&
+ msg.member() == "Disconnected")
+ {
+ dBusClose();
+ TQTimer::singleShot(1000, this, TQ_SLOT(dBusReconnect()));
+ return;
+ }
+
+ // service registered / unregistered
+ if (msg.path() == DBUS_PATH_DBUS && msg.interface() == DBUS_INTERFACE_DBUS &&
+ msg.member() == "NameOwnerChanged")
+ {
+ if (msg[1].toString().isEmpty())
+ {
+ // old-owner is empty
+ onDBusServiceRegistered(msg[0].toString());
+ }
+ if (msg[2].toString().isEmpty())
+ {
+ // new-owner is empty
+ onDBusServiceUnregistered(msg[0].toString());
+ }
+ return;
+ }
+
+ // systemd signal Lock()
+ if (systemdSession && systemdSession->canSend() && msg.path() == systemdSession->path() &&
+ msg.interface() == SYSTEMD_LOGIN1_SESSION_IFACE && msg.member() == "Lock")
+ {
+ lockScreen();
+ return;
+ }
+
+ // systemd signal Unlock()
+ if (systemdSession && systemdSession->canSend() && msg.path() == systemdSession->path() &&
+ msg.interface() == SYSTEMD_LOGIN1_SESSION_IFACE && msg.member() == "Unlock")
+ {
+ // unlock?
+ return;
+ }
+}
+
+void SaverEngine::lockScreenAndDoNewSession()
+{
+ mNewVTAfterLockEngage = true;
+ lockScreen();
+}
+
+void SaverEngine::lockScreenAndSwitchSession(int vt)
+{
+ mSwitchVTAfterLockEngage = vt;
+ lockScreen();
+}
+
+SaverEngineEventHandler::SaverEngineEventHandler(SaverEngine *engine) :
+ m_state(Waiting), m_saverProcessReady(false), m_lockProcessRestarting(false),
+ m_terminationRequest(false), m_saverEngine(engine), m_SAKProcess(nullptr)
+{
+ connect(&m_lockProcess, TQ_SIGNAL(processExited(TDEProcess*)),
+ this, TQ_SLOT(slotLockProcessExited()));
+}
+
+void SaverEngineEventHandler::terminateLockProcess()
+{
+ if (m_state == Waiting)
+ {
+ kill(m_lockProcess.pid(), SIGKILL);
+ }
+ m_lockProcess.detach(); // don't kill it if we crash
+}
+
+void SaverEngineEventHandler::lockCompleted()
+{
+ kdDebug(1204) << "SaverEngineEventHandler: lock completed" << endl;
+
+ if (m_state == Waiting)
+ {
+ return;
+ }
+
+ m_state = Waiting;
+ if (trinity_lockeng_sak_available)
+ {
+ startSAKProcess();
+ }
+ TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(stopLockProcessGUI()));
+}
+
+void SaverEngineEventHandler::lockFullyActivated()
+{
+ m_state = Saving;
+ TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(lockProcessFullyActivatedGUI()));
+}
+
+void SaverEngineEventHandler::lockReady()
+{
+ m_saverProcessReady = true;
+}
+
+void SaverEngineEventHandler::lockScreen(bool dcop)
+{
+ if (m_lockProcessRestarting)
+ {
+ kdDebug(1204) << "SaverEngineEventHandler: lock process is restarting, can't handle lock request" << endl;
+ return;
+ }
+
+ bool ok = true;
+ if (m_state == Waiting)
+ {
+ ok = activateSaverOrLock(ForceLock);
+ // It takes a while for kdesktop_lock to start and lock the screen.
+ // Therefore delay the DCOP call until it tells kdesktop that the locking is in effect.
+ // This is done only for --forcelock .
+ if (ok && m_state != Saving)
+ {
+ if (dcop)
+ {
+ TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(lockScreenGUI()));
+ }
+ }
+ }
+}
+
+void SaverEngineEventHandler::saveScreen()
+{
+ if (m_lockProcessRestarting)
+ {
+ kdDebug(1204) << "SaverEngineEventHandler: lock process is restarting, can't handle save request" << endl;
+ return;
+ }
+
+ if (m_state == Waiting)
+ {
+ activateSaverOrLock(DefaultLock);
+ }
+}
+
+void SaverEngineEventHandler::slotLockProcessExited()
+{
+ // Clean up status after the lock process has exited
+ lockCompleted();
+
+ m_lockProcessRestarting = true;
+
+ bool abnormalExit = false;
+ if (!m_lockProcess.normalExit())
+ {
+ abnormalExit = true;
+ }
+ else if (m_lockProcess.exitStatus() != 0)
+ {
+ abnormalExit = true;
+ }
+ if (m_terminationRequest)
+ {
+ abnormalExit = false;
+ m_terminationRequest = false;
+ }
+
+ // Restart the lock process. This call blocks till
+ // the lock process has restarted.
+ restartLockProcess();
+
+ if (abnormalExit)
+ {
+ // Possible hacking attempt detected, try to relaunch the saver with force lock
+ m_state = Waiting;
+ if (!activateSaverOrLock(ForceLock))
+ {
+ TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(terminateTDESession()));
+ }
+ }
+ m_lockProcessRestarting = false;
+}
+
+/*
+ * Start or restart the lock process.
+ * On the very first invocation, launch the SAK process if required and
+ * auto lock the screen if the option has been enabled in the configuration.
+ */
+bool SaverEngineEventHandler::restartLockProcess()
+{
+ static bool firstStart = true;
+
+ bool autoLoginEnable = false;
+ bool autoLoginLocked = false;
+ if (firstStart)
+ {
+ firstStart = false;
+
+ // Create SAK process only if SAK is enabled
+ struct stat st;
+ TDESimpleConfig *config;
+ if (stat(KDE_CONFDIR "/tdm/tdmdistrc" , &st) == 0)
+ {
+ config = new TDESimpleConfig(TQString::fromLatin1(KDE_CONFDIR "/tdm/tdmdistrc"));
+ }
+ else
+ {
+ config = new TDESimpleConfig(TQString::fromLatin1(KDE_CONFDIR "/tdm/tdmrc"));
+ }
+ config->setGroup("X-:*-Greeter");
+ bool useSAKProcess = false;
+#ifdef BUILD_TSAK
+ useSAKProcess = config->readBoolEntry("UseSAK", false) && KDesktopSettings::useTDESAK();
+#endif
+ if (useSAKProcess)
+ {
+ startSAKProcess();
+ }
+
+ // autolock the desktop if required
+ config->setGroup("X-:0-Core");
+ autoLoginEnable = config->readBoolEntry("AutoLoginEnable", false);
+ autoLoginLocked = config->readBoolEntry("AutoLoginLocked", false);
+ delete config;
+ }
+
+ // (Re)start the lock process
+ if (!m_lockProcess.isRunning())
+ {
+ m_lockProcess.clearArguments();
+ TQString path = TDEStandardDirs::findExe("kdesktop_lock");
+ if (path.isEmpty())
+ {
+ kdDebug(1204) << "Can't find kdesktop_lock!" << endl;
+ return false;
+ }
+ m_lockProcess << path;
+ m_lockProcess << TQString("--internal") << TQString("%1").arg(getpid());
+
+ m_saverProcessReady = false;
+ if (!m_lockProcess.start())
+ {
+ kdDebug(1204) << "Failed to start kdesktop_lock!" << endl;
+ return false;
+ }
+ // Wait for the lock process to signal that it is ready
+ sigset_t empty_mask;
+ sigemptyset(&empty_mask);
+ while (!m_saverProcessReady)
+ {
+ sigsuspend(&empty_mask);
+ }
+ if (!m_lockProcess.isRunning())
+ {
+ kdDebug(1204) << "Failed to initialize kdesktop_lock (unexpected termination)!" << endl;
+ return false;
+ }
+ }
+
+ if (autoLoginEnable && autoLoginLocked)
+ {
+ m_lockProcess.kill(SIGTTOU);
+ m_lockProcess.kill(SIGUSR1);
+ }
+ return true;
+}
+
+// Start the screen saver or lock screen
+bool SaverEngineEventHandler::activateSaverOrLock(LockType lock_type)
+{
+ if (m_state == Saving)
+ {
+ return true;
+ }
+
+ kdDebug(1204) << "SaverEngineEventHandler: starting saver" << endl;
+ m_state = Preparing;
+ if (m_SAKProcess)
+ {
+ m_SAKProcess->kill(SIGTERM);
+ }
+
+ m_saverEngine->enableExports();
+ if (!restartLockProcess())
+ {
+ m_state = Waiting;
+ return false;
+ }
+
+ switch (lock_type)
+ {
+ case ForceLock:
+ m_lockProcess.kill(SIGUSR1); // Request forcelock
+ break;
+ case DontLock:
+ m_lockProcess.kill(SIGUSR2); // Request dontlock
+ break;
+ case SecureDialog:
+ m_lockProcess.kill(SIGWINCH); // Request secure dialog
+ break;
+ default:
+ break;
+ }
+
+ if (m_saverEngine->mBlankOnly)
+ {
+ m_lockProcess.kill(SIGTTIN); // Request blanking
+ }
+
+ int ret = m_lockProcess.kill(SIGTTOU); // Start lock
+ if (!ret)
+ {
+ m_state = Waiting;
+ return false;
+ }
+ m_state = Engaging;
+
+ // Ask to the GUI thread to activate X11 saver
+ TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(activateSaverOrLockGUI()));
+
+ return true;
+}
+
+// Stop the screen saver.
+void SaverEngineEventHandler::stopLockProcess()
+{
+ if (m_state == Waiting)
+ {
+ return;
+ }
+
+ kdDebug(1204) << "SaverEngineEventHandler: stopping lock process" << endl;
+
+ m_terminationRequest = true;
+ m_lockProcess.kill();
+ m_state = Waiting;
+
+ // Ask to the GUI thread to stop the X11 saver
+ TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(stopLockProcessGUI()));
+}
+
+void SaverEngineEventHandler::startSAKProcess()
+{
+ if (!m_SAKProcess)
+ {
+ m_SAKProcess = new TDEProcess;
+ *m_SAKProcess << "tdmtsak";
+ connect(m_SAKProcess, TQ_SIGNAL(processExited(TDEProcess*)), this, TQ_SLOT(slotSAKProcessExited()));
+ }
+ if (!m_SAKProcess->isRunning())
+ {
+ m_SAKProcess->start();
+ }
+}
+
+void SaverEngineEventHandler::slotSAKProcessExited()
+{
+ if (!m_SAKProcess)
+ {
+ tqWarning("[kdesktop] SAK process does not exist. Something went wrong. Ignoring.");
+ return;
+ }
+
+ int retcode = m_SAKProcess->exitStatus();
+ if (retcode && m_SAKProcess->normalExit())
+ {
+ trinity_lockeng_sak_available = false;
+ tqWarning("[kdesktop] SAK driven secure dialog is not available for use (retcode %d). "
+ "Check tdmtsak for proper functionality.", retcode);
+ }
+
+ if (m_state == Preparing)
+ {
+ return;
+ }
+
+ if (m_SAKProcess->normalExit() && trinity_lockeng_sak_available)
+ {
+ if (m_state == Waiting)
+ {
+ activateSaverOrLock(SecureDialog);
+ }
+ else
+ {
+ m_lockProcess.kill(SIGHUP);
+ }
+ }
+}
+
+void SaverEngineEventHandler::terminateThread()
+{
+ TQEventLoop *eventLoop = TQApplication::eventLoop();
+ if (eventLoop)
+ {
+ eventLoop->exit(0);
+ }
+}
diff --git a/kdesktop/lockeng.h b/kdesktop/lockeng.h
index 11f751db8..11806e73c 100644
--- a/kdesktop/lockeng.h
+++ b/kdesktop/lockeng.h
@@ -1,6 +1,5 @@
-//===========================================================================
//
-// This file is part of the KDE project
+// This file is part of the TDE project
//
// Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
//
@@ -8,9 +7,8 @@
#ifndef __LOCKENG_H__
#define __LOCKENG_H__
-#include <tqwidget.h>
#include <tqthread.h>
-#include <kprocess.h>
+#include <tdeprocess.h>
#include <tqvaluevector.h>
#include "KScreensaverIface.h"
#include "xautolock.h"
@@ -18,33 +16,54 @@
#include <tqdbusconnection.h>
+#ifdef WITH_TDEHWLIB
class TDECryptographicCardDevice;
+#else
+#define TDECryptographicCardDevice void
+#endif
+
+/**
+ * Screen saver engine. Handles communication with the lock process.
+ * The engine is split into two parts, the 'SaverEngine' running in the GUI thread and
+ * the 'SaverEngineEventHandler' running in a separate thread and eventloop.
+ * The 'SaverEngine' handles communication with X11, DCOP and DBUS while the
+ * 'SaverEngineEventHandler' handles communication with the actual lock process.
+ * Several actions require cooperation of the two parts, so in various methods
+ * there will be inter-thread calls (using timers or by emitting signals) to
+ * trigger the other side remaining logic.
+ * This complex design is necessary to avoid blocking the main GUI application event loop,
+ * which has several tasks to manage and therefore can't affort to wait in a suspended state.
+ * This was previously leading to deadlock when DCOP calls where executed on the secondary
+ * thread/eventloop, for example when changing desktop while the lock process was restarting.
+ */
+
class DCOPClientTransaction;
class TQT_DBusMessage;
class TQT_DBusProxy;
+class SaverEngineEventHandler;
-class SaverEngineThreadHelperObject : public TQObject
+// Type of lock screen
+enum LockType : int
{
- Q_OBJECT
-
-public slots:
- void terminateThread();
- void slotLockProcessWaiting();
- void slotLockProcessFullyActivated();
+ DontLock = 0,
+ DefaultLock,
+ ForceLock,
+ SecureDialog
+};
-signals:
- void lockProcessWaiting();
- void lockProcessFullyActivated();
+enum SaverState
+{
+ Waiting,
+ Preparing,
+ Engaging,
+ Saving
};
-//===========================================================================
-/**
- * Screen saver engine. Handles screensaver window, starting screensaver
- * hacks, and password entry.
- */
-class SaverEngine : public TQWidget, public KScreensaverIface
+class SaverEngine : public TQObject, public KScreensaverIface
{
- Q_OBJECT
+ friend class SaverEngineEventHandler;
+
+ TQ_OBJECT
public:
SaverEngine();
~SaverEngine();
@@ -96,80 +115,52 @@ public:
*/
virtual void saverLockReady();
- /**
- * @internal
- */
void lockScreen(bool DCOP = false);
- /**
- * Called by KDesktop to wait for saver engage
- * @internal
- */
- bool waitForLockEngage();
-
- /**
- * @internal
- */
void lockScreenAndDoNewSession();
-
- /**
- * @internal
- */
void lockScreenAndSwitchSession(int vt);
+ void enableExports(); // Enable wallpaper exports
+
signals:
- void terminateHelperThread();
- void asyncLock();
+ void activateSaverOrLockSignal(LockType lock_type);
+ void lockScreenSignal(bool);
+ void terminateEventHandlerThread();
public slots:
- void slotLockProcessReady();
- void lockProcessWaiting();
- void lockProcessFullyActivated();
void handleDBusSignal(const TQT_DBusMessage&);
+ void terminateTDESession();
protected slots:
void idleTimeout();
- void lockProcessExited();
private slots:
- void handleSecureDialog();
- void slotSAKProcessExited();
-
void cryptographicCardInserted(TDECryptographicCardDevice*);
void cryptographicCardRemoved(TDECryptographicCardDevice*);
-
- /**
- * Enable wallpaper exports
- */
- void enableExports();
- void recoverFromHackingAttempt();
void cardStartupTimeout();
-
bool dBusReconnect();
+ // The following slots are invoked by corresponding methods named without the 'GUI' suffix
+ // in 'SaverEngineEventHandler' to complete the remaining X11 part of the actions
+ void activateSaverOrLockGUI();
+ void lockProcessFullyActivatedGUI();
+ void lockScreenGUI();
+ void stopLockProcessGUI();
+
private:
- bool restartDesktopLockProcess();
void dBusClose();
bool dBusConnect();
void onDBusServiceRegistered(const TQString&);
void onDBusServiceUnregistered(const TQString&);
protected:
- enum SaverState { Waiting, Preparing, Engaging, Saving };
- enum LockType { DontLock, DefaultLock, ForceLock, SecureDialog };
- bool startLockProcess( LockType lock_type );
- bool waitForLockProcessStart();
- void stopLockProcess();
- bool handleKeyPress(XKeyEvent *xke);
void processLockTransactions();
xautolock_corner_t applyManualSettings(int);
protected:
bool mEnabled;
- SaverState mState;
XAutoLock *mXAutoLock;
- TDEProcess mLockProcess;
int mTimeout;
// the original X screensaver parameters
@@ -178,26 +169,60 @@ protected:
int mXBlanking;
int mXExposures;
- bool mBlankOnly; // only use the blanker, not the defined saver
TQValueVector< DCOPClientTransaction* > mLockTransactions;
public:
- SaverEngineThreadHelperObject* m_threadHelperObject;
+ bool mBlankOnly; // only use the blanker, not the defined saver // protected
+ SaverEngineEventHandler *m_saverEngineEventHandler;
private:
- TQEventLoopThread* m_helperThread;
- sigset_t mThreadBlockSet;
- TDEProcess* mSAKProcess;
- bool mTerminationRequested;
- bool mSaverProcessReady;
+ TQEventLoopThread* m_eventHandlerThread;
bool mNewVTAfterLockEngage;
bool mValidCryptoCardInserted;
int mSwitchVTAfterLockEngage;
struct sigaction mSignalAction;
TQT_DBusConnection dBusConn;
- TQT_DBusProxy* dBusLocal;
- TQT_DBusProxy* dBusWatch;
- TQT_DBusProxy* systemdSession;
+ TQT_DBusProxy *dBusLocal;
+ TQT_DBusProxy *dBusWatch;
+ TQT_DBusProxy *systemdSession;
+};
+
+class SaverEngineEventHandler : public TQObject
+{
+ TQ_OBJECT
+
+public:
+ SaverEngineEventHandler(SaverEngine *engine);
+
+ SaverState getState() const { return m_state; }
+
+ void lockCompleted();
+ void lockFullyActivated();
+ void lockReady();
+ void terminateLockProcess();
+
+public slots:
+ bool activateSaverOrLock(LockType lock_type);
+ void lockScreen(bool DCOP = false);
+ bool restartLockProcess();
+ void saveScreen();
+ void stopLockProcess();
+ void terminateThread();
+
+protected slots:
+ void slotLockProcessExited();
+ void slotSAKProcessExited();
+
+protected:
+ void startSAKProcess();
+
+ bool m_saverProcessReady;
+ bool m_lockProcessRestarting;
+ bool m_terminationRequest;
+ SaverState m_state;
+ SaverEngine *m_saverEngine;
+ TDEProcess *m_SAKProcess;
+ TDEProcess m_lockProcess;
};
#endif
diff --git a/kdesktop/main.cc b/kdesktop/main.cpp
index b54c03cb7..0465068b6 100644
--- a/kdesktop/main.cc
+++ b/kdesktop/main.cpp
@@ -18,13 +18,13 @@
*/
#include <config.h>
-#include <kuniqueapplication.h>
+#include <tdeuniqueapplication.h>
#include <tdelocale.h>
#include <dcopclient.h>
#include <tdeaboutdata.h>
#include <tdecmdlineargs.h>
#include <kopenwith.h>
-#include <kcrash.h>
+#include <tdecrash.h>
#include <kdebug.h>
#include <tdeglobalsettings.h>
#include <tdeglobal.h>
@@ -43,7 +43,7 @@
#include <fcntl.h>
#include <stdlib.h>
-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300
+#if defined(TQ_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300
#define COMPOSITE
#endif
@@ -71,7 +71,7 @@ static TDECmdLineOptions options[] =
};
bool argb_visual = false;
-KDesktopApp *myApp = NULL;
+KDesktopApp *myApp = nullptr;
// -----------------------------------------------------------------------------
@@ -94,8 +94,8 @@ static void signalHandler(int sigId)
// try to cleanup all windows
signal(SIGTERM, SIG_DFL); // next one kills
signal(SIGHUP, SIG_DFL); // next one kills
- if (kapp)
- kapp->quit(); // turn catchable signals into clean shutdown
+ if (tdeApp)
+ tdeApp->quit(); // turn catchable signals into clean shutdown
}
void KDesktop::slotUpAndRunning()
@@ -105,7 +105,7 @@ void KDesktop::slotUpAndRunning()
TDECrash::setEmergencySaveFunction(crashHandler); // Try to restart on crash
}
-extern "C" KDE_EXPORT int kdemain( int argc, char **argv )
+extern "C" TDE_EXPORT int kdemain( int argc, char **argv )
{
//setup signal handling
signal(SIGTERM, signalHandler);
@@ -184,7 +184,7 @@ extern "C" KDE_EXPORT int kdemain( int argc, char **argv )
TDECmdLineArgs::init( argc, argv, &aboutData );
TDECmdLineArgs::addCmdLineOptions( options );
- if (!KUniqueApplication::start()) {
+ if (!TDEUniqueApplication::start()) {
fprintf(stderr, "kdesktop is already running!\n");
exit(0);
}
@@ -247,11 +247,11 @@ extern "C" KDE_EXPORT int kdemain( int argc, char **argv )
*qt_no_foreign_hack = true;
// else argb_visual = false ... ? *shrug*
if( argb_visual )
- myApp = new KDesktopApp( dpy, Qt::HANDLE( visual ), 0 );
+ myApp = new KDesktopApp( dpy, TQt::HANDLE( visual ), 0 );
else
XCloseDisplay( dpy );
}
- if( myApp == NULL )
+ if (!myApp)
myApp = new KDesktopApp;
#else
myApp = new KDesktopApp;
@@ -260,9 +260,6 @@ extern "C" KDE_EXPORT int kdemain( int argc, char **argv )
KDesktopSettings::instance(kdesktop_name + "rc");
- bool x_root_hack = args->isSet("x-root");
- bool wait_for_kded = args->isSet("waitforkded");
-
// This MUST be created before any widgets are created
SaverEngine saver;
@@ -273,22 +270,21 @@ extern "C" KDE_EXPORT int kdemain( int argc, char **argv )
// Mark kdeskop as immutable if all of its config modules have been disabled
if (!myApp->config()->isImmutable() &&
- kapp->authorizeControlModules(KRootWm::configModules()).isEmpty())
+ tdeApp->authorizeControlModules(KRootWm::configModules()).isEmpty())
{
myApp->config()->setReadOnly(true);
myApp->config()->reparseConfiguration();
}
- // for the KDE-already-running check in starttde
- TDESelectionOwner kde_running( "_KDE_RUNNING", 0 );
- kde_running.claim( false );
+ // for the TDE-already-running check in starttde
+ TDESelectionOwner tde_running( "_KDE_RUNNING", 0 );
+ tde_running.claim( false );
+ bool x_root_hack = args->isSet("x-root");
+ bool wait_for_kded = args->isSet("waitforkded");
KDesktop desktop( &saver, x_root_hack, wait_for_kded );
args->clear();
-
myApp->dcopClient()->setDefaultObject( "KDesktopIface" );
-
-
return myApp->exec();
}
diff --git a/kdesktop/minicli.cpp b/kdesktop/minicli.cpp
index 769c49849..2ac8b3ecd 100644
--- a/kdesktop/minicli.cpp
+++ b/kdesktop/minicli.cpp
@@ -50,7 +50,7 @@
#include <dcopclient.h>
#include <tdelocale.h>
#include <tdemessagebox.h>
-#include <kprocess.h>
+#include <tdeprocess.h>
#include <kcombobox.h>
#include <klineedit.h>
#include <tdeapplication.h>
@@ -59,7 +59,7 @@
#include <krun.h>
#include <twin.h>
#include <tdesu/su.h>
-#include <kstandarddirs.h>
+#include <tdestandarddirs.h>
#include <tdeconfig.h>
#include <kiconloader.h>
#include <kpushbutton.h>
@@ -101,7 +101,7 @@ Minicli::Minicli( TQWidget *parent, const char *name)
// Cancel button...
m_dlg->pbCancel->setGuiItem ( KStdGuiItem::cancel() );
- if (!kapp->authorize("shell_access"))
+ if (!tdeApp->authorize("shell_access"))
m_dlg->pbOptions->hide();
m_dlg->pbRun->setEnabled(!m_dlg->cbCommand->currentText().isEmpty());
@@ -131,34 +131,34 @@ Minicli::Minicli( TQWidget *parent, const char *name)
m_pURLCompletion = new KURLCompletion(KURLCompletion::FileCompletion);
m_pEXECompletion = new KURLCompletion(KURLCompletion::SystemExeCompletion);
//m_pURLCompletion->setCompletionMode( TDEGlobalSettings::completionMode() );
- connect( m_pURLCompletion, TQT_SIGNAL( match(const TQString&) ), TQT_SLOT( slotMatch(const TQString&) ));
- connect( m_pEXECompletion, TQT_SIGNAL( match(const TQString&) ), TQT_SLOT( slotEXEMatch(const TQString&) ));
+ connect( m_pURLCompletion, TQ_SIGNAL( match(const TQString&) ), TQ_SLOT( slotMatch(const TQString&) ));
+ connect( m_pEXECompletion, TQ_SIGNAL( match(const TQString&) ), TQ_SLOT( slotEXEMatch(const TQString&) ));
// Main widget buttons...
- connect( m_dlg->pbRun, TQT_SIGNAL(clicked()), this, TQT_SLOT(accept()) );
- connect( m_dlg->pbCancel, TQT_SIGNAL(clicked()), this, TQT_SLOT(reject()) );
- connect( m_dlg->pbOptions, TQT_SIGNAL(clicked()), TQT_SLOT(slotAdvanced()) );
- connect( m_parseTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotParseTimer()) );
+ connect( m_dlg->pbRun, TQ_SIGNAL(clicked()), this, TQ_SLOT(accept()) );
+ connect( m_dlg->pbCancel, TQ_SIGNAL(clicked()), this, TQ_SLOT(reject()) );
+ connect( m_dlg->pbOptions, TQ_SIGNAL(clicked()), TQ_SLOT(slotAdvanced()) );
+ connect( m_parseTimer, TQ_SIGNAL(timeout()), TQ_SLOT(slotParseTimer()) );
- connect( m_dlg->cbCommand, TQT_SIGNAL( textChanged( const TQString& ) ),
- TQT_SLOT( slotCmdChanged(const TQString&) ) );
+ connect( m_dlg->cbCommand, TQ_SIGNAL( textChanged( const TQString& ) ),
+ TQ_SLOT( slotCmdChanged(const TQString&) ) );
- connect( m_dlg->cbCommand, TQT_SIGNAL( returnPressed() ),
- m_dlg->pbRun, TQT_SLOT( animateClick() ) );
+ connect( m_dlg->cbCommand, TQ_SIGNAL( returnPressed() ),
+ m_dlg->pbRun, TQ_SLOT( animateClick() ) );
m_dlg->cbCommand->setHistoryEditorEnabled( true );
- connect( m_dlg->cbCommand, TQT_SIGNAL(removed( const TQString&) ), TQT_SLOT(saveConfig()) );
+ connect( m_dlg->cbCommand, TQ_SIGNAL(removed( const TQString&) ), TQ_SLOT(saveConfig()) );
// Advanced group box...
- connect(m_dlg->cbPriority, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotChangeScheduler(bool)));
- connect(m_dlg->slPriority, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(slotPriority(int)));
- connect(m_dlg->cbRealtime, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotRealtime(bool)));
- connect(m_dlg->cbAppcomplete, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotAppcompleteToggled(bool)));
- connect(m_dlg->cbAutocomplete, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotAutocompleteToggled(bool)));
- connect(m_dlg->cbAutohistory, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotAutohistoryToggled(bool)));
- connect(m_dlg->cbRunAsOther, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotChangeUid(bool)));
- connect(m_dlg->leUsername, TQT_SIGNAL(lostFocus()), TQT_SLOT(updateAuthLabel()));
- connect(m_dlg->cbRunInTerminal, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotTerminal(bool)));
+ connect(m_dlg->cbPriority, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotChangeScheduler(bool)));
+ connect(m_dlg->slPriority, TQ_SIGNAL(valueChanged(int)), TQ_SLOT(slotPriority(int)));
+ connect(m_dlg->cbRealtime, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotRealtime(bool)));
+ connect(m_dlg->cbAppcomplete, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotAppcompleteToggled(bool)));
+ connect(m_dlg->cbAutocomplete, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotAutocompleteToggled(bool)));
+ connect(m_dlg->cbAutohistory, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotAutohistoryToggled(bool)));
+ connect(m_dlg->cbRunAsOther, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotChangeUid(bool)));
+ connect(m_dlg->leUsername, TQ_SIGNAL(lostFocus()), TQ_SLOT(updateAuthLabel()));
+ connect(m_dlg->cbRunInTerminal, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotTerminal(bool)));
m_dlg->slPriority->setValue(50);
@@ -317,8 +317,8 @@ void Minicli::accept()
if ( logout )
{
- kapp->propagateSessionManager();
- kapp->requestShutDown();
+ tdeApp->propagateSessionManager();
+ tdeApp->requestShutDown();
}
if ( lock )
{
@@ -326,7 +326,7 @@ void Minicli::accept()
int kicker_screen_number = tqt_xscreen();
if ( kicker_screen_number )
appname.sprintf("kdesktop-screen-%d", kicker_screen_number);
- kapp->dcopClient()->send(appname, "KScreensaverIface", "lock()", TQString(""));
+ tdeApp->dcopClient()->send(appname, "KScreensaverIface", "lock()", TQString(""));
}
}
@@ -375,7 +375,7 @@ void Minicli::reset()
void Minicli::keyPressEvent( TQKeyEvent* e )
{
- if ( e->key() == Qt::Key_Escape )
+ if ( e->key() == TQt::Key_Escape )
{
e->accept();
m_dlg->pbCancel->animateClick();
@@ -437,7 +437,7 @@ int Minicli::runCommand()
kdDebug (1207) << "Use terminal ? " << useTerminal << endl;
- if (!kapp->authorize("shell_access"))
+ if (!tdeApp->authorize("shell_access"))
useTerminal = false;
if( needsTDEsu() )
@@ -585,7 +585,7 @@ int Minicli::runCommand()
// fall-through to shell case
case KURIFilterData::SHELL:
{
- if (kapp->authorize("shell_access"))
+ if (tdeApp->authorize("shell_access"))
{
exec = cmd;
@@ -651,7 +651,7 @@ void Minicli::notifyServiceStarted(KService::Ptr service)
TQDataStream stream(params, IO_WriteOnly);
stream << "minicli" << service->storageId();
kdDebug() << "minicli appLauncher dcop signal: " << service->storageId() << endl;
- TDEApplication::kApplication()->dcopClient()->emitDCOPSignal("appLauncher",
+ tdeApp->dcopClient()->emitDCOPSignal("appLauncher",
"serviceStartedByStorageId(TQString,TQString)", params);
}
@@ -877,7 +877,7 @@ void Minicli::setIcon ()
{
TQBitmap mask = *icon.mask();
bitBlt( &mask, x, y,
- overlay.mask() ? TQT_TQPIXMAP(const_cast<TQBitmap *>(overlay.mask())) : &overlay,
+ overlay.mask() ? const_cast<TQBitmap *>(overlay.mask()) : &overlay,
0, 0, overlay.width(), overlay.height(),
overlay.mask() ? OrROP : SetROP );
icon.setMask(mask);
@@ -1094,6 +1094,3 @@ void Minicli::fontChange( const TQFont & )
{
adjustSize();
}
-
-// vim: set et ts=2 sts=2 sw=2:
-
diff --git a/kdesktop/minicli.h b/kdesktop/minicli.h
index 9d92825c7..c3974a13b 100644
--- a/kdesktop/minicli.h
+++ b/kdesktop/minicli.h
@@ -46,7 +46,7 @@ class KURIFilterData;
class Minicli : public KDialog
{
- Q_OBJECT
+ TQ_OBJECT
public:
Minicli( TQWidget *parent=0, const char *name=0 );
diff --git a/kdesktop/minicli_ui.ui b/kdesktop/minicli_ui.ui
index 13d3b9736..93c95c8f0 100644
--- a/kdesktop/minicli_ui.ui
+++ b/kdesktop/minicli_ui.ui
@@ -640,21 +640,14 @@
</tabstops>
<includes>
<include location="global" impldecl="in declaration">fixx11h.h</include>
+ <include location="local" impldecl="in implementation">kcombobox.h</include>
<include location="local" impldecl="in implementation">kdialog.h</include>
<include location="local" impldecl="in implementation">kiconloader.h</include>
- <include location="local" impldecl="in implementation">kpassdlg.h</include>
- <include location="local" impldecl="in implementation">kcombobox.h</include>
<include location="local" impldecl="in implementation">klineedit.h</include>
+ <include location="local" impldecl="in implementation">kpassdlg.h</include>
<include location="local" impldecl="in implementation">kpushbutton.h</include>
</includes>
<pixmapfunction>BarIcon</pixmapfunction>
<layoutdefaults spacing="3" margin="6"/>
<layoutfunctions spacing="KDialog::spacingHint" margin="KDialog::marginHint"/>
-<includehints>
- <includehint>kpushbutton.h</includehint>
- <includehint>kpushbutton.h</includehint>
- <includehint>kpushbutton.h</includehint>
- <includehint>kpassdlg.h</includehint>
- <includehint>kcombobox.h</includehint>
-</includehints>
</UI>
diff --git a/kdesktop/pics/ksslogo.png b/kdesktop/pics/ksslogo.png
index 466215dee..db984eedf 100644..100755
--- a/kdesktop/pics/ksslogo.png
+++ b/kdesktop/pics/ksslogo.png
Binary files differ
diff --git a/kdesktop/pics/splash.png b/kdesktop/pics/splash.png
index 1d5738697..52d76596f 100644..100755
--- a/kdesktop/pics/splash.png
+++ b/kdesktop/pics/splash.png
Binary files differ
diff --git a/kdesktop/pixmapserver.cc b/kdesktop/pixmapserver.cpp
index 7a480cdb6..b60942277 100644
--- a/kdesktop/pixmapserver.cc
+++ b/kdesktop/pixmapserver.cpp
@@ -1,4 +1,4 @@
-/* vi: ts=8 sts=4 sw=4
+/*
*
* This file is part of the KDE project, module kdesktop.
* Copyright (C) 1999 Geert Jansen <g.t.jansen@stud.tue.nl>
@@ -39,7 +39,7 @@
KPixmapServer::KPixmapServer()
: TQWidget(0L, "shpixmap comm window")
{
- kapp->installX11EventFilter(this);
+ tdeApp->installX11EventFilter(this);
pixmap = XInternAtom(tqt_xdisplay(), "PIXMAP", false);
}
diff --git a/kdesktop/pixmapserver.h b/kdesktop/pixmapserver.h
index 3084cd0a3..661d531ad 100644
--- a/kdesktop/pixmapserver.h
+++ b/kdesktop/pixmapserver.h
@@ -1,4 +1,4 @@
-/* vi: ts=8 sts=4 sw=4
+/*
*
* This file is part of the KDE project, module kdesktop.
* Copyright (C) 1999 Geert Jansen <g.t.jansen@stud.tue.nl>
@@ -24,7 +24,7 @@
struct KPixmapInode
{
- Qt::HANDLE handle;
+ TQt::HANDLE handle;
Atom selection;
};
@@ -37,7 +37,7 @@ struct KPixmapData
struct TDESelectionInode
{
- Qt::HANDLE handle;
+ TQt::HANDLE handle;
TQString name;
};
@@ -50,7 +50,7 @@ struct TDESelectionInode
*/
class KPixmapServer: public TQWidget
{
- Q_OBJECT
+ TQ_OBJECT
public:
KPixmapServer();
diff --git a/kdesktop/startupid.cpp b/kdesktop/startupid.cpp
index 4027b7e9a..2aeac904a 100644
--- a/kdesktop/startupid.cpp
+++ b/kdesktop/startupid.cpp
@@ -54,18 +54,18 @@ StartupId::StartupId( TQWidget* parent, const char* name )
XWindowAttributes attrs;
XGetWindowAttributes( tqt_xdisplay(), tqt_xrootwin(), &attrs);
XSelectInput( tqt_xdisplay(), tqt_xrootwin(), attrs.your_event_mask | SubstructureNotifyMask);
- kapp->installX11EventFilter( this );
+ tdeApp->installX11EventFilter( this );
}
- connect( &update_timer, TQT_SIGNAL( timeout()), TQT_SLOT( update_startupid()));
+ connect( &update_timer, TQ_SIGNAL( timeout()), TQ_SLOT( update_startupid()));
connect( &startup_info,
- TQT_SIGNAL( gotNewStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )),
- TQT_SLOT( gotNewStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )));
+ TQ_SIGNAL( gotNewStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )),
+ TQ_SLOT( gotNewStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )));
connect( &startup_info,
- TQT_SIGNAL( gotStartupChange( const TDEStartupInfoId&, const TDEStartupInfoData& )),
- TQT_SLOT( gotStartupChange( const TDEStartupInfoId&, const TDEStartupInfoData& )));
+ TQ_SIGNAL( gotStartupChange( const TDEStartupInfoId&, const TDEStartupInfoData& )),
+ TQ_SLOT( gotStartupChange( const TDEStartupInfoId&, const TDEStartupInfoData& )));
connect( &startup_info,
- TQT_SIGNAL( gotRemoveStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )),
- TQT_SLOT( gotRemoveStartup( const TDEStartupInfoId& )));
+ TQ_SIGNAL( gotRemoveStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )),
+ TQ_SLOT( gotRemoveStartup( const TDEStartupInfoId& )));
}
StartupId::~StartupId()
@@ -129,10 +129,10 @@ bool StartupId::x11Event( XEvent* e )
if( startups.count() == 0 )
start_startupid( KDE_STARTUP_ICON );
// 60(?) sec timeout - shouldn't be hopefully needed anyway, ksmserver should have it too
- TQTimer::singleShot( 60000, this, TQT_SLOT( finishKDEStartup()));
+ TQTimer::singleShot( 60000, this, TQ_SLOT( finishKDEStartup()));
}
else if( strcmp( s, "session ready" ) == 0 && kde_startup_status < StartupDone )
- TQTimer::singleShot( 2000, this, TQT_SLOT( finishKDEStartup()));
+ TQTimer::singleShot( 2000, this, TQ_SLOT( finishKDEStartup()));
}
return false;
}
@@ -140,7 +140,7 @@ bool StartupId::x11Event( XEvent* e )
void StartupId::finishKDEStartup()
{
kde_startup_status = StartupDone;
- kapp->removeX11EventFilter( this );
+ tdeApp->removeX11EventFilter( this );
if( startups.count() == 0 )
stop_startupid();
}
@@ -176,7 +176,7 @@ void StartupId::start_startupid( const TQString& icon_P )
{
const TQColor startup_colors[ StartupId::NUM_BLINKING_PIXMAPS ]
- = { Qt::black, Qt::darkGray, Qt::lightGray, Qt::white, Qt::white };
+ = { TQt::black, TQt::darkGray, TQt::lightGray, TQt::white, TQt::white };
TQPixmap icon_pixmap = TDEGlobal::iconLoader()->loadIcon( icon_P, TDEIcon::Small, 0,
diff --git a/kdesktop/startupid.h b/kdesktop/startupid.h
index 893d0b8db..27345d598 100644
--- a/kdesktop/startupid.h
+++ b/kdesktop/startupid.h
@@ -34,7 +34,7 @@ class TQStyle;
class StartupId
: public TQWidget
{
- Q_OBJECT
+ TQ_OBJECT
public:
StartupId( TQWidget* parent = 0, const char* name = 0 );
virtual ~StartupId();
diff --git a/kdesktop/tdefileividesktop.cpp b/kdesktop/tdefileividesktop.cpp
index bf9aa074c..464b5490d 100644
--- a/kdesktop/tdefileividesktop.cpp
+++ b/kdesktop/tdefileividesktop.cpp
@@ -144,10 +144,10 @@ void KFileIVIDesktop::drawShadowedText( TQPainter *p, const TQColorGroup &cg )
int textX;
if (drawRoundedRect == true)
- textX = textRect( FALSE ).x() + 4;
+ textX = textRect( false ).x() + 4;
else
- textX = textRect( FALSE ).x() + 2;
- int textY = textRect( FALSE ).y();
+ textX = textRect( false ).x() + 2;
+ int textY = textRect( false ).y();
int align = ((TDEIconView *) iconView())->itemTextPos() == TQIconView::Bottom
? AlignHCenter : AlignAuto;
// FIXME
@@ -222,11 +222,11 @@ TQImage *KFileIVIDesktop::buildShadow( TQPainter *p, const int align,
TQPainter pixPainter;
int spread = shadowThickness();
- TQPixmap textPixmap(textRect( FALSE ).width() + spread * 2 + 2,
- textRect( FALSE ).height() + spread * 2 + 2);
+ TQPixmap textPixmap(textRect( false ).width() + spread * 2 + 2,
+ textRect( false ).height() + spread * 2 + 2);
textPixmap.fill(TQColor(0,0,0));
- textPixmap.setMask( textPixmap.createHeuristicMask(TRUE) );
+ textPixmap.setMask( textPixmap.createHeuristicMask(true) );
pixPainter.begin(&textPixmap);
pixPainter.setPen(white); // get the pen from the root painter
diff --git a/kdesktop/tdefileividesktop.h b/kdesktop/tdefileividesktop.h
index 46f77f636..0434a706e 100644
--- a/kdesktop/tdefileividesktop.h
+++ b/kdesktop/tdefileividesktop.h
@@ -33,7 +33,7 @@
/*
* The dither flags used to display the shadow image
*/
-#define DITHER_FLAGS (Qt::DiffuseAlphaDither | Qt::ColorOnly | Qt::AvoidDither)
+#define DITHER_FLAGS (TQt::DiffuseAlphaDither | TQt::ColorOnly | TQt::AvoidDither)
class TQFont;
diff --git a/kdesktop/xautolock.cc b/kdesktop/xautolock.cpp
index 3c7e62670..95de8f3d6 100644
--- a/kdesktop/xautolock.cc
+++ b/kdesktop/xautolock.cpp
@@ -71,7 +71,7 @@ XAutoLock::XAutoLock()
#endif
if( !xautolock_useXidle && !xautolock_useMit )
{
- kapp->installX11EventFilter( this );
+ tdeApp->installX11EventFilter( this );
int (*oldHandler)(Display *, XErrorEvent *);
oldHandler = XSetErrorHandler(catchFalseAlarms);
XSync(tqt_xdisplay(), False );
diff --git a/kdesktop/xautolock.h b/kdesktop/xautolock.h
index 5684ce6ef..a30405339 100644
--- a/kdesktop/xautolock.h
+++ b/kdesktop/xautolock.h
@@ -19,7 +19,7 @@
//
class XAutoLock : public TQWidget
{
- Q_OBJECT
+ TQ_OBJECT
public:
XAutoLock();
~XAutoLock();