RPM Packaging: cleanup tdebase

pull/3/head
François Andriot 10 years ago
parent aeb0878cbf
commit 29e62220cb

@ -1,19 +0,0 @@
*** kdebase/kdesktop/krootwm.cc.ori 2011-07-20 14:14:25.822954866 +0200
--- kdebase/kdesktop/krootwm.cc 2011-07-20 14:16:09.964002976 +0200
***************
*** 760,766 ****
KConfigGroupSaver gs(KGlobal::config(), "General");
TQString terminal = KGlobal::config()->readPathEntry("TerminalApplication", "konsole");
! *p << terminal << "--workdir=" + KGlobalSettings::desktopPath() + "/";
p->start(KProcess::DontCare);
--- 760,766 ----
KConfigGroupSaver gs(KGlobal::config(), "General");
TQString terminal = KGlobal::config()->readPathEntry("TerminalApplication", "konsole");
! *p << terminal;
p->start(KProcess::DontCare);

@ -1,36 +0,0 @@
*** kdebase/kcontrol/Makefile.am.ORI 2011-09-18 22:04:50.000000000 +0200
--- kdebase/kcontrol/Makefile.am 2011-09-18 22:05:00.000000000 +0200
***************
*** 12,18 ****
endif
if include_kcontrol_iccconfig
! ICCCONFIG_SUBDIR=iccconfig
endif
if include_kcontrol_usbview
--- 12,18 ----
endif
if include_kcontrol_iccconfig
! #ICCCONFIG_SUBDIR=iccconfig
endif
if include_kcontrol_usbview
***************
*** 24,30 ****
endif
if include_kcontrol_randr
! RANDR_SUBDIR=randr
endif
if include_kcontrol_joystick
--- 24,30 ----
endif
if include_kcontrol_randr
! #RANDR_SUBDIR=randr
endif
if include_kcontrol_joystick

@ -1,78 +0,0 @@
*** kdebase/kioslave/media/mediamanager/halbackend.cpp.orig 2010-09-30 00:24:28.000000000 +0200
--- kdebase/kioslave/media/mediamanager/halbackend.cpp 2011-07-20 16:39:40.933056051 +0200
***************
*** 873,878 ****
--- 873,905 ----
s_HALBackend->DeviceCondition(udi, condition_name);
}
+ TQStringList HALBackend::getHALmountoptions(TQString udi)
+ {
+ const char* _ppt_string;
+ LibHalVolume* volume;
+ LibHalDrive* drive;
+
+ TQString _ppt_QString;
+
+ volume = libhal_volume_from_udi( m_halContext, udi.latin1() );
+ if( volume )
+ drive = libhal_drive_from_udi( m_halContext, libhal_volume_get_storage_device_udi( volume ) );
+ else
+ drive = libhal_drive_from_udi( m_halContext, udi.latin1() );
+
+ if( !drive )
+ return TQString::null;
+
+ if( volume )
+ _ppt_string = libhal_volume_policy_get_mount_options ( drive, volume, NULL );
+ else
+ _ppt_string = libhal_drive_policy_get_mount_options ( drive, NULL );
+
+ _ppt_QString = TQString(_ppt_string ? _ppt_string : "");
+
+ return TQStringList::split(",",_ppt_QString);
+ }
+
TQStringList HALBackend::mountoptions(const TQString &name)
{
const Medium* medium = m_mediaList.findById(name);
***************
*** 1472,1481 ****
--- 1499,1524 ----
soptions << TQString("data=ordered");
}
+ TQStringList hal_mount_options = getHALmountoptions(medium->id());
+ for (TQValueListIterator<TQString> it=hal_mount_options.begin();it!=hal_mount_options.end();it++)
+ {
+ soptions << *it;
+ kdDebug()<<"HALOption: "<<*it<<endl;
+ if ((*it).startsWith("iocharset="))
+ {
+ soptions.remove("utf8");
+ kdDebug()<<"\"iocharset=\" found. Removing \"utf8\" from options."<<endl;
+ }
+ }
+
+
const char **options = new const char*[soptions.size() + 1];
uint noptions = 0;
for (TQStringList::ConstIterator it = soptions.begin(); it != soptions.end(); ++it, ++noptions)
+ {
options[noptions] = (*it).latin1();
+ kdDebug()<<"Option: "<<*it<<endl;
+ }
options[noptions] = NULL;
TQString qerror = i18n("Cannot mount encrypted drives!");
diff -r -u kdebase-3.5.5a.dfsg.1.orig/kioslave/media/mediamanager/halbackend.h kdebase-3.5.5a.dfsg.1/kioslave/media/mediamanager/halbackend.h
--- kdebase-3.5.5a.dfsg.1.orig/kioslave/media/mediamanager/halbackend.h 2007-01-25 12:34:07.133446000 +0300
+++ kdebase-3.5.5a.dfsg.1/kioslave/media/mediamanager/halbackend.h 2007-01-25 16:33:54.413638693 +0300
@@ -192,6 +192,7 @@
const char* message
);
+ TQStringList getHALmountoptions(QString udi);
/* HAL and DBus structures */
private:
/**

@ -1,22 +0,0 @@
--- kdebase-3.5.12/kdesktop/lock/lockprocess.cc.ORI 2011-12-21 18:40:05.553301746 +0100
+++ kdebase-3.5.12/kdesktop/lock/lockprocess.cc 2011-12-21 18:43:01.643590270 +0100
@@ -1045,17 +1045,13 @@
mHackProc << word;
}
- if (!mForbidden)
+ if (!mForbidden && mHackProc.start() == true)
{
-
- if (mHackProc.start() == true)
- {
#ifdef HAVE_SETPRIORITY
setpriority(PRIO_PROCESS, mHackProc.pid(), mPriority);
#endif
//bitBlt(this, 0, 0, &mOriginal);
return true;
- }
}
else
// we aren't allowed to start the specified screensaver either because it didn't run for some reason

@ -1,45 +0,0 @@
diff -rcb kdebase.ORI/kdesu/kdesu/sudlg.cpp kdebase/kdesu/kdesu/sudlg.cpp
*** kdebase.ORI/kdesu/kdesu/sudlg.cpp 2010-12-17 22:55:07.725798945 +0100
--- kdebase/kdesu/kdesu/sudlg.cpp 2010-12-17 22:55:49.378797283 +0100
***************
*** 15,21 ****
#include "sudlg.h"
KDEsuDialog::KDEsuDialog(TQCString user, TQCString auth_user, bool enableKeep,const TQString& icon, bool withIgnoreButton)
! : KPasswordDialog(Password, enableKeep, (withIgnoreButton ? User1:NoDefault), icon)
{
KConfig* config = KGlobal::config();
config->setGroup("super-user-command");
--- 15,21 ----
#include "sudlg.h"
KDEsuDialog::KDEsuDialog(TQCString user, TQCString auth_user, bool enableKeep,const TQString& icon, bool withIgnoreButton)
! : KPasswordDialog(Password, enableKeep, 0, icon)
{
KConfig* config = KGlobal::config();
config->setGroup("super-user-command");
***************
*** 34,45 ****
} else {
if (m_User == "root") {
prompt = i18n("The action you requested needs root privileges. "
! "Please enter root's password below or click "
! "Ignore to continue with your current privileges.");
} else {
prompt = i18n("The action you requested needs additional privileges. "
! "Please enter the password for \"%1\" below or click "
! "Ignore to continue with your current privileges.").arg(m_User);
}
}
setPrompt(prompt);
--- 34,43 ----
} else {
if (m_User == "root") {
prompt = i18n("The action you requested needs root privileges. "
! "Please enter root's password below.");
} else {
prompt = i18n("The action you requested needs additional privileges. "
! "Please enter the password for \"%1\" below.").arg(m_User);
}
}
setPrompt(prompt);

@ -1,29 +0,0 @@
diff -Nuar kdebase/kdm.ORI/config.def kdebase/kdm/config.def
--- kdebase/kdm.ORI/config.def 2012-01-05 19:29:01.956728364 +0100
+++ kdebase/kdm/config.def 2012-01-05 19:28:53.165728336 +0100
@@ -2630,3 +2630,12 @@
Description:
The theme to use for the greeter. Can point to either a directory or an XML
file.
+
+Key: HideMenuButton
+Type: bool
+Default: false
+User: greeter
+Instance: */
+Comment: &
+Description:
+ Determines if the "menu" button should be hidden on KDM login prompt.
diff -Nuar kdebase/kdm.ORI/kfrontend/kgreeter.cpp kdebase/kdm/kfrontend/kgreeter.cpp
--- kdebase/kdm.ORI/kfrontend/kgreeter.cpp 2012-01-05 19:29:01.955735413 +0100
+++ kdebase/kdm/kfrontend/kgreeter.cpp 2012-01-05 19:30:39.538730206 +0100
@@ -892,6 +892,9 @@
else
menuButton->hide();
+ if ( _hideMenuButton)
+ menuButton->hide();
+
pluginSetup();
verify->start();

@ -1,13 +0,0 @@
Index: ui/k_new_mnu.cpp
===================================================================
--- ui/k_new_mnu.cpp (revision 1259264)
+++ ui/k_new_mnu.cpp (working copy)
@@ -3502,6 +3502,8 @@
descr, "system:/media/" + name, nId++, -1 );
++it; // skip separator
+ ++it;
+ ++it;
}
}

@ -1,428 +0,0 @@
--- kdebase/kicker/kicker/buttons/knewbutton.cpp.ORI 2011-12-08 21:15:57.551323941 +0100
+++ kdebase/kicker/kicker/buttons/knewbutton.cpp 2011-12-08 21:22:05.216346827 +0100
@@ -55,26 +55,26 @@
: KButton( parent ),
m_oldPos(0,0)
{
+ setTitle(i18n("K Menu"));
Q_ASSERT( !m_self );
m_self = this;
- m_hoverTimer = -1;
m_openTimer = -1;
- m_active = false;
+ m_hoverTimer = -1;
m_mouseInside = false;
m_drag = false;
- setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignRight));
- setAcceptDrops(true);
- setIcon("kmenu-suse");
- setDrawArrow(false);
-
- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_basic.mng"));
- m_movie->connectUpdate(this, TQT_SLOT(updateMovie()));
- m_movie->connectStatus(this, TQT_SLOT(slotStatus(int)));
- m_movie->connectResize(this, TQT_SLOT(slotSetSize(const TQSize&)));
+ setIcon("kmenu");
+ setIcon(KickerSettings::customKMenuIcon());
TQApplication::desktop()->screen()->installEventFilter(this);
- setMouseTracking(true);
+ if (KickerSettings::showKMenuText())
+ {
+ setButtonText(KickerSettings::kMenuText());
+ setFont(KickerSettings::buttonFont());
+ setTextColor(KickerSettings::buttonTextColor());
+ }
+
+ repaint();
}
KNewButton::~KNewButton()
@@ -82,28 +82,14 @@
if ( m_self == this )
m_self = 0;
setMouseTracking(false);
- delete m_movie;
-}
-
-void KNewButton::slotStatus(int status)
-{
- if(status == TQMovie::EndOfLoop)
- slotStopAnimation();
}
-TQColor KNewButton::borderColor() const
+void KNewButton::drawButton(TQPainter *p)
{
- TQImage img = m_active_pixmap.convertToImage();
-
- for (int i = 0; i < img.width(); ++i) {
- QRgb rgb = img.pixel(orientation() == Qt::Horizontal ? img.width() - i - 1 :
- i, 2);
-
- if (qGreen(rgb) > 0x50)
- return rgb;
- }
-
- return img.pixel( orientation() == Qt::Horizontal ? img.width() - 2 : 2, 2);
+ //if (KickerSettings::showDeepButtons())
+ // PanelPopupButton::drawDeepButton(p);
+ //else
+ PanelPopupButton::drawButton(p);
}
void KNewButton::show()
@@ -111,103 +97,12 @@
KButton::show();
if (KickerSettings::firstRun()) {
- TQTimer::singleShot(500,this,TQT_SLOT(slotExecMenu()));
+ TQTimer::singleShot(0,this,TQT_SLOT(slotExecMenu()));
KickerSettings::setFirstRun(false);
KickerSettings::writeConfig();
}
}
-void KNewButton::updateMovie()
-{
- m_oldPos = TQPoint( -1, -1 );
- drawEye();
-
- if (!m_active && m_movie->running())
- m_movie->pause();
-}
-
-void KNewButton::setPopupDirection(KPanelApplet::Direction d)
-{
- KButton::setPopupDirection(d);
-
- delete m_movie;
-
- switch (d) {
- case KPanelApplet::Left:
- setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignLeft));
- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_vertical.mng"));
- break;
- case KPanelApplet::Right:
- setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignRight));
- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_vertical.mng"));
- break;
- case KPanelApplet::Up:
- setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignHCenter));
- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_basic.mng"));
- break;
- case KPanelApplet::Down:
- setIconAlignment((Qt::AlignmentFlags)(AlignBottom|AlignHCenter));
- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_flipped.mng"));
- }
-
- m_movie->connectUpdate(this, TQT_SLOT(updateMovie()));
- m_movie->connectStatus(this, TQT_SLOT(slotStatus(int)));
- m_movie->connectResize(this, TQT_SLOT(slotSetSize(const TQSize&)));
-}
-
-void KNewButton::slotSetSize(const TQSize& s)
-{
- m_iconSize = s;
-}
-
-double KNewButton::buttonScaleFactor(const TQSize& s) const
-{
- double sf = 1.0;
-
- switch (popupDirection()) {
- case KPanelApplet::Left:
- case KPanelApplet::Right:
-// sf = kMin(double(s.width()) / m_iconSize.height(), double(s.height()) / m_iconSize.width());
-// break;
- case KPanelApplet::Up:
- case KPanelApplet::Down:
- sf = kMin(double(s.width()) / m_iconSize.width(), double(s.height()) / m_iconSize.height());
- break;
- }
-
- if (sf > 0.8) sf = 1.0;
- return sf;
-}
-
-int KNewButton::widthForHeight(int height) const
-{
- int r = m_iconSize.width() * buttonScaleFactor(TQSize(m_iconSize.width(), height));
-
- if (!m_movie->running() && height != m_active_pixmap.height())
- {
- KNewButton* that = const_cast<KNewButton*>(this);
- TQTimer::singleShot(0, that, TQT_SLOT(slotStopAnimation()));
- }
-
- return r;
-}
-
-int KNewButton::preferredDimension(int panelDim) const
-{
- return kMax(m_icon.width(), m_icon.height());
-}
-
-int KNewButton::heightForWidth(int width) const
-{
- int r = m_iconSize.width() * buttonScaleFactor(TQSize(width, m_iconSize.height()));
- if (!m_movie->running() && width != m_active_pixmap.width())
- {
- KNewButton* that = const_cast<KNewButton*>(this);
- TQTimer::singleShot(0, that, TQT_SLOT(slotStopAnimation()));
- }
- return r;
-}
-
bool KNewButton::eventFilter(TQObject *o, TQEvent *e)
{
if (e->type() == TQEvent::MouseButtonRelease ||
@@ -223,75 +118,9 @@
}
}
- if (KickerSettings::kickoffDrawGeekoEye() && e->type() == TQEvent::MouseMove)
- {
- TQMouseEvent *me = static_cast<TQMouseEvent *>(e);
- if ((me->state() & MouseButtonMask) == NoButton)
- drawEye();
- }
-
return KButton::eventFilter(o, e);
}
-void KNewButton::drawEye()
-{
-#define eye_x 62
-#define eye_y 13
- TQPoint mouse = TQCursor::pos();
- TQPoint me = mapToGlobal(TQPoint(eye_x, eye_y));
- double a = atan2(mouse.y() - me.y(), mouse.x() - me.x());
- int dx = int(2.1 * cos(a));
- int dy = int(2.1 * sin(a));
-
- TQPoint newpos(eye_x+dx,eye_y+dy);
- if (newpos!=m_oldPos) {
- m_oldPos = newpos;
- TQPixmap pixmap = m_active_pixmap;
-
- double sf = 1.0;
-
- if(!m_movie->framePixmap().isNull())
- {
- pixmap = m_movie->framePixmap();
- pixmap.detach();
- m_iconSize = pixmap.size();
- sf = buttonScaleFactor(size());
-
- if (KickerSettings::kickoffDrawGeekoEye()) {
- TQPainter p(&pixmap);
- p.setPen(white);
- p.setBrush(white);
- // p.setPen(TQColor(110,185,55));
- p.drawRect(eye_x+dx, eye_y+dy, 2, 2);
- p. end();
- }
- }
-
- TQWMatrix matrix;
- switch (popupDirection()) {
- case KPanelApplet::Left:
- matrix.scale(sf, -sf);
- matrix.rotate(90);
- break;
- case KPanelApplet::Up:
- matrix.scale(sf, sf);
- break;
- case KPanelApplet::Right:
- matrix.scale(sf, -sf);
- matrix.rotate(90);
- break;
- case KPanelApplet::Down:
- matrix.scale(sf, sf);
- break;
- }
- m_active_pixmap = pixmap.xForm(matrix);
-
- repaint(false);
- }
-#undef eye_x
-#undef eye_y
-}
-
void KNewButton::enterEvent(TQEvent* e)
{
KButton::enterEvent(e);
@@ -315,14 +144,6 @@
}
m_active = true;
- m_movie->unpause();
- m_movie->restart();
-}
-
-void KNewButton::rewindMovie()
-{
- m_oldPos = TQPoint( -1, -1 );
- m_movie->unpause();
}
void KNewButton::dragEnterEvent(TQDragEnterEvent* /*e*/)
@@ -369,31 +190,11 @@
}
}
-void KNewButton::slotStopAnimation()
-{
- m_active = false;
- m_movie->pause();
- m_movie->restart();
- TQTimer::singleShot(200, this, TQT_SLOT(rewindMovie()));
-}
-
-const TQPixmap& KNewButton::labelIcon() const
-{
- return m_active_pixmap;
-}
-
void KNewButton::slotExecMenu()
{
- if (m_openTimer != -1)
- killTimer(m_openTimer);
-
- m_openTimer = startTimer(TQApplication::doubleClickInterval() * 3);
-
if (m_active)
{
m_active = false;
- m_movie->pause();
- m_movie->restart();
}
KButton::slotExecMenu();
@@ -401,40 +202,11 @@
assert(!KickerTip::tippingEnabled());
assert(dynamic_cast<KMenu*>(m_popup));
- disconnect(dynamic_cast<KMenu*>(m_popup), TQT_SIGNAL(aboutToHide()), this,
- TQT_SLOT(slotStopAnimation()));
- connect(dynamic_cast<KMenu*>(m_popup), TQT_SIGNAL(aboutToHide()),
- TQT_SLOT(slotStopAnimation()));
-
m_popup->move(KickerLib::popupPosition(popupDirection(), m_popup, this));
// I wish KMenu would properly done itself when it closes. But it doesn't.
- bool useEffect = true; // could be TQApplication::isEffectEnabled()
- useEffect = false; // too many TQt bugs to be useful
- if (m_drag)
- useEffect = false;
-
m_drag = false; // once is enough
-
- if (useEffect)
- {
- switch (popupDirection()) {
- case KPanelApplet::Left:
- qScrollEffect(m_popup, QEffects::LeftScroll);
- break;
- case KPanelApplet::Up:
- qScrollEffect(m_popup, QEffects::UpScroll);
- break;
- case KPanelApplet::Right:
- qScrollEffect(m_popup, QEffects::RightScroll);
- break;
- case KPanelApplet::Down:
- qScrollEffect(m_popup, QEffects::DownScroll);
- break;
- }
- }
- else
- static_cast<KMenu*>(m_popup)->show();
+ static_cast<KMenu*>(m_popup)->show();
}
void KNewButton::timerEvent(TQTimerEvent* e)
@@ -447,9 +219,4 @@
killTimer(m_hoverTimer);
m_hoverTimer = -1;
}
- if (e->timerId() == m_openTimer)
- {
- killTimer(m_openTimer);
- m_openTimer = -1;
- }
}
--- kdebase/kicker/kicker/buttons/knewbutton.h.ORI 2011-12-08 21:22:24.273573281 +0100
+++ kdebase/kicker/kicker/buttons/knewbutton.h 2011-12-08 21:24:16.791338762 +0100
@@ -28,7 +28,6 @@
#include "kbutton.h"
-#include <tqmovie.h>
#include <tqpoint.h>
/**
@@ -46,23 +45,8 @@
void loadConfig( const KConfigGroup& config );
- virtual const TQPixmap& labelIcon() const;
-
- virtual int widthForHeight(int height) const;
- virtual int preferredDimension(int panelDim) const;
- virtual int heightForWidth(int width) const;
-
TQColor borderColor() const;
- virtual void setPopupDirection(KPanelApplet::Direction d);
-
-private slots:
- void slotStatus(int);
- void slotSetSize(const TQSize&);
- void slotStopAnimation();
- void rewindMovie();
- void updateMovie();
-
protected:
virtual void show();
virtual void slotExecMenu();
@@ -78,16 +62,13 @@
void timerEvent(TQTimerEvent*);
private:
- void drawEye();
- double buttonScaleFactor(const TQSize& s) const;
-
- TQMovie* m_movie;
+ void drawButton(TQPainter *p);
TQPixmap m_active_pixmap;
TQPoint m_oldPos;
TQSize m_iconSize;
TQRect m_sloppyRegion;
- int m_hoverTimer;
int m_openTimer;
+ int m_hoverTimer;
bool m_active;
bool m_mouseInside;
bool m_drag;
--- kdebase/kicker/kicker/ui/k_new_mnu.cpp.ORI 2011-12-08 21:24:57.071572016 +0100
+++ kdebase/kicker/kicker/ui/k_new_mnu.cpp 2011-12-08 21:25:54.300324465 +0100
@@ -1700,8 +1700,6 @@
TQPixmap pix( 64, footer->height() );
TQPainter p( &pix );
p.fillRect( 0, 0, 64, footer->height(), m_branding->colorGroup().brush( TQColorGroup::Base ) );
- p.fillRect( 0, m_orientation == BottomUp ? footer->height() - 2 : 0,
- 64, 3, KNewButton::self()->borderColor() );
p.end();
footer->setPaletteBackgroundPixmap( pix );
}
@@ -3501,6 +3499,8 @@
m_systemView->insertItem( iconName, userLabel.isEmpty() ? label : userLabel,
descr, "system:/media/" + name, nId++, -1 );
+ ++it;
+ ++it;
++it; // skip separator
}
}

@ -1,40 +0,0 @@
--- kdebase/kioslave/man/kio_man.cpp.orig 2010-08-13 00:37:38.000000000 +0200
+++ kdebase/kioslave/man/kio_man.cpp 2011-12-08 21:10:25.720324499 +0100
@@ -569,20 +569,24 @@
}
lastdir = filename.left(filename.findRev('/'));
- myStdStream = TQString::null;
- KProcess proc;
- /* TODO: detect availability of 'man --recode' so that this can go
- * upstream */
- proc << "man" << "--recode" << "UTF-8" << filename;
-
- TQApplication::connect(&proc, TQT_SIGNAL(receivedStdout (KProcess *, char *, int)),
- this, TQT_SLOT(slotGetStdOutputUtf8(KProcess *, char *, int)));
- proc.start(KProcess::Block, KProcess::All);
-
- const TQCString cstr=myStdStream.utf8();
- const int len = cstr.size()-1;
+ QIODevice *fd= KFilterDev::deviceForFile(filename);
+
+ if ( !fd || !fd->open(IO_ReadOnly))
+ {
+ delete fd;
+ return 0;
+ }
+ QByteArray array(fd->readAll());
+ kdDebug(7107) << "read " << array.size() << endl;
+ fd->close();
+ delete fd;
+
+ if (array.isEmpty())
+ return 0;
+
+ const int len = array.size();
buf = new char[len + 4];
- qmemmove(buf + 1, cstr.data(), len);
+ qmemmove(buf + 1, array.data(), len);
buf[0]=buf[len]='\n'; // Start and end with a end of line
buf[len+1]=buf[len+2]='\0'; // Two NUL characters at end
}

@ -1,136 +0,0 @@
diff -Nuar kcontrol.ORI/konqhtml/advancedTabDialog.cpp kcontrol/konqhtml/advancedTabDialog.cpp
--- kdebase/kcontrol.ORI/konqhtml/advancedTabDialog.cpp 2011-12-09 23:45:04.676253975 +0100
+++ kdebase/kcontrol/konqhtml/advancedTabDialog.cpp 2011-12-09 23:46:28.239256986 +0100
@@ -58,7 +58,6 @@
layout->addSpacing( 20 );
layout->addStretch();
- connect(m_advancedWidget->m_pNewTabsInBackground, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
connect(m_advancedWidget->m_pOpenAfterCurrentPage, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
connect(m_advancedWidget->m_pTabConfirm, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
connect(m_advancedWidget->m_pTabCloseActivatePrevious, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
@@ -76,7 +75,6 @@
void advancedTabDialog::load()
{
m_pConfig->setGroup("FMSettings");
- m_advancedWidget->m_pNewTabsInBackground->setChecked( ! (m_pConfig->readBoolEntry( "NewTabsInFront", false )) );
m_advancedWidget->m_pOpenAfterCurrentPage->setChecked( m_pConfig->readBoolEntry( "OpenAfterCurrentPage", false ) );
m_advancedWidget->m_pPermanentCloseButton->setChecked( m_pConfig->readBoolEntry( "PermanentCloseButton", false ) );
m_advancedWidget->m_pKonquerorTabforExternalURL->setChecked( m_pConfig->readBoolEntry( "KonquerorTabforExternalURL", false ) );
@@ -92,7 +90,6 @@
void advancedTabDialog::save()
{
m_pConfig->setGroup("FMSettings");
- m_pConfig->writeEntry( "NewTabsInFront", !(m_advancedWidget->m_pNewTabsInBackground->isChecked()) );
m_pConfig->writeEntry( "OpenAfterCurrentPage", m_advancedWidget->m_pOpenAfterCurrentPage->isChecked() );
m_pConfig->writeEntry( "PermanentCloseButton", m_advancedWidget->m_pPermanentCloseButton->isChecked() );
m_pConfig->writeEntry( "KonquerorTabforExternalURL", m_advancedWidget->m_pKonquerorTabforExternalURL->isChecked() );
diff -Nuar kcontrol.ORI/konqhtml/advancedTabOptions.ui kcontrol/konqhtml/advancedTabOptions.ui
--- kdebase/kcontrol.ORI/konqhtml/advancedTabOptions.ui 2011-12-09 23:45:04.674267416 +0100
+++ kdebase/kcontrol/konqhtml/advancedTabOptions.ui 2011-12-09 23:56:01.440255647 +0100
@@ -62,6 +62,17 @@
</widget>
<widget class="QCheckBox">
<property name="name">
+ <cstring>m_pNewTabsInBackground</cstring>
+ </property>
+ <property name="text">
+ <string>O&amp;pen new tabs in the background</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>This will open a new tab in the background, instead of in the foreground.</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
<cstring>m_pOpenAfterCurrentPage</cstring>
</property>
<property name="text">
diff -Nuar konqueror.ORI/konq_guiclients.cc konqueror/konq_guiclients.cc
--- kdebase/konqueror.ORI/konq_guiclients.cc 2011-12-09 23:44:28.950255993 +0100
+++ kdebase/konqueror/konq_guiclients.cc 2011-12-09 23:49:31.432261289 +0100
@@ -115,6 +115,11 @@
openInTabElement.setAttribute( "group", "tabhandling" );
menu.appendChild( openInTabElement );
+ TQDomElement openInTabFrontElement = m_doc.createElement( "action" );
+ openInTabFrontElement.setAttribute( "name", "openintabfront" );
+ openInTabFrontElement.setAttribute( "group", "tabhandling" );
+ menu.appendChild( openInTabFrontElement );
+
TQDomElement separatorElement = m_doc.createElement( "separator" );
separatorElement.setAttribute( "group", "tabhandling" );
menu.appendChild( separatorElement );
diff -Nuar konqueror.ORI/konq_mainwindow.cc konqueror/konq_mainwindow.cc
--- kdebase/konqueror.ORI/konq_mainwindow.cc 2011-12-09 23:44:29.030265039 +0100
+++ kdebase/konqueror/konq_mainwindow.cc 2011-12-09 23:54:27.518255409 +0100
@@ -2727,6 +2727,14 @@
openURL( 0L, popupItems.getFirst()->url() );
}
+void KonqMainWindow::slotPopupNewTabAtFront()
+{
+ KConfig *config = KGlobal::config();
+ KConfigGroupSaver cs( config, TQString::fromLatin1("FMSettings") );
+ bool openAfterCurrentPage = config->readBoolEntry( "OpenAfterCurrentPage", false );
+ popupNewTab(true, openAfterCurrentPage);
+}
+
void KonqMainWindow::slotPopupNewTab()
{
bool openAfterCurrentPage = KonqSettings::openAfterCurrentPage();
@@ -2735,7 +2743,7 @@
if (KApplication::keyboardMouseState() & Qt::ShiftButton)
newTabsInFront = !newTabsInFront;
- popupNewTab(newTabsInFront, openAfterCurrentPage);
+ popupNewTab(false, openAfterCurrentPage);
}
void KonqMainWindow::slotPopupNewTabRight()
@@ -2755,16 +2763,12 @@
KFileItemListIterator it ( popupItems );
KonqOpenURLRequest req;
req.newTab = true;
- req.newTabInFront = false;
+ req.newTabInFront = infront;
req.openAfterCurrentPage = openAfterCurrentPage;
req.args = popupUrlArgs;
for ( ; it.current(); ++it )
{
- if ( infront && it.atLast() )
- {
- req.newTabInFront = true;
- }
openURL( 0L, (*it)->url(), TQString::null, req );
}
}
@@ -4783,8 +4787,14 @@
else
tab_new_x = "tab_new_bg" ;
- actNewTab = new KAction( i18n( "Open in &New Tab" ), tab_new_x, 0, this, TQT_SLOT( slotPopupNewTab() ), konqyMenuClient->actionCollection(), "openintab" );
- actNewTab->setToolTip( i18n( "Open the document in a new tab" ) );
+ KAction *actNewTab = new KAction( i18n( "Open in &Background Tab" ), "tab_new_bg", 0, this, TQT_SLOT( slotPopupNewTab() ), actionCollection(), "openintab" );
+ actNewTab->setStatusText( i18n( "Open the document in a new background tab" ) );
+ KAction *actNewTabFront = new KAction( i18n( "Open in &New Tab" ), "tab_new", 0, this, TQT_SLOT( slotPopupNewTabAtFront() ), actionCollection(), "openintabfront" );
+ actNewTabFront->setStatusText( i18n( "Open the document in a new foreground tab" ) );
+ actNewTab = new KAction( i18n( "Open in &Background Tab" ), tab_new_x, 0, this, TQT_SLOT( slotPopupNewTab() ), konqyMenuClient->actionCollection(), "openintab" );
+ actNewTabFront = new KAction( i18n( "Open in &New Tab" ), tab_new_x, 0, this, TQT_SLOT( slotPopupNewTabAtFront() ), konqyMenuClient->actionCollection(), "openintabfront" );
+ actNewTab->setToolTip( i18n( "Open the document in a new background tab" ) );
+ actNewTabFront->setToolTip( i18n( "Open the document in a new foreground tab" ) );
doTabHandling = true;
}
diff -Nuar konqueror.ORI/konq_mainwindow.h konqueror/konq_mainwindow.h
--- kdebase/konqueror.ORI/konq_mainwindow.h 2011-12-09 23:44:28.941260682 +0100
+++ kdebase/konqueror/konq_mainwindow.h 2011-12-09 23:54:57.772255487 +0100
@@ -444,6 +444,7 @@
void slotPopupNewWindow();
void slotPopupThisWindow();
void slotPopupNewTab();
+ void slotPopupNewTabAtFront();
void slotPopupNewTabRight();
void slotPopupPasteTo();
void slotRemoveView();

@ -1,29 +0,0 @@
Index: kdebase/kcontrol/iccconfig/iccconfig.cpp
===================================================================
--- kdebase/kcontrol/iccconfig/iccconfig.cpp (revision 1220926)
+++ kdebase/kcontrol/iccconfig/iccconfig.cpp (revision 1220927)
@@ -286,7 +286,7 @@
base->deleteProfileButton->setFixedWidth(90);
XRROutputInfo *output_info;
- KRandrSimpleAPI *randrsimple = new KRandrSimpleAPI::KRandrSimpleAPI();
+ KRandrSimpleAPI *randrsimple = new KRandrSimpleAPI();
config->setReadDefaults( useDefaults );
@@ -356,7 +356,7 @@
{
int i;
int j;
- KRandrSimpleAPI *randrsimple = new KRandrSimpleAPI::KRandrSimpleAPI();
+ KRandrSimpleAPI *randrsimple = new KRandrSimpleAPI();
// Write system configuration
systemconfig->setGroup(NULL);
@@ -408,4 +408,4 @@
" for a more lifelike and vibrant image.");
}
-#include "iccconfig.moc"
\ No newline at end of file
+#include "iccconfig.moc"

@ -1,19 +0,0 @@
*** kdebase/ksmserver/shutdowndlg.cpp.ORI 2011-08-23 21:42:55.206965177 +0200
--- kdebase/ksmserver/shutdowndlg.cpp 2011-08-23 21:43:26.429965029 +0200
***************
*** 80,86 ****
{
DCOPRef("kicker", "KMenu").call("hideMenu"); // Make sure the K Menu is completely removed from the screen before taking a snapshot...
m_grayImage = TQPixmap::grabWindow(qt_xrootwin(), 0, 0, TQApplication::desktop()->width(), TQApplication::desktop()->height()).convertToImage();
! m_unfadedImage = TQImage::TQImage();
resize(0, 0);
setShown(true);
TQTimer::singleShot( 500, this, TQT_SLOT( slotPaintEffect() ) );
--- 80,86 ----
{
DCOPRef("kicker", "KMenu").call("hideMenu"); // Make sure the K Menu is completely removed from the screen before taking a snapshot...
m_grayImage = TQPixmap::grabWindow(qt_xrootwin(), 0, 0, TQApplication::desktop()->width(), TQApplication::desktop()->height()).convertToImage();
! m_unfadedImage = TQImage();
resize(0, 0);
setShown(true);
TQTimer::singleShot( 500, this, TQT_SLOT( slotPaintEffect() ) );

@ -1,20 +0,0 @@
diff -rcb kdebase/ksmserver/shutdowndlg.h kdebase.patch/ksmserver/shutdowndlg.h
*** kdebase/ksmserver/shutdowndlg.h Sat Sep 25 23:33:51 2010
--- kdebase.patch/ksmserver/shutdowndlg.h Thu Dec 9 14:58:43 2010
***************
*** 32,38 ****
/* We acknowledge the the dbus API is unstable */
#define DBUS_API_SUBJECT_TO_CHANGE
! #include <dbus/connection.h>
#include <libhal.h>
// The (singleton) widget that makes/fades the desktop gray.
--- 32,38 ----
/* We acknowledge the the dbus API is unstable */
#define DBUS_API_SUBJECT_TO_CHANGE
! #include <dbus/dbus.h>
#include <libhal.h>
// The (singleton) widget that makes/fades the desktop gray.

@ -1,19 +0,0 @@
--- kdebase/startkde.ORI 2011-12-11 18:55:25.873027885 +0100
+++ kdebase/startkde 2011-12-11 18:56:37.885065246 +0100
@@ -144,14 +144,14 @@
fi
if [ -d /opt/kde3 ]; then
if [ -n "$KDEDIRS" ]; then
- export KDEDIRS=$KDEDIRS:/opt/kde3/:/usr/
+ export KDEDIRS=/opt/kde3/:$KDEDIRS:/usr/
else
export KDEDIRS=/opt/kde3/:/usr/
fi
fi
if [ -d /opt/trinity ]; then
if [ -n "$KDEDIRS" ]; then
- export KDEDIRS=$KDEDIRS:/opt/trinity/:/usr/
+ export KDEDIRS=/opt/trinity/:$KDEDIRS:/usr/
else
export KDEDIRS=/opt/trinity/:/usr/
fi

@ -1,757 +0,0 @@
# Default version for this component
%if "%{?version}" == ""
%define version 3.5.12
%endif
%define release 15
# If TDE is built in a specific prefix (e.g. /opt/trinity), the release will be suffixed with ".opt".
%if "%{?_prefix}" != "/usr"
%define _variant .opt
%define _docdir %{_prefix}/share/doc
%endif
# TDE 3.5.12 specific building variables
BuildRequires: autoconf automake libtool m4
%define tde_docdir %{_docdir}
%define tde_libdir %{_libdir}/kde3
# Older RHEL/Fedora versions use packages named "qt", "qt-devel", ..
# whereas newer versions use "qt3", "qt3-devel" ...
%if 0%{?rhel} >= 6 || 0%{?fedora} >= 8
%define _qt_suffix 3
%endif
Name: trinity-kdebase
Version: %{?version}
Release: %{?release}%{?dist}%{?_variant}
License: GPL
Summary: Trinity KDE Base Programs
Group: User Interface/Desktops
Vendor: Trinity Project
Packager: Francois Andriot <francois.andriot@free.fr>
URL: http://www.trinitydesktop.org/
Prefix: %{_prefix}
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Source0: kdebase-%{version}.tar.gz
# Wrapper script to prevent Plasma launch at Trinity Startup
Source1: plasma-desktop
# Pam configuration files for RHEL / Fedora
Source2: pamd.kdm-trinity%{?dist}
Source3: pamd.kdm-trinity-np%{?dist}
Source4: pamd.kcheckpass-trinity%{?dist}
Source5: pamd.kscreensaver-trinity%{?dist}
# TDE Official patches (from SVN), unmodified
# [kdebase/kcontrol] fix for openssl 1.0
Patch1: http://www.trinitydesktop.org/patches/r1201523.diff
# [kdebase/kcontrol] make it compatible with openssl < 1.0
Patch2: http://www.trinitydesktop.org/patches/r1201705.diff
# Fix My Documents shortcut on desktop
Patch3: http://www.trinitydesktop.org/patches/r1182808.diff
# [kdebase] fixed an incompatibility with gcc 4.5
Patch4: http://www.trinitydesktop.org/patches/r1221326.diff
# TDE Official patches (from SVN), modified
# [kdebase/ksmserver/shutdowndlg.cpp] Fixed invalid constructor per GCC 4.5.2
Patch5: kdebase-3.5.12-r1220975.patch
# [kdebase] Another invalid constructor per gcc 4.5
Patch6: kdebase-3.5.12-r1220927.patch
# TDE unofficial patches, fixing FTBFS
## Fix for DBUS include files in RHEL6
Patch7: kdebase-3.5.12-shutdowndlg-dbus-include.patch
## [kdebase/kcontrol]: disable components that depends of krandr (old distros)
Patch8: kdebase-3.5.12-disable-krandr.patch
# TDE for RHEL/Fedora specific patches
## [kdebase/kdesu] Remove 'ignore' button on 'kdesu' dialog box
Patch10: kdebase-3.5.12-kdesu-noignorebutton.patch
## [kdebase/kdesktop] Modifies 'open terminal here' on desktop
Patch11: kdebase-3.5.12-desktop-openterminalhere.patch
## [kdebase/kioslave] Forces HAL backend to use HAL mount options
Patch12: kdebase-3.5.12-halmountoptions.patch
## [kdebase/kdm/kfrontend] Global Xsession file is '/etc/X11/xinit/Xsession'
Patch13: kdebase-3.5.13-genkdmconf_Xsession_location.patch
## [kdebase/kicker/kicker/ui] Fix kickoff menu issues
Patch14: kdebase-3.5.12-kickoff_unstable.patch
## [kdebase/startkde] Sets default Start Icon in 'kickerrc'
Patch15: kdebase-3.5.13-startkde_icon.patch
## [kdebase/startkde] Fixes duplicate and incorrect TDE directories location
Patch16: kdebase-3.5.12-startkde_directories.patch
# TDE unofficial patches for enhanced features
## [kdebase/kate] Restores the 'number of files' and sorting widgets to the Kate configuration
Patch20: kdebase-3.5.13-kate_mru.patch
## [kdebase/kioslave/man] Fix kio_man for older distros without 'man-db'
Patch21: kdebase-3.5.12-kio_man_utf8.patch
## [kdebase/konqueror] Re-enable 'open tab in background'
Patch22: kdebase-3.5.12-konq_menu_tab_background.patch
## [kdebase/konqueror/sidebar] Fix error message on documents parent folder
Patch23: kdebase-3.5.13-konqsidebar_documents.patch
## [kdebase/kdesktop/lock] Fix missing black background
Patch29: kdebase-3.5.12-kdesktop_lock_fix.patch
## [kdebase/kdm/kfrontend] Allows to hide KDM menu button
Patch30: kdebase-3.5.12-kdm_hide_menu_button.patch
# Fedora 15 Theme: "Lovelock"
%if 0%{?fedora} == 15
Requires: lovelock-backgrounds-single
%define tde_bg /usr/share/backgrounds/lovelock/default/standard/lovelock.png
Requires: fedora-release-notes
%define tde_aboutlabel Fedora 15
%define tde_aboutpage /usr/share/doc/HTML/fedora-release-notes/index.html
%endif
# Fedora 16 Theme: "Verne"
%if 0%{?fedora} == 16
Requires: verne-backgrounds-single
%define tde_bg /usr/share/backgrounds/verne/default/standard/verne.png
Requires: fedora-release-notes
%define tde_aboutlabel Fedora 16
%define tde_aboutpage /usr/share/doc/HTML/fedora-release-notes/index.html
%endif
# RHEL 5 Theme
%if 0%{?rhel} == 5
Requires: desktop-backgrounds-basic
%define tde_bg /usr/share/backgrounds/images/default.jpg
Requires: indexhtml
%define tde_aboutlabel Enterprise Linux 5
%define tde_aboutpage /usr/share/doc/HTML/index.html
%endif
# RHEL 6 Theme
%if 0%{?rhel} == 6
Requires: redhat-logos
%define tde_bg /usr/share/backgrounds/default.png
Requires: redhat-indexhtml
%define tde_aboutlabel Enterprise Linux 6
%define tde_aboutpage /usr/share/doc/HTML/index.html
%endif
BuildRequires: tqtinterface-devel
BuildRequires: trinity-arts-devel
BuildRequires: trinity-kdelibs-devel
BuildRequires: qt%{?_qt_suffix}-devel
BuildRequires: openssl-devel
BuildRequires: avahi-devel avahi-qt3-devel
BuildRequires: imake
BuildRequires: xorg-x11-proto-devel
BuildRequires: OpenEXR-devel
BuildRequires: libsmbclient-devel
BuildRequires: dbus-devel
BuildRequires: dbus-qt-devel
BuildRequires: lm_sensors-devel
BuildRequires: libfontenc-devel
BuildRequires: hal-devel
BuildRequires: audiofile-devel alsa-lib-devel
BuildRequires: libraw1394-devel
BuildRequires: openldap-devel
BuildRequires: libvorbis-devel
BuildRequires: pam-devel
BuildRequires: libXdmcp-devel
BuildRequires: libxkbfile-devel
BuildRequires: libusb-devel
BuildRequires: esound-devel
BuildRequires: glib2-devel
BuildRequires: libXcomposite-devel
BuildRequires: libXtst-devel
BuildRequires: libXdamage-devel
BuildRequires: xorg-x11-font-utils
# These dependancies are not met in RHEL
%if 0%{?fedora}
BuildRequires: jack-audio-connection-kit-devel
BuildRequires: nas-devel
%endif
Requires: tqtinterface
Requires: trinity-arts
Requires: trinity-kdelibs
Requires: qt%{?_qt_suffix}
Requires: openssl
Requires: avahi avahi-qt3
Requires: dbus-qt
# Provides the global Xsession script (/etc/X11/xinit/Xsession)
Requires: xorg-x11-xinit
# RHEL 6 Configuration files are provided in separate packages
%if "%{?_prefix}" == "/usr"
Requires: kde-settings-kdm
%endif
Requires: redhat-menus
#Provides: kdebase%{?_qt_suffix} = %{version}
%if "%{?_prefix}" == "/usr"
Provides: kdebase%{?_qt_suffix} = %{version}
Obsoletes: kdebase%{?_qt_suffix} <= 3.5.10
%endif
# Required for Fedora LiveCD
Provides: service(graphical-login)
%description
Core applications for the Trinity K Desktop Environment. Included are: kdm
(replacement for xdm), kwin (window manager), konqueror (filemanager,
web browser, ftp client, ...), konsole (xterm replacement), kpanel
(application starter and desktop pager), kaudio (audio server),
kdehelp (viewer for kde help files, info and man pages), kthememgr
(system for managing alternate theme packages) plus other KDE
components (kcheckpass, kikbd, kscreensaver, kcontrol, kfind,
kfontmanager, kmenuedit).
%package devel
Requires: %{name}
Requires: %{name}-libs = %{version}-%{release}
Requires: trinity-kdelibs-devel
Summary: %{summary} - Development files
%if "%{?_prefix}" == "/usr"
Provides: kdebase%{?_qt_suffix}-devel = %{version}
Obsoletes: kdebase%{?_qt_suffix}-devel <= 3.5.10
%endif
Group: Development/Libraries
%description devel
Header files for developing applications using %{name}.
Install kdebase-devel if you want to develop or compile Konqueror,
Kate plugins or KWin styles.
%package extras
Summary: Extra applications from %{name}
Group: User Interface/Desktops
Requires: %{name} = %{version}-%{release}
%if "%{?_prefix}" == "/usr"
Provides: kdebase%{?_qt_suffix}-extras = %{version}
Obsoletes: kdebase%{?_qt_suffix}-extras <= 3.5.10
%endif
%description extras
%{summary}, including:
* kappfinder
* kpager
* ktip
* kpersonalizer
%package libs
Summary: %{name} runtime libraries
Group: System Environment/Libraries
Requires: trinity-kdelibs
%if "%{?_prefix}" == "/usr"
Provides: kdebase%{?_qt_suffix}-libs = %{version}
Obsoletes: kdebase%{?_qt_suffix}-libs <= 3.5.10
%endif
Requires: %{name} = %{version}-%{release}
%description libs
%{summary}
%package pim-ioslaves
Summary: PIM KIOslaves from %{name}
Group: System Environment/Libraries
%if "%{?_prefix}" == "/usr"
Provides: kdebase%{?_qt_suffix}-pim-ioslaves = %{version}
Obsoletes: kdebase%{?_qt_suffix}-pim-ioslaves <= 3.5.10
%endif
%description pim-ioslaves
Protocol handlers (KIOslaves) for personal information management, including:
* kio_ldap
* kio_nntp
* kio_pop3
* kio_smtp
%prep
%setup -q -n kdebase
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%if 0%{?rhel} && 0%{?rhel} < 6
%patch8 -p1
%endif
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch20 -p4
%if 0%{?rhel} > 0
%patch21 -p1
%endif
%patch22 -p1
%patch23 -p1
%patch29 -p1
%patch30 -p1
# Applies an optional distro-specific graphical theme
%if "%{?tde_bg}" != ""
# KDM Background
%__sed -i "kdm/kfrontend/genkdmconf.c" \
-e 's|"Wallpaper=isadora.png\n"|"Wallpaper=%{tde_bg}\n"|'
# TDE user default background
%__sed -i "kpersonalizer/keyecandypage.cpp" \
-e 's|#define DEFAULT_WALLPAPER "isadora.png"|#define DEFAULT_WALLPAPER "%{tde_bg}"|'
%__sed -i "startkde" \
-e 's|/usr/share/wallpapers/isadora.png.desktop|%{tde_bg}|' \
-e 's|Wallpaper=isadora.png|Wallpaper=%{tde_bg}|'
%endif
%__cp "/usr/share/aclocal/libtool.m4" "admin/libtool.m4.in"
%__cp "/usr/share/libtool/config/ltmain.sh" "admin/ltmain.sh"
%__make -f "admin/Makefile.common"
# TDE branding: removes KUbuntu references [Bug #617]
%__sed -i "kcontrol/kdm/kdm-appear.cpp" \
-e "s|Welcome to Kubuntu |Welcome to %{tde_aboutlabel} |"
%__sed -i "konqueror/about/konq_aboutpage.cc" \
-e "s|About Kubuntu|About %{tde_aboutlabel}|" \
-e "s|help:/kubuntu/|%{tde_aboutpage}|" \
-e "s|Kubuntu Documentation|%{tde_aboutlabel} Documentation|"
%__sed -i "konqueror/about/launch.html" \
-e "s|help:/kubuntu/about-kubuntu/index.html|%{tde_aboutpage}|"
%__sed -i "kdm/config.def" \
-e "s|Welcome to Trinity |Welcome to %{tde_aboutlabel} |"
# TDE default directory in 'startkde' script (KDEDIR)
%__sed -i "startkde" \
-e "s|/opt/trinity|%{_prefix}|g"
%build
unset QTDIR || : ; . /etc/profile.d/qt.sh
export PATH="%{_bindir}:${PATH}"
export LDFLAGS="-L%{_libdir} -I%{_includedir}"
export IMAKEINCLUDE="-I/usr/share/X11/config"
%configure \
--disable-rpath \
--enable-new-ldflags \
--disable-dependency-tracking \
--disable-debug --disable-warnings --enable-final \
--with-pam=yes \
--with-kdm-pam=kdm-trinity \
--with-kcp-pam=kcheckpass-trinity \
--with-kss-pam=kscreensaver-trinity \
--with-libraw1394 \
--with-openexr \
--with-samba \
--with-xinerama \
--with-xscreensaver \
--without-shadow \
--enable-closure \
--with-extra-includes=%{_includedir}/tqt
# Do NOT use %{?_smp_mflags} for this package, or it will fail to build !
%__make
%install
%__rm -rf %{?buildroot}
%__make install DESTDIR=%{?buildroot}
# Adds a GDM/KDM/XDM session called 'TDE'
%__install -D -m 644 \
"%{?buildroot}%{_datadir}/apps/kdm/sessions/kde.desktop" \
"%{?buildroot}%{_usr}/share/xsessions/tde.desktop"
# Force session name to be 'TDE'
%__sed -i "%{?buildroot}%{_usr}/share/xsessions/tde.desktop" \
-e "s,^Name=.*,Name=TDE,"
# Modifies 'startkde' to set KDEDIR and KDEHOME hardcoded specific for TDE
%__sed -i "%{?buildroot}%{_bindir}/startkde" \
-e '/^echo "\[startkde\] Starting startkde.".*/ s,$,\nexport KDEDIR=%{_prefix}\nexport KDEHOME=~/.trinity,'
# Renames '/etc/ksysguarddrc' to avoid conflict with KDE4 'ksysguard'
%__mv -f \
%{?buildroot}%{_sysconfdir}/ksysguarddrc \
%{?buildroot}%{_sysconfdir}/ksysguarddrc.tde
# TDE 3.5.12: add script "plasma-desktop" to avoid conflict with KDE4
%if "%{?_prefix}" != "/usr"
%__install -m 755 "%{SOURCE1}" "%{?buildroot}%{_bindir}"
%endif
# PAM configuration files
%__install -D -m 644 "%{SOURCE2}" "%{?buildroot}%{_sysconfdir}/pam.d/kdm-trinity"
%__install -D -m 644 "%{SOURCE3}" "%{?buildroot}%{_sysconfdir}/pam.d/kdm-trinity-np"
%__install -D -m 644 "%{SOURCE4}" "%{?buildroot}%{_sysconfdir}/pam.d/kcheckpass-trinity"
%__install -D -m 644 "%{SOURCE5}" "%{?buildroot}%{_sysconfdir}/pam.d/kscreensaver-trinity"
# KDM configuration for RHEL/Fedora
%__sed -i "%{?buildroot}%{_datadir}/config/kdm/kdmrc" \
%if 0%{?fedora} >= 16
-e "s/^#*MinShowUID=.*/MinShowUID=1000/"
%else
-e "s/^#*MinShowUID=.*/MinShowUID=500/"
%endif
# Moves the XDG configuration files to TDE directory
%if "%{_prefix}" != "/usr"
%__mkdir_p "%{?buildroot}%{_prefix}/etc"
%__mv -f "%{?buildroot}%{_sysconfdir}/xdg" "%{?buildroot}%{_prefix}/etc"
%endif
%clean
%__rm -rf %{?buildroot}
%post
touch --no-create %{_datadir}/icons/crystalsvg 2> /dev/null || :
gtk-update-icon-cache --quiet %{_datadir}/icons/crystalsvg 2> /dev/null || :
update-desktop-database 2> /dev/null || :
# Dirty hack to install '/etc/ksysguardrc' alongside with KDE4
[ -r "%{_sysconfdir}/ksysguarddrc" ] || cp -f "%{_sysconfdir}/ksysguarddrc.tde" "%{_sysconfdir}/ksysguarddrc"
%postun
touch --no-create %{_datadir}/icons/crystalsvg 2> /dev/null || :
gtk-update-icon-cache --quiet %{_datadir}/icons/crystalsvg 2> /dev/null || :
update-desktop-database 2> /dev/null || :
%post libs
/sbin/ldconfig
%postun libs
/sbin/ldconfig
%post extras
for f in crystalsvg hicolor ; do
touch --no-create %{_datadir}/icons/${f} 2> /dev/null ||:
gtk-update-icon-cache -q %{_datadir}/icons/${f} 2> /dev/null ||:
done
update-desktop-database %{_datadir}/applications > /dev/null 2>&1 || :
%postun extras
for f in crystalsvg hicolor ; do
touch --no-create %{_datadir}/icons/${f} 2> /dev/null ||:
gtk-update-icon-cache -q %{_datadir}/icons/${f} 2> /dev/null ||:
done
update-desktop-database %{_datadir}/applications > /dev/null 2>&1 || :
%files extras
%defattr(-,root,root,-)
# kappfinder
%{_bindir}/kappfinder
%{_datadir}/applications/kde/kappfinder.desktop
%{_datadir}/applnk/System/kappfinder.desktop
%{_datadir}/apps/kappfinder/
%{_datadir}/icons/hicolor/*/apps/kappfinder.png
# ktip
%{_bindir}/ktip
%{_datadir}/applications/kde/ktip.desktop
%{_datadir}/applnk/Toys/ktip.desktop
%{_datadir}/apps/kdewizard
%{_datadir}/autostart/ktip.desktop
%{_datadir}/icons/hicolor/*/apps/ktip*
# kpersonalizer
%{_bindir}/kpersonalizer
%{_datadir}/applications/kde/kpersonalizer.desktop
%{_datadir}/applnk/System/kpersonalizer.desktop
%{_datadir}/apps/kpersonalizer/
%{_datadir}/icons/crystalsvg/*/apps/kpersonalizer.png
# kpager
%{_bindir}/kpager
%{_datadir}/applications/kde/kpager.desktop
%{_datadir}/applnk/Utilities/kpager.desktop
%{_datadir}/icons/hicolor/*/apps/kpager.png
%files
%defattr(-,root,root,-)
# kappfinder
%exclude %{_datadir}/applications/kde/kappfinder.desktop
%exclude %{_datadir}/applnk/System/kappfinder.desktop
%exclude %{_datadir}/apps/kappfinder/
%exclude %{_datadir}/icons/hicolor/*/apps/kappfinder.png
# ktip
%exclude %{_datadir}/applications/kde/ktip.desktop
%exclude %{_datadir}/applnk/Toys/ktip.desktop
%exclude %{_datadir}/apps/kdewizard
%exclude %{_datadir}/autostart/ktip.desktop
%exclude %{_datadir}/icons/hicolor/*/apps/ktip*
# kpersonalizer
%exclude %{_datadir}/applications/kde/kpersonalizer.desktop
%exclude %{_datadir}/applnk/System/kpersonalizer.desktop
%exclude %{_datadir}/apps/kpersonalizer/
%exclude %{_datadir}/icons/crystalsvg/*/apps/kpersonalizer.png
# kpager
%exclude %{_datadir}/applications/kde/kpager.desktop
%exclude %{_datadir}/applnk/Utilities/kpager.desktop
%exclude %{_datadir}/icons/hicolor/*/apps/kpager.png
# Pam configuration
%{_sysconfdir}/pam.d/*
%doc AUTHORS COPYING COPYING-DOCS README README.pam
%{tde_docdir}/HTML/en/*
%config(noreplace) %{_sysconfdir}/ksysguarddrc.tde
%{_bindir}/genkdmconf
%{_bindir}/kaccess
%{_bindir}/kapplymousetheme
%{_bindir}/kate
%{_bindir}/kblankscrn.kss
%{_bindir}/kbookmarkmerger
%{_bindir}/kcminit
%{_bindir}/kcminit_startup
%{_bindir}/kcontrol
%{_bindir}/kcontroledit
%{_bindir}/kdebugdialog
%{_bindir}/kdeinstallktheme
%{_bindir}/kdepasswd
%{_bindir}/kdesu
%attr(0755,root,root) %{_bindir}/kdesud
%{_bindir}/kdialog
%{_bindir}/kdm
%{_bindir}/kdmctl
%{_bindir}/keditbookmarks
%{_bindir}/keditfiletype
%{_bindir}/kfind
%{_bindir}/kfmclient
%{_bindir}/khelpcenter
%{_bindir}/khotkeys
%{_bindir}/kinfocenter
%{_bindir}/klipper
%{_bindir}/kmenuedit
%{_bindir}/konqueror
%{_bindir}/konsole
%{_bindir}/krandom.kss
%{_bindir}/krdb
%{_bindir}/kreadconfig
%{_bindir}/ksmserver
%{_bindir}/ksplashsimple
%{_bindir}/kstart
%{_bindir}/ksysguard
%{_bindir}/ksysguardd
%{_bindir}/ksystraycmd
%{_bindir}/ktrash
%{_bindir}/kwin
%{_bindir}/kwin_killer_helper
%{_bindir}/kwin_rules_dialog
%{_bindir}/kwrite
%{_bindir}/kwriteconfig
%{_bindir}/kxkb
%{_bindir}/nspluginscan
%{_bindir}/nspluginviewer
%{_bindir}/startkde
%{_bindir}/kcheckrunning
%{_bindir}/kdesktop
%{_bindir}/kdesktop_lock
%{_bindir}/kdm_config
%{_bindir}/kdm_greet
%{_bindir}/kfontinst
%{_bindir}/kfontview
%{_bindir}/krootimage
%{_bindir}/kwebdesktop
%{_datadir}/autostart/*
%{_datadir}/desktop-directories/*
%{_datadir}/locale/*/entry.desktop
%{_datadir}/locale/l10n
%{_datadir}/templates/*
%{_datadir}/templates/.source/*
%{_datadir}/wallpapers/*
%{_bindir}/appletproxy
%{_bindir}/drkonqi
%{_bindir}/extensionproxy
%{_bindir}/kasbar
%attr(4755,root,root) %{_bindir}/kcheckpass
%{_bindir}/kdeeject
%{_bindir}/khc_docbookdig.pl
%{_bindir}/khc_htdig.pl
%{_bindir}/khc_htsearch.pl
%{_bindir}/khc_indexbuilder
%{_bindir}/khc_mansearch.pl
%{_bindir}/kicker
%{_bindir}/knetattach
%if 0%{?rhel} >= 6 || 0%{?fedora} >= 15
%{_bindir}/krandrtray
%endif
%{_bindir}/kompmgr
%{_bindir}/kpm
%{_bindir}/ksplash
%{_libdir}/kconf_update_bin
%{_datadir}/applnk/*.desktop
%{_datadir}/applnk/*/*
%{_datadir}/applnk/.hidden/*
%exclude %{_datadir}/applnk/.hidden/.directory
%{_datadir}/config.kcfg/*
%{_bindir}/kio_media_mounthelper
%{_bindir}/kdcop
%{_bindir}/kdeprintfax
%{_bindir}/khc_beagle_index.pl
%{_bindir}/khc_beagle_search.pl
%{_bindir}/kxdglauncher
%{_bindir}/kjobviewer
%{_bindir}/klocaldomainurifilterhelper
%{_bindir}/kprinter
%{_datadir}/applications/*/*
%{_datadir}/apps/*
%{_datadir}/icons/*color/*/*/*
%{_datadir}/icons/crystalsvg/*/*/*
%{_datadir}/mimelnk/*/*
%{_datadir}/services/*
%{_datadir}/servicetypes/*
%{_datadir}/sounds/*
%{tde_libdir}/*
%{_libdir}/libkdeinit_*.*
%if "%{_prefix}" != "/usr"
%{_prefix}/etc/xdg/menus/applications-merged/kde-essential.menu
%{_prefix}/etc/xdg/menus/kde-information.menu
%{_prefix}/etc/xdg/menus/kde-screensavers.menu
%{_prefix}/etc/xdg/menus/kde-settings.menu
%else
%{_sysconfdir}/xdg/menus/applications-merged/kde-essential.menu
%{_sysconfdir}/xdg/menus/kde-information.menu
%{_sysconfdir}/xdg/menus/kde-screensavers.menu
%{_sysconfdir}/xdg/menus/kde-settings.menu
%endif
/usr/share/xsessions/*.desktop
# Remove conflicts with redhat-menus
%if "%{?_prefix}" != "/usr"
%{_bindir}/plasma-desktop
%config(noreplace) %{_datadir}/config/*
%else
%exclude %{_datadir}/config
%endif
# exclude pim-ioslaves files from main package
%exclude %{tde_libdir}/kio_ldap.*
%exclude %{tde_libdir}/kio_nntp.*
%exclude %{tde_libdir}/kio_pop3.*
%exclude %{tde_libdir}/kio_smtp.*
%exclude %{_datadir}/services/ldap*.protocol
%exclude %{_datadir}/services/nntp*.protocol
%exclude %{_datadir}/services/pop3*.protocol
%exclude %{_datadir}/services/smtp*.protocol
# TDE 3.5.12 specific
%{_bindir}/kde3
%exclude %{_datadir}/applications/kde/display.desktop
%exclude %{_datadir}/fonts/override/fonts.dir
%{_docdir}/kdm/README
%files libs
%defattr(-,root,root,-)
%exclude %{_libdir}/libkdeinit_*.*
%{_libdir}/lib*.so.*
%{_libdir}/lib*.la
%files pim-ioslaves
%defattr(-,root,root,-)
%{tde_libdir}/kio_ldap.*
%{tde_libdir}/kio_nntp.*
%{tde_libdir}/kio_pop3.*
%{tde_libdir}/kio_smtp.*
%{_datadir}/services/ldap*.protocol
%{_datadir}/services/nntp*.protocol
%{_datadir}/services/pop3*.protocol
%{_datadir}/services/smtp*.protocol
%files devel
%defattr(-,root,root,-)
%{_includedir}/*.h
%dir %{_includedir}/kate
%{_includedir}/kate/*
%dir %{_includedir}/kwin
%{_includedir}/kwin/*
%dir %{_includedir}/ksgrd
%{_includedir}/ksgrd/*
%dir %{_includedir}/ksplash
%{_includedir}/ksplash/*
%{_libdir}/lib*.so
%exclude %{_libdir}/libkdeinit_*.*
%changelog
* Thu Jan 05 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.12-15
- Add KDM option to hide 'Menu' button on login prompt
* Wed Dec 21 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-14
- Fix kdesktop_lock missing black background on kscreensaver failure
* Thu Dec 11 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-13
- Backports patches from TDE 3.5.13-10
- Removes Kubuntu branding [TDE Bug #449]
- Fix 'kio_man' on RHEL 5 and RHEL 6 [TDE Bug #714]
- Restores the 'number of files' and sorting widgets to the Kate configuration [TDE Bug #244]
- Re-enables 'open tab in background' konqueror feature [TDE Bug #245]
- Fix error message 'cannot find parent folder' on konqueror sidebar
- Fix KDEDIRS and other variables in 'startkde', that messes up translations.
* Sun Nov 20 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-12
- Updates Kickoff menu Fix [TDE Bugs #281, #508]
- Add distribution-specific start button icon
- Add graphical theme for RHEL 5, RHEL 6, Fedora 15, Fedora 16
- Moves XDG files in TDE prefix to avoid conflict with distro-provided KDE
- Add "service(graphical-login)"
- kdmrc: sets "MinShowUID=500"
- Add missing BuildRequires
* Fri Sep 16 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-11
- Add support for RHEL 5.
- Remove file conflicts with KDE 4.6.5 under Fedora 15
* Mon Sep 12 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-10
- Add "Group" field
* Sun Sep 04 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-9
- Import to GIT
* Tue Aug 23 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-8
- Add missing BuildRequires
- Add Patch7, Patch8, Patch9 to allow compilation under GCC >= 4.5.2
* Mon Aug 22 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-7
- Correct macro to install under "/opt", if desired
* Wed Jul 20 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-6
- Add patch to force halbackend to use HAL-provided mount options
* Wed Jul 20 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-5
- Add patch to modify "Open terminal here" shortcut (now opens in home directory)
* Tue Jul 19 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-4
- Add 'BuildRequires: dbus-qt' to enable HAL support
* Wed Jun 22 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-3
- Adds setuid bit on '/usr/bin/kcheckpass'
- Removes '/usr/share/applications/kde/display.desktop' (does not work on RHEL 6.0)
* Mon Dec 20 2010 Francois Andriot <francois.andriot@free.fr> - 3.5.12-2
- Add missing Requires
- Rename 'kde3.desktop' to 'kde.desktop' in case of default prefix
* Fri Dec 17 2010 Francois Andriot <francois.andriot@free.fr> - 3.5.12-1
- Add macro _kde3_prefix to define custom installation prefix (ex: /opt/kde3)
- Add '--with-extra-includes=%{_includedir}/tqt'
- Add 'patch3' to remove ignore button on kdesu dialog box
- Add 'patch4' r1182808.diff : Fix My Documents shortcut on desktop
* Wed Dec 14 2010 Francois Andriot <francois.andriot@free.fr> - 3.5.12-0
- Initial version
- Add script 'plasma-desktop' to prevent KDE4 plasma automatic startup
- Add 'patch0' to fix for DBUS include files in RHEL6
- Add 'patch1' r1201523.diff : [kdebase/kcontrol] fix for openssl 1.0
- Add 'patch2' r1201705.diff : [kdebase/kcontrol] make it compatible with openssl < 1.0

@ -1,81 +0,0 @@
--- kdebase/kdesktop/bgmanager.cc.ORI 2012-09-06 17:20:49.564915154 -0400
+++ kdebase/kdesktop/bgmanager.cc 2012-09-06 17:21:01.969682348 -0400
@@ -1013,13 +1013,13 @@
slotChangeDesktop(0);
}
-#ifdef COMPOSITE
void KBackgroundManager::slotCmBackgroundChanged( bool )
{
+#ifdef COMPOSITE
m_tPixmap->fill(TQColor(0, 0x0));
m_Hash = 0;
slotChangeDesktop(0);
-}
#endif
+}
#include "bgmanager.moc"
--- kdebase/kdesktop/main.cc.ORI 2012-09-07 20:33:09.716283507 +0200
+++ kdebase/kdesktop/main.cc 2012-09-07 20:33:31.683842727 +0200
@@ -43,7 +43,7 @@
#include <fcntl.h>
#include <stdlib.h>
-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
+#if defined(WITH_COMPOSITE) && defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
#define COMPOSITE
#endif
--- kdebase/kdesktop/bgmanager.h.ORI 2012-09-07 20:36:28.196299160 +0200
+++ kdebase/kdesktop/bgmanager.h 2012-09-07 20:36:52.420812591 +0200
@@ -15,7 +15,7 @@
#include <KBackgroundIface.h>
-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
+#if defined(WITH_COMPOSITE) && defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
#define COMPOSITE
#endif
--- kdebase/kdesktop/kdesktopapp.h.ORI 2012-09-07 20:37:14.677365503 +0200
+++ kdebase/kdesktop/kdesktopapp.h 2012-09-07 20:37:25.194154223 +0200
@@ -23,7 +23,7 @@
#include <config.h>
#include <kuniqueapplication.h>
-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
+#if defined(WITH_COMPOSITE) && defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
#define COMPOSITE
#endif
--- kdebase/konsole/konsole/main.cpp.ORI 2012-09-07 20:37:37.749901966 +0200
+++ kdebase/konsole/konsole/main.cpp 2012-09-07 20:37:46.683722469 +0200
@@ -46,7 +46,7 @@
#include "konsole.h"
-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
+#if defined(WITH_COMPOSITE) && defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
#define COMPOSITE
#endif
--- kdebase/CMakeLists.txt.ORI 2012-09-07 20:41:11.142612361 +0200
+++ kdebase/CMakeLists.txt 2012-09-07 20:42:40.138822080 +0200
@@ -78,6 +78,7 @@
option( WITH_ARTS "Enable aRts support" OFF )
option( WITH_I8K "Enable Dell laptop support (ksysguard)" OFF )
option( WITH_HAL "Enable HAL support" OFF )
+option( WITH_COMPOSITE "Enable COMPOSITE support" OFF )
##### user requested modules ####################
--- kdebase/config.h.cmake.composite 2012-09-07 20:44:49.980208832 +0200
+++ kdebase/config.h.cmake 2012-09-07 20:44:56.929068934 +0200
@@ -177,3 +177,6 @@
// tsak
#cmakedefine BUILD_TSAK "@BUILD_TSAK@"
+
+ // kdesktop, konsole
+ #cmakedefine WITH_COMPOSITE "@WITH_COMPOSITE@"

@ -1,33 +0,0 @@
commit b0fa10df6cf9ba377d6bfdef719efc8ca4fe57a0
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1337062555 -0500
Add drag and drop to kate file list in manual mode
diff --git a/kate/app/katefilelist.cpp b/kate/app/katefilelist.cpp
index bc5b0a1..bd2d087 100644
--- a/kate/app/katefilelist.cpp
+++ b/kate/app/katefilelist.cpp
@@ -102,7 +102,7 @@ KateFileList::KateFileList (KateMainWindow *main,
addColumn("Document Name");
setSelectionMode( TQListView::Single );
- setSorting( 0, true );
+ setSortType(KateFileList::sortByID);
setShowToolTips( false );
setupActions ();
@@ -408,9 +408,13 @@ void KateFileList::setSortType (int s)
m_sort = s;
if (m_sort == KateFileList::sortManual) {
setSorting( -1, true );
+ setDragEnabled(true);
+ setAcceptDrops(true);
}
else {
setSorting( 0, true );
+ setDragEnabled(false);
+ setAcceptDrops(false);
updateSort ();
}
}

@ -1,167 +0,0 @@
commit 46a657f7108284d4f02107d11fa407cbf95b86b9
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1337058308 -0500
Add the ability to reorder documents in kate
diff --git a/kate/app/katefilelist.cpp b/kate/app/katefilelist.cpp
index 8d34c38..bc5b0a1 100644
--- a/kate/app/katefilelist.cpp
+++ b/kate/app/katefilelist.cpp
@@ -138,8 +138,14 @@ void KateFileList::setupActions ()
windowPrev = KStdAction::forward(TQT_TQOBJECT(this), TQT_SLOT(slotNextDocument()), m_main->actionCollection());
sortAction = new KSelectAction( i18n("Sort &By"), 0,
m_main->actionCollection(), "filelist_sortby" );
+ listMoveFileUp = new KAction( i18n("Move File Up"), 0, m_main->actionCollection(), "filelist_move_up" );
+ listMoveFileUp->setShortcut(KShortcut(CTRL + SHIFT + Key_Comma));
+ listMoveFileDown = new KAction( i18n("Move File Down"), 0, m_main->actionCollection(), "filelist_move_down" );
+ listMoveFileDown->setShortcut(KShortcut(CTRL + SHIFT + Key_Period));
+ connect( listMoveFileUp, TQT_SIGNAL(activated()), TQT_TQOBJECT(this), TQT_SLOT(moveFileUp()) );
+ connect( listMoveFileDown, TQT_SIGNAL(activated()), TQT_TQOBJECT(this), TQT_SLOT(moveFileDown()) );
TQStringList l;
- l << i18n("Opening Order") << i18n("Document Name") << i18n("URL");
+ l << i18n("Opening Order") << i18n("Document Name") << i18n("URL") << i18n("Manual Placement");
sortAction->setItems( l );
connect( sortAction, TQT_SIGNAL(activated(int)), TQT_TQOBJECT(this), TQT_SLOT(setSortType(int)) );
}
@@ -353,10 +359,25 @@ void KateFileList::slotMenu ( TQListViewItem *item, const TQPoint &p, int /*col*
if (!item)
return;
+ m_clickedMenuItem = item;
+ if (m_clickedMenuItem->itemAbove()) {
+ listMoveFileUp->setEnabled(true);
+ }
+ else {
+ listMoveFileUp->setEnabled(false);
+ }
+ if (m_clickedMenuItem->itemBelow()) {
+ listMoveFileDown->setEnabled(true);
+ }
+ else {
+ listMoveFileDown->setEnabled(false);
+ }
+
TQPopupMenu *menu = (TQPopupMenu*) ((viewManager->mainWindow())->factory()->container("filelist_popup", viewManager->mainWindow()));
- if (menu)
+ if (menu) {
menu->exec(p);
+ }
}
TQString KateFileList::tooltip( TQListViewItem *item, int )
@@ -385,7 +406,45 @@ TQString KateFileList::tooltip( TQListViewItem *item, int )
void KateFileList::setSortType (int s)
{
m_sort = s;
- updateSort ();
+ if (m_sort == KateFileList::sortManual) {
+ setSorting( -1, true );
+ }
+ else {
+ setSorting( 0, true );
+ updateSort ();
+ }
+}
+
+void KateFileList::moveFileUp()
+{
+ if (m_clickedMenuItem) {
+ sortAction->setCurrentItem(KateFileList::sortManual);
+ setSortType(KateFileList::sortManual);
+ TQListViewItem* nitemabove = m_clickedMenuItem->itemAbove();
+ if (nitemabove) {
+ nitemabove = nitemabove->itemAbove();
+ if (nitemabove) {
+ m_clickedMenuItem->moveItem(nitemabove);
+ }
+ else {
+ // Qt made this hard
+ nitemabove = m_clickedMenuItem->itemAbove();
+ nitemabove->moveItem(m_clickedMenuItem);
+ }
+ }
+ }
+}
+
+void KateFileList::moveFileDown()
+{
+ if (m_clickedMenuItem) {
+ sortAction->setCurrentItem(KateFileList::sortManual);
+ setSortType(KateFileList::sortManual);
+ TQListViewItem* nitemabove = m_clickedMenuItem->itemBelow();
+ if (nitemabove) {
+ m_clickedMenuItem->moveItem(nitemabove);
+ }
+ }
}
void KateFileList::updateSort ()
@@ -441,6 +500,11 @@ KateFileListItem::KateFileListItem( TQListView* lv,
m_edithistpos( 0 ),
m_docNumber( _doc->documentNumber() )
{
+ // Move this document to the end of the list where it belongs
+ TQListViewItem* lastitem = lv->lastItem();
+ if (lastitem) {
+ moveItem(lastitem);
+ }
}
KateFileListItem::~KateFileListItem()
diff --git a/kate/app/katefilelist.h b/kate/app/katefilelist.h
index 176898c..e3504cb 100644
--- a/kate/app/katefilelist.h
+++ b/kate/app/katefilelist.h
@@ -90,7 +90,8 @@ class KateFileList : public KListView
enum sorting {
sortByID = 0,
sortByName = 1,
- sortByURL = 2
+ sortByURL = 2,
+ sortManual = 3
};
TQString tooltip( TQListViewItem *item, int );
@@ -111,6 +112,8 @@ class KateFileList : public KListView
public slots:
void setSortType (int s);
+ void moveFileUp();
+ void moveFileDown();
void slotNextDocument();
void slotPrevDocument();
@@ -151,6 +154,8 @@ class KateFileList : public KListView
KAction* windowNext;
KAction* windowPrev;
KSelectAction* sortAction;
+ KAction* listMoveFileUp;
+ KAction* listMoveFileDown;
TQPtrList<KateFileListItem> m_viewHistory;
TQPtrList<KateFileListItem> m_editHistory;
@@ -158,6 +163,8 @@ class KateFileList : public KListView
TQColor m_viewShade, m_editShade;
bool m_enableBgShading;
+ TQListViewItem *m_clickedMenuItem;
+
class ToolTip *m_tooltip;
};
diff --git a/kate/data/kateui.rc b/kate/data/kateui.rc
index 27df006..6e784e9 100644
--- a/kate/data/kateui.rc
+++ b/kate/data/kateui.rc
@@ -162,6 +162,9 @@
<Action name="file_close"/>
<Action name="file_close_all"/>
<Separator/>
+ <Action name="filelist_move_up"/>
+ <Action name="filelist_move_down"/>
+ <Separator/>
<Action name="filelist_sortby"/>
</Menu>

File diff suppressed because it is too large Load Diff

@ -1,76 +0,0 @@
commit 80deb52955cbd917e10f015f37699d830cb681ce
Author: Slávek Banko <slavek.banko@axis.cz>
Date: 1339336699 +0200
Add xscreensaver support to CMake
This closes Bug 859
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 31fb46c..3da5b2f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -67,6 +67,7 @@
option( WITH_XDAMAGE "Enable xdamage support" OFF )
option( WITH_XEXT "Enable xext support" OFF )
option( WITH_XTEST "Enable xext support" OFF )
+option( WITH_XSCREENSAVER "Enable xscreensaver support" ${WITH_ALL_OPTIONS} )
option( WITH_LIBUSB "Enable control of some mouse models through libusb" OFF )
option( WITH_LIBRAW1394 "Enable visualization of ieee1394 devices through libraw1394" OFF )
option( WITH_SUDO_KDESU_BACKEND "Use sudo as backend for kdesu (default is su)" OFF )
diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
index ded1d00..1d9c83d 100644
--- a/ConfigureChecks.cmake
+++ b/ConfigureChecks.cmake
@@ -144,6 +144,26 @@ if( WITH_XTEST )
endif( )
+# xscreensaver ()
+if( WITH_XSCREENSAVER )
+ check_library_exists( Xss XScreenSaverQueryInfo "" HAVE_XSSLIB )
+ if( HAVE_XSSLIB )
+ pkg_search_module( XSS xscrnsaver )
+ else( )
+ check_library_exists( Xext XScreenSaverQueryInfo "" HAVE_XSSLIB )
+ if( HAVE_XSSLIB )
+ pkg_search_module( XSS xext )
+ endif( )
+ endif( )
+ check_include_file( X11/extensions/scrnsaver.h HAVE_XSCREENSAVER_H )
+ if( HAVE_XSSLIB AND HAVE_XSCREENSAVER_H )
+ set( HAVE_XSCREENSAVER 1 )
+ else( )
+ tde_message_fatal( "xscreensaver is requested, but was not found on your system" )
+ endif( )
+endif( )
+
+
# GL
if( BUILD_KDESKTOP OR BUILD_KCONTROL OR BUILD_KSCREENSAVER )
check_library_exists( GL glXChooseVisual "" HAVE_GLXCHOOSEVISUAL )
diff --git a/config.h.cmake b/config.h.cmake
index 39d6d85..772ca88 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -21,6 +21,9 @@
// kxkb
#cmakedefine HAVE_XTEST 1
+// xscreensaver
+#cmakedefine HAVE_XSCREENSAVER 1
+
// kdm, kioslave
#cmakedefine HAVE_TERMIOS_H 1
diff --git a/kdesktop/CMakeLists.txt b/kdesktop/CMakeLists.txt
index 99d86d1..b2e4628 100644
--- a/kdesktop/CMakeLists.txt
+++ b/kdesktop/CMakeLists.txt
@@ -94,6 +94,7 @@ tde_add_tdeinit_executable( ${target} AUTOMOC
kdesktopsettings-static bgnd-static dmctl-static
konq-shared kutils-shared
${XRENDER_LIBRARIES} ${XCURSOR_LIBRARIES} Xext dl
+ ${XSS_LIBRARIES}
)

@ -1,372 +0,0 @@
commit 057932620ba8355a6506b9d437518e253ba14ed9
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1327619240 -0600
Clean up lock screen internals
This cleanup is part of an effort to resolve Bug 810, but a new Qt3 version is required to fully resolve it
diff --git a/kdesktop/lock/autologout.cc b/kdesktop/lock/autologout.cc
index 22b449c..bef39dd 100644
--- a/kdesktop/lock/autologout.cc
+++ b/kdesktop/lock/autologout.cc
@@ -82,6 +82,8 @@ AutoLogout::AutoLogout(LockProcess *parent) : TQDialog(parent, "password dialog"
mCountdownTimerId = startTimer(1000/25);
connect(tqApp, TQT_SIGNAL(activity()), TQT_SLOT(slotActivity()));
+
+ setFixedSize( sizeHint() );
}
AutoLogout::~AutoLogout()
diff --git a/kdesktop/lock/infodlg.cc b/kdesktop/lock/infodlg.cc
index f5f35b9..3fbc276 100644
--- a/kdesktop/lock/infodlg.cc
+++ b/kdesktop/lock/infodlg.cc
@@ -99,6 +99,7 @@ InfoDlg::InfoDlg(LockProcess *parent)
frameLayout->addLayout( layStatus, 1, 1 );
installEventFilter(this);
+ setFixedSize( sizeHint() );
}
InfoDlg::~InfoDlg()
diff --git a/kdesktop/lock/lockdlg.cc b/kdesktop/lock/lockdlg.cc
index 0863a22..f3eeee0 100644
--- a/kdesktop/lock/lockdlg.cc
+++ b/kdesktop/lock/lockdlg.cc
@@ -215,6 +215,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin)
mNewSessButton->hide();
installEventFilter(this);
+ setFixedSize( sizeHint() );
mFailedTimerId = 0;
mTimeoutTimerId = startTimer(PASSDLG_HIDE_TIMEOUT);
@@ -598,6 +599,7 @@ void PasswordDlg::show()
{
TQDialog::show();
TQApplication::flushX();
+ setFixedSize( sizeHint() );
}
void PasswordDlg::slotStartNewSession()
@@ -818,6 +820,8 @@ void PasswordDlg::slotSwitchUser()
connect( btn, TQT_SIGNAL(clicked()), &dialog, TQT_SLOT(reject()) );
vbox2->addWidget( btn );
+ dialog.setFixedSize( dialog.sizeHint() );
+
int ret = static_cast< LockProcess* >(parent())->execDialog( &dialog );
if (ret != TQDialog::Rejected) {
TQDialog::reject();
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
index 5acc96e..9648bbc 100644
--- a/kdesktop/lock/lockprocess.cc
+++ b/kdesktop/lock/lockprocess.cc
@@ -4,7 +4,7 @@
//
// Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
// Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org>
-// Copyright (c) 2010-2011 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+// Copyright (c) 2010-2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
//
//kdesktop keeps running and checks user inactivity
@@ -111,6 +111,10 @@ Status DPMSInfo ( Display *, CARD16 *, BOOL * );
#define LOCK_GRACE_DEFAULT 5000
#define AUTOLOGOUT_DEFAULT 600
+// FIXME
+// This should be defined if Qt 3.4.0 or higher is in use
+// #define KEEP_MOUSE_UNGRABBED 1
+
// These lines are taken on 10/2009 from X.org (X11/XF86keysym.h), defining some special multimedia keys
#define XF86XK_AudioMute 0x1008FF12
#define XF86XK_AudioRaiseVolume 0x1008FF13
@@ -183,6 +187,10 @@ LockProcess::LockProcess(bool child, bool useBlankOnly)
mBackingStartupDelayTimer(0),
m_startupStatusDialog(NULL)
{
+#ifdef KEEP_MOUSE_UNGRABBED
+ setNFlags(WX11DisableMove|WX11DisableClose|WX11DisableShade|WX11DisableMinimize|WX11DisableMaximize);
+#endif
+
setupSignals();
setupPipe();
@@ -267,7 +275,11 @@ LockProcess::LockProcess(bool child, bool useBlankOnly)
#endif
#if (QT_VERSION-0 >= 0x030200) // XRANDR support
- connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized()));
+ connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized()));
+#endif
+
+#ifdef KEEP_MOUSE_UNGRABBED
+ setEnabled(false);
#endif
greetPlugin.library = 0;
@@ -874,7 +886,6 @@ void LockProcess::createSaverWindow()
// this is a security risk and has been deactivated--welcome to the 21st century folks!
// setBackgroundMode(TQWidget::NoBackground);
- setCursor( tqblankCursor );
setGeometry(0, 0, mRootWidth, mRootHeight);
kdDebug(1204) << "Saver window Id: " << winId() << endl;
@@ -884,7 +895,6 @@ void LockProcess::desktopResized()
{
mBusy = true;
suspend();
- setCursor( tqblankCursor );
// Get root window size
XWindowAttributes rootAttr;
@@ -1087,6 +1097,7 @@ bool LockProcess::grabInput()
}
}
+#ifndef KEEP_MOUSE_UNGRABBED
if (!grabMouse())
{
usleep(100000);
@@ -1096,6 +1107,7 @@ bool LockProcess::grabInput()
return false;
}
}
+#endif
lockXF86();
@@ -1150,7 +1162,6 @@ bool LockProcess::startSaver()
createSaverWindow();
move(0, 0);
show();
- setCursor( tqblankCursor );
raise();
XSync(qt_xdisplay(), False);
@@ -1313,6 +1324,8 @@ void LockProcess::repaintRootWindowIfNeeded()
bool LockProcess::startHack()
{
+ setCursor( tqblankCursor );
+
if ((mEnsureVRootWindowSecurityTimer) && (!mEnsureVRootWindowSecurityTimer->isActive())) mEnsureVRootWindowSecurityTimer->start(250, FALSE);
if (currentDialog || (!mDialogs.isEmpty()))
@@ -1429,6 +1442,7 @@ void LockProcess::stopHack()
mHackProc.kill(SIGKILL);
}
}
+ setCursor( tqarrowCursor );
}
//---------------------------------------------------------------------------
@@ -1730,7 +1744,6 @@ void LockProcess::doFunctionKeyBroadcast() {
mDialogControlLock = false;
}
}
- setCursor( tqblankCursor );
DCOPRef ref( "*", "MainApplication-Interface");
ref.send("sendFakeKey", DCOPArg(mkeyCode , "unsigned int"));
diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
index c0b8e24..0cbef60 100644
--- a/kdesktop/lock/main.cc
+++ b/kdesktop/lock/main.cc
@@ -45,8 +45,9 @@ bool trinity_desktop_lock_forced = FALSE;
bool MyApp::x11EventFilter( XEvent *ev )
{
- if (ev->type == XKeyPress || ev->type == ButtonPress)
+ if (ev->type == XKeyPress || ev->type == ButtonPress) {
emit activity();
+ }
else if (ev->type == MotionNotify) {
time_t tick = time( 0 );
if (tick != lastTick) {
diff --git a/kdesktop/lock/querydlg.cc b/kdesktop/lock/querydlg.cc
index e672d54..5f50cbe 100644
--- a/kdesktop/lock/querydlg.cc
+++ b/kdesktop/lock/querydlg.cc
@@ -118,6 +118,7 @@ QueryDlg::QueryDlg(LockProcess *parent)
connect(ok, TQT_SIGNAL(clicked()), TQT_SLOT(slotOK()));
installEventFilter(this);
+ setFixedSize( sizeHint() );
}
QueryDlg::~QueryDlg()
diff --git a/kdesktop/lock/sakdlg.cc b/kdesktop/lock/sakdlg.cc
index 17f54a1..d96e0af 100644
--- a/kdesktop/lock/sakdlg.cc
+++ b/kdesktop/lock/sakdlg.cc
@@ -102,6 +102,7 @@ SAKDlg::SAKDlg(LockProcess *parent)
mStatusLabel->setText("<b>" + i18n("Press Ctrl+Alt+Del to begin.") + "</b><p>" + i18n("This process helps keep your password secure.") + "<br>" + i18n("It prevents unauthorized users from emulating the login screen."));
installEventFilter(this);
+ setFixedSize( sizeHint() );
mSAKProcess = new KProcess;
*mSAKProcess << "kdmtsak";
diff --git a/kdesktop/lock/securedlg.cc b/kdesktop/lock/securedlg.cc
index 532b904..37524f7 100644
--- a/kdesktop/lock/securedlg.cc
+++ b/kdesktop/lock/securedlg.cc
@@ -144,6 +144,7 @@ SecureDlg::SecureDlg(LockProcess *parent)
mSwitchButton->setFixedWidth(btnSize);
installEventFilter(this);
+ setFixedSize( sizeHint() );
}
SecureDlg::~SecureDlg()
commit 678bea5ba74b3b39981e482e188c61fdd37786f0
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1328606373 -0600
Allow minimal managed window interaction inside the lock process
This closes Bug 810
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
index 9648bbc..2e9c9d3 100644
--- a/kdesktop/lock/lockprocess.cc
+++ b/kdesktop/lock/lockprocess.cc
@@ -111,8 +111,8 @@ Status DPMSInfo ( Display *, CARD16 *, BOOL * );
#define LOCK_GRACE_DEFAULT 5000
#define AUTOLOGOUT_DEFAULT 600
-// FIXME
-// This should be defined if Qt 3.4.0 or higher is in use
+// Setting this define is INSECURE
+// Use it for debugging purposes ONLY
// #define KEEP_MOUSE_UNGRABBED 1
// These lines are taken on 10/2009 from X.org (X11/XF86keysym.h), defining some special multimedia keys
@@ -185,7 +185,12 @@ LockProcess::LockProcess(bool child, bool useBlankOnly)
mHackStartupEnabled(true),
m_rootPixmap(NULL),
mBackingStartupDelayTimer(0),
- m_startupStatusDialog(NULL)
+ m_startupStatusDialog(NULL),
+ m_mouseDown(0),
+ m_mousePrevX(0),
+ m_mousePrevY(0),
+ m_dialogPrevX(0),
+ m_dialogPrevY(0)
{
#ifdef KEEP_MOUSE_UNGRABBED
setNFlags(WX11DisableMove|WX11DisableClose|WX11DisableShade|WX11DisableMinimize|WX11DisableMaximize);
@@ -208,6 +213,8 @@ LockProcess::LockProcess(bool child, bool useBlankOnly)
mEnsureVRootWindowSecurityTimer = new TQTimer( this );
connect( mEnsureVRootWindowSecurityTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(repaintRootWindowIfNeeded()) );
+ connect(tqApp, TQT_SIGNAL(mouseInteraction(XEvent *)), TQT_SLOT(slotMouseActivity(XEvent *)));
+
mHackDelayStartupTimeout = trinity_desktop_lock_delay_screensaver_start?KDesktopSettings::timeout()*1000:10*1000;
mHackStartupEnabled = trinity_desktop_lock_delay_screensaver_start?KDesktopSettings::screenSaverEnabled():true;
@@ -2200,4 +2207,64 @@ void LockProcess::sendVkbdFocusInOut( WId window, Time t )
}
}
+void LockProcess::slotMouseActivity(XEvent *event)
+{
+ bool inFrame = 0;
+ bool inDialog = 0;
+ XButtonEvent *be = (XButtonEvent *) event;
+ XMotionEvent *me = (XMotionEvent *) event;
+ if (event->type == ButtonPress) {
+ // Get geometry including window frame/titlebar
+ TQRect fgeom = mDialogs.first()->frameGeometry();
+ TQRect wgeom = mDialogs.first()->geometry();
+
+ if (((be->x_root > fgeom.x()) && (be->y_root > fgeom.y())) && ((be->x_root < (fgeom.x()+fgeom.width())) && (be->y_root < (fgeom.y()+fgeom.height())))) {
+ inFrame = 1;
+ }
+ if (((be->x_root > wgeom.x()) && (be->y_root > wgeom.y())) && ((be->x_root < (wgeom.x()+wgeom.width())) && (be->y_root < (wgeom.y()+wgeom.height())))) {
+ inDialog = 1;
+ }
+
+ // Clicked inside dialog; set focus
+ if (inFrame == TRUE) {
+ WId window = mDialogs.first()->winId();
+ XSetInputFocus(qt_xdisplay(), window, RevertToParent, CurrentTime);
+ fakeFocusIn(window);
+ // Why this needs to be repeated I have no idea...
+ XSetInputFocus(qt_xdisplay(), window, RevertToParent, CurrentTime);
+ fakeFocusIn(window);
+ }
+
+ // Clicked inside window handle (or border); drag window
+ if ((inFrame == TRUE) && (inDialog == FALSE)) {
+ 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( qt_xdisplay(), GRABEVENTS, TQCursor(tqsizeAllCursor).handle(), CurrentTime);
+ }
+ }
+
+ // Drag the window...
+ if (event->type == MotionNotify) {
+ if (m_mouseDown == TRUE) {
+ int deltaX = me->x_root - m_mousePrevX;
+ int deltaY = me->y_root - m_mousePrevY;
+ m_dialogPrevX = m_dialogPrevX + deltaX;
+ m_dialogPrevY = m_dialogPrevY + deltaY;
+ mDialogs.first()->move(m_dialogPrevX, m_dialogPrevY);
+
+ m_mousePrevX = me->x_root;
+ m_mousePrevY = me->y_root;
+ }
+ }
+
+ if (event->type == ButtonRelease) {
+ m_mouseDown = 0;
+ XChangeActivePointerGrab( qt_xdisplay(), GRABEVENTS, TQCursor(tqarrowCursor).handle(), CurrentTime);
+ }
+}
+
#include "lockprocess.moc"
diff --git a/kdesktop/lock/lockprocess.h b/kdesktop/lock/lockprocess.h
index 3a7e3db..18320a8 100644
--- a/kdesktop/lock/lockprocess.h
+++ b/kdesktop/lock/lockprocess.h
@@ -94,6 +94,7 @@ private slots:
bool closeCurrentWindow();
void repaintRootWindowIfNeeded();
void startSecureDialog();
+ void slotMouseActivity(XEvent *event);
private:
void configure();
@@ -197,6 +198,12 @@ private:
KSMModalDialog* m_startupStatusDialog;
TQDateTime mlockDateTime;
+
+ bool m_mouseDown;
+ int m_mousePrevX;
+ int m_mousePrevY;
+ int m_dialogPrevX;
+ int m_dialogPrevY;
};
#endif
diff --git a/kdesktop/lock/main.h b/kdesktop/lock/main.h
index c8e0e05..23797e4 100644
--- a/kdesktop/lock/main.h
+++ b/kdesktop/lock/main.h
@@ -32,6 +32,7 @@ protected:
bool x11EventFilter( XEvent * );
signals:
void activity();
+ void mouseInteraction(XEvent *event);
private:
time_t lastTick;
};

@ -1,22 +0,0 @@
--- kdebase/kdm/backend/CMakeLists.txt.ORI 2012-09-06 22:17:30.134745111 +0200
+++ kdebase/kdm/backend/CMakeLists.txt 2012-09-06 22:17:34.329664333 +0200
@@ -37,7 +37,7 @@
tde_add_executable( kdm
SOURCES
- access.c auth.c bootman.c choose.c client.c consolekit.c
+ access.c auth.c bootman.c choose.c client.c
ctrl.c daemon.c dm.c dpylist.c error.c genauth.c
inifile.c krb5auth.c mitauth.c netaddr.c policy.c
process.c protodpy.c reset.c resource.c rpcauth.c
--- kdebase/kdm/backend/dm.h.ORI 2012-09-06 17:33:31.284704186 -0400
+++ kdebase/kdm/backend/dm.h 2012-09-06 17:33:40.415522219 -0400
@@ -37,8 +37,6 @@
#ifndef _DM_H_
#define _DM_H_ 1
-#define WITH_CONSOLE_KIT
-
#include "greet.h"
#include <config.ci>

@ -1,97 +0,0 @@
--- kdebase/kdm/backend/CMakeLists.txt.ORI 2012-09-06 22:11:08.422091268 +0200
+++ kdebase/kdm/backend/CMakeLists.txt 2012-09-06 22:11:21.280843938 +0200
@@ -14,11 +14,11 @@
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_BINARY_DIR}
- ${DBUS_TQT_INCLUDE_DIRS}
+ ${DBUS_INCLUDE_DIRS}
)
link_directories(
- ${DBUS_TQT_LIBRARY_DIRS}
+ ${DBUS_LIBRARY_DIRS}
)
##### kdm (executable) ##########################
@@ -43,6 +43,6 @@
process.c protodpy.c reset.c resource.c rpcauth.c
server.c session.c sessreg.c socket.c streams.c
util.c xdmauth.c xdmcp.c
- LINK X11 ${XAU_LIBRARIES} ${DBUS_TQT_LIBRARIES} ${CRYPT_LIBRARY} ${PAM_LIBRARY} ${XDMCP_LIBRARIES}
+ LINK X11 ${XAU_LIBRARIES} ${DBUS_LIBRARIES} ${CRYPT_LIBRARY} ${PAM_LIBRARY} ${XDMCP_LIBRARIES}
DESTINATION ${BIN_INSTALL_DIR}
)
--- kdebase/ksmserver/CMakeLists.txt.ORI 2012-09-06 17:22:59.990317001 -0400
+++ kdebase/ksmserver/CMakeLists.txt 2012-09-06 17:23:16.340989494 -0400
@@ -19,13 +19,13 @@
${CMAKE_SOURCE_DIR}/kdmlib
${TDE_INCLUDE_DIR}
${TQT_INCLUDE_DIRS}
- ${DBUS_TQT_INCLUDE_DIRS}
+ ${DBUS_INCLUDE_DIRS}
${HAL_INCLUDE_DIRS}
)
link_directories(
${TQT_LIBRARY_DIRS}
- ${DBUS_TQT_LIBRARY_DIRS}
+ ${DBUS_LIBRARY_DIRS}
)
@@ -43,5 +43,5 @@
main.cpp server.cpp shutdowndlg.cpp startupdlg.cpp
legacy.cpp startup.cpp shutdown.cpp client.cpp
KSMServerInterface.skel server.skel timed.ui
- LINK dmctl-static kdeui-shared krsync-shared ${HAL_LIBRARIES} ${DBUS_TQT_LIBRARIES}
+ LINK dmctl-static kdeui-shared krsync-shared ${HAL_LIBRARIES} ${DBUS_LIBRARIES}
)
--- kdebase/kioslave/media/mediamanager/CMakeLists.txt.ORI 2012-09-07 23:57:56.858227336 +0200
+++ kdebase/kioslave/media/mediamanager/CMakeLists.txt 2012-09-07 23:58:54.948097583 +0200
@@ -20,12 +20,12 @@
${TDE_INCLUDE_DIR}
${TQT_INCLUDE_DIRS}
${HAL_INCLUDE_DIRS}
- ${DBUS_TQT_INCLUDE_DIRS}
+ ${DBUS_INCLUDE_DIRS}
)
link_directories(
${TQT_LIBRARY_DIRS}
- ${DBUS_TQT_LIBRARY_DIRS}
+ ${DBUS_LIBRARY_DIRS}
)
@@ -48,7 +48,7 @@
tde_add_kpart( ${target} AUTOMOC
SOURCES ${${target}_SRCS}
- LINK mediacommon-static kdeinit_kded-shared ${HAL_LIBRARIES} -lhal-storage ${DBUS_TQT_LIBRARIES}
+ LINK mediacommon-static kdeinit_kded-shared ${HAL_LIBRARIES} -lhal-storage ${DBUS_LIBRARIES} -ldbus-qt-1
DESTINATION ${PLUGIN_INSTALL_DIR}
)
else( )
--- kdebase-3.5.13.1/ConfigureChecks.cmake.ORI 2012-10-08 22:57:40.751052066 +0200
+++ kdebase-3.5.13.1/ConfigureChecks.cmake 2012-10-08 22:57:49.226885124 +0200
@@ -254,19 +254,4 @@
tde_message_fatal( "dbus-1 is required, but was not found on your system" )
endif( )
- # check for dbus-tqt
- pkg_check_modules( DBUS_TQT REQUIRED dbus-tqt )
- tde_save( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
- set( CMAKE_REQUIRED_INCLUDES ${DBUS_TQT_INCLUDE_DIRS} ${TQT_INCLUDE_DIRS} ${QT_INCLUDE_DIRS})
- set( CMAKE_REQUIRED_LIBRARIES ${DBUS_TQT_LDFLAGS} ${TQT_LDFLAGS} ${QT_LDFLAGS} )
- check_cxx_source_compiles("
- #include <tqt.h>
- #include <dbus/connection.h>
- int main(int, char**) { return 0; } "
- HAVE_DBUS_QT3_07 )
- tde_restore( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
- if( NOT HAVE_DBUS_QT3_07 )
- tde_message_fatal( "dbus-tqt is required, but was not found on your system" )
- endif( )
-
endif( )

@ -1,22 +0,0 @@
commit 9a948c1af9c07bfdc0eb079cc3cbc84e6bd597c6
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1337062714 -0500
Disable keyboard shortcuts for file location moving, as they did not work properly and have very little practical use
diff --git a/kate/app/katefilelist.cpp b/kate/app/katefilelist.cpp
index bd2d087..d2214a4 100644
--- a/kate/app/katefilelist.cpp
+++ b/kate/app/katefilelist.cpp
@@ -139,9 +139,9 @@ void KateFileList::setupActions ()
sortAction = new KSelectAction( i18n("Sort &By"), 0,
m_main->actionCollection(), "filelist_sortby" );
listMoveFileUp = new KAction( i18n("Move File Up"), 0, m_main->actionCollection(), "filelist_move_up" );
- listMoveFileUp->setShortcut(KShortcut(CTRL + SHIFT + Key_Comma));
+ //listMoveFileUp->setShortcut(KShortcut(CTRL + SHIFT + Key_Comma));
listMoveFileDown = new KAction( i18n("Move File Down"), 0, m_main->actionCollection(), "filelist_move_down" );
- listMoveFileDown->setShortcut(KShortcut(CTRL + SHIFT + Key_Period));
+ //listMoveFileDown->setShortcut(KShortcut(CTRL + SHIFT + Key_Period));
connect( listMoveFileUp, TQT_SIGNAL(activated()), TQT_TQOBJECT(this), TQT_SLOT(moveFileUp()) );
connect( listMoveFileDown, TQT_SIGNAL(activated()), TQT_TQOBJECT(this), TQT_SLOT(moveFileDown()) );
TQStringList l;

@ -1,50 +0,0 @@
--- kdebase/config.h.cmake.ORI 2012-08-20 11:19:03.411461759 +0200
+++ kdebase/config.h.cmake 2012-08-20 11:19:40.587461736 +0200
@@ -174,3 +174,6 @@
// kdm, kcontrol
#cmakedefine WITH_XRANDR "@WITH_XRANDR@"
+
+// tsak
+#cmakedefine BUILD_TSAK "@BUILD_TSAK@"
--- kdebase/kdesktop/lock/main.cc.tsak 2012-08-20 13:55:47.265335687 +0200
+++ kdebase/kdesktop/lock/main.cc 2012-08-20 13:56:31.594856008 +0200
@@ -207,8 +207,11 @@
struct stat st;
KSimpleConfig* tdmconfig;
OPEN_TDMCONFIG_AND_SET_GROUP
+#ifdef BUILD_TSAK
trinity_desktop_lock_use_sak = tdmconfig->readBoolEntry("UseSAK", true);
-
+#else
+ trinity_desktop_lock_use_sak = false;
+#endif
LockProcess process;
// Start loading core functions, such as the desktop wallpaper interface
@@ -272,7 +275,11 @@
trinity_desktop_lock_use_system_modal_dialogs = !KDesktopSettings::useUnmanagedLockWindows();
trinity_desktop_lock_delay_screensaver_start = KDesktopSettings::delaySaverStart();
if (trinity_desktop_lock_use_system_modal_dialogs) {
+#ifdef BUILD_TSAK
trinity_desktop_lock_use_sak = tdmconfig->readBoolEntry("UseSAK", true);
+#else
+ trinity_desktop_lock_use_sak = false;
+#endif
}
else {
trinity_desktop_lock_use_sak = false; // If SAK is enabled with unmanaged windows, the SAK dialog will never close and will "burn in" the screen
--- kdebase/kdm/kfrontend/kgapp.cpp.tsak 2012-08-20 14:00:44.387336567 +0200
+++ kdebase/kdm/kfrontend/kgapp.cpp 2012-08-20 14:01:26.280461134 +0200
@@ -195,7 +195,11 @@
KProcess *dcop = 0;
KProcess *kwin = 0;
+#ifdef BUILD_TSAK
trinity_desktop_lock_use_sak = _useSAK;
+#else
+ trinity_desktop_lock_use_sak = false;
+#endif
if (trinity_desktop_lock_use_sak) {
tsak = new KProcess;
*tsak << TQCString( argv0, strrchr( argv0, '/' ) - argv0 + 2 ) + "tsak";

@ -1,37 +0,0 @@
--- kdebase/ConfigureChecks.cmake.afterlibdetect.ORI 2012-09-06 20:46:34.705339175 +0200
+++ kdebase/ConfigureChecks.cmake 2012-09-06 20:47:12.331548001 +0200
@@ -229,19 +229,21 @@
tde_message_fatal( "dbus-1 is required, but was not found on your system" )
endif( )
- # check for dbus-tqt
- pkg_check_modules( DBUS_TQT REQUIRED dbus-tqt )
- tde_save( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
- set( CMAKE_REQUIRED_INCLUDES ${DBUS_TQT_INCLUDE_DIRS} ${TQT_INCLUDE_DIRS} ${QT_INCLUDE_DIRS})
- set( CMAKE_REQUIRED_LIBRARIES ${DBUS_TQT_LDFLAGS} ${TQT_LDFLAGS} ${QT_LDFLAGS} )
- check_cxx_source_compiles("
- #include <tqt.h>
- #include <dbus/connection.h>
- int main(int, char**) { return 0; } "
- HAVE_DBUS_QT3_07 )
- tde_restore( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
- if( NOT HAVE_DBUS_QT3_07 )
- tde_message_fatal( "dbus-tqt is required, but was not found on your system" )
+ if( BUILD_TSAK )
+ # check for dbus-tqt
+ pkg_check_modules( DBUS_TQT REQUIRED dbus-tqt )
+ tde_save( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
+ set( CMAKE_REQUIRED_INCLUDES ${DBUS_TQT_INCLUDE_DIRS} ${TQT_INCLUDE_DIRS} ${QT_INCLUDE_DIRS})
+ set( CMAKE_REQUIRED_LIBRARIES ${DBUS_TQT_LDFLAGS} ${TQT_LDFLAGS} ${QT_LDFLAGS} )
+ check_cxx_source_compiles("
+ #include <tqt.h>
+ #include <dbus/connection.h>
+ int main(int, char**) { return 0; } "
+ HAVE_DBUS_QT3_07 )
+ tde_restore( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
+ if( NOT HAVE_DBUS_QT3_07 )
+ tde_message_fatal( "dbus-tqt is required, but was not found on your system" )
+ endif( )
endif( )
endif( )

@ -1,135 +0,0 @@
commit 45fb5561be6e828c78180c781f74d0ae9d1c3ea4
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1326230757 -0600
Enable xtest support flag
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b832a92..f4d11ac 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -65,6 +65,7 @@ option( WITH_XRANDR "Enable xrandr support" OFF )
option( WITH_XRENDER "Enable xrender support" OFF )
option( WITH_XDAMAGE "Enable xdamage support" OFF )
option( WITH_XEXT "Enable xext support" OFF )
+option( WITH_XTEST "Enable xext support" OFF )
option( WITH_LIBUSB "Enable control of some mouse models through libusb" OFF )
option( WITH_LIBRAW1394 "Enable visualization of ieee1394 devices through libraw1394" OFF )
option( WITH_SUDO_KDESU_BACKEND "Use sudo as backend for kdesu (default is su)" OFF )
diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
index 7b7a1b4..df892e1 100644
--- a/ConfigureChecks.cmake
+++ b/ConfigureChecks.cmake
@@ -100,12 +100,25 @@ endif( )
# xext (kwin/kompmgr)
if( WITH_XEXT )
pkg_search_module( XEXT xext )
- if( NOT XEXT_FOUND )
+ if( XEXT_FOUND )
+ set( HAVE_XEXT 1 )
+ else( XEXT_FOUND )
tde_message_fatal( "xext is requested, but was not found on your system" )
endif( )
endif( )
+# xtest (kxkb)
+if( WITH_XTEST )
+ pkg_search_module( XTEST xtst )
+ if( XTEST_FOUND )
+ set( HAVE_XTEST 1 )
+ else( XTEST_FOUND )
+ tde_message_fatal( "xtest is requested, but was not found on your system" )
+ endif( )
+endif( )
+
+
# GL
if( BUILD_KDESKTOP OR BUILD_KCONTROL OR BUILD_KSCREENSAVER )
check_library_exists( GL glXChooseVisual "" HAVE_GLXCHOOSEVISUAL )
diff --git a/config.h.cmake b/config.h.cmake
index d72a96c..a8de2fa 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -18,6 +18,9 @@
// konsole, kdm, kxkb
#cmakedefine HAVE_XKB 1
+// kxkb
+#cmakedefine HAVE_XTEST 1
+
// kdm, kioslave
#cmakedefine HAVE_TERMIOS_H 1
diff --git a/kxkb/CMakeLists.txt b/kxkb/CMakeLists.txt
index 703591a..f36a003 100644
--- a/kxkb/CMakeLists.txt
+++ b/kxkb/CMakeLists.txt
@@ -22,6 +22,7 @@ include_directories(
link_directories(
${TQT_LIBRARY_DIRS}
+ ${XTEST_LIBDIR}
)
@@ -39,7 +40,7 @@ tde_add_kpart( kcm_keyboard AUTOMOC
extension.cpp x11helper.cpp rules.cpp kxkbconfig.cpp
pixmap.cpp kcmlayout.cpp kcmlayoutwidget.ui
kcmmisc.cpp kcmmiscwidget.ui
- LINK kio-shared xkbfile
+ LINK kio-shared xkbfile ${XTEST_LIBRARIES}
DESTINATION ${PLUGIN_INSTALL_DIR}
)
diff --git a/kxkb/kcmmisc.cpp b/kxkb/kcmmisc.cpp
index b4c18a4..8850d89 100644
--- a/kxkb/kcmmisc.cpp
+++ b/kxkb/kcmmisc.cpp
@@ -344,6 +344,21 @@ int xkb_set_off()
return 1;
}
+int xkb_state()
+ {
+ unsigned int mask;
+ unsigned int numlockState;
+ XkbStateRec xkbState;
+ if( !xkb_init())
+ return 0;
+ mask = xkb_numlock_mask();
+ if( mask == 0 )
+ return 0;
+ XkbGetState( dpy, XkbUseCoreKbd, &xkbState);
+ numlockState = xkbState.locked_mods & mask;
+ return numlockState;
+ }
+
int xkb_toggle()
{
unsigned int mask;
@@ -443,7 +458,14 @@ void numlock_toggle()
return;
#endif
#ifdef HAVE_XTEST
+#ifdef HAVE_XKB
+ if (xkb_state())
+ xtest_set_on();
+ else
+ xtest_set_off();
+#else // HAVE_XKB
xtest_toggle();
+#endif // HAVE_XKB
#endif
}
// This code is taken from xset utility from XFree 4.3 (http://www.xfree86.org/)
--- kdebase/khotkeys/shared/CMakeLists.txt.ORI 2012-01-14 21:49:34.423813010 +0100
+++ kdebase/khotkeys/shared/CMakeLists.txt 2012-01-14 21:53:23.915008098 +0100
@@ -36,6 +36,6 @@
tde_add_library( ${target} SHARED AUTOMOC
SOURCES ${${target}_SRCS}
VERSION 1.0.0
- LINK kio-shared
+ LINK kio-shared ${XTEST_LIBRARIES}
DESTINATION ${LIB_INSTALL_DIR}
)

@ -1,252 +0,0 @@
commit 8d521d0b6ba88c6e679e7453f02897c8db7bbdf5
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1328671935 -0600
Update lock process to engage the lock in near real time
diff --git a/kdesktop/lock/CMakeLists.txt b/kdesktop/lock/CMakeLists.txt
index 5530d4c..7a35121 100644
--- a/kdesktop/lock/CMakeLists.txt
+++ b/kdesktop/lock/CMakeLists.txt
@@ -35,6 +35,6 @@ set( ${target}_SRCS
tde_add_executable( ${target} AUTOMOC
SOURCES ${${target}_SRCS}
- LINK kdesktopsettings-static dmctl-static kio-shared Xext ${GL_LIBRARY}
+ LINK kdesktopsettings-static dmctl-static kio-shared Xext ${GL_LIBRARY} "-z\ now"
DESTINATION ${BIN_INSTALL_DIR}
)
diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
index 0cbef60..132ff30 100644
--- a/kdesktop/lock/main.cc
+++ b/kdesktop/lock/main.cc
@@ -1,6 +1,7 @@
/* This file is part of the KDE project
Copyright (C) 1999 David Faure
Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org>
+ Copyright (c) 2010-2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -43,6 +44,13 @@ bool trinity_desktop_lock_use_sak = FALSE;
bool trinity_desktop_lock_forced = FALSE;
+bool signalled_forcelock;
+bool signalled_dontlock;
+bool signalled_securedialog;
+bool signalled_blank;
+bool signalled_run;
+bool in_internal_mode = FALSE;
+
bool MyApp::x11EventFilter( XEvent *ev )
{
if (ev->type == XKeyPress || ev->type == ButtonPress) {
diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc
index 5307c5c..79d27db 100644
--- a/kdesktop/lockeng.cc
+++ b/kdesktop/lockeng.cc
@@ -1,8 +1,9 @@
//===========================================================================
//
-// 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>
+// Copyright (c) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
//
@@ -29,6 +30,14 @@ 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->lockProcessWaiting();
+ }
+}
+
//===========================================================================
//
// Screen saver engine. Doesn't handle the actual screensaver window,
@@ -42,6 +51,16 @@ SaverEngine::SaverEngine()
mSAKProcess(NULL),
mTerminationRequested(false)
{
+ struct sigaction act;
+
+ // handle SIGUSR1
+ m_masterSaverEngine = this;
+ act.sa_handler= sigusr1_handler;
+ sigemptyset(&(act.sa_mask));
+ sigaddset(&(act.sa_mask), SIGUSR1);
+ act.sa_flags = 0;
+ sigaction(SIGUSR1, &act, 0L);
+
// Save X screensaver parameters
XGetScreenSaver(qt_xdisplay(), &mXTimeout, &mXInterval,
&mXBlanking, &mXExposures);
@@ -60,6 +79,19 @@ SaverEngine::SaverEngine()
TQTimer::singleShot( 0, this, TQT_SLOT(handleSecureDialog()) );
configure();
+
+ mLockProcess.clearArguments();
+ TQString path = KStandardDirs::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;
+ }
}
//---------------------------------------------------------------------------
@@ -68,6 +100,10 @@ SaverEngine::SaverEngine()
//
SaverEngine::~SaverEngine()
{
+ if (mState == Waiting) {
+ kill(mLockProcess.pid(), SIGKILL);
+ }
+
mLockProcess.detach(); // don't kill it if we crash
delete mXAutoLock;
@@ -86,9 +122,9 @@ void SaverEngine::lock()
{
mSAKProcess->kill(SIGTERM);
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 .
+ // 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 )
{
DCOPClientTransaction* trans = kapp->dcopClient()->beginTransaction();
@@ -283,40 +319,42 @@ bool SaverEngine::startLockProcess( LockType lock_type )
kdDebug(1204) << "SaverEngine: starting saver" << endl;
emitDCOPSignal("KDE_start_screensaver()", TQByteArray());
- if (mLockProcess.isRunning())
- {
- stopLockProcess();
- }
- mLockProcess.clearArguments();
- TQString path = KStandardDirs::findExe( "kdesktop_lock" );
- if( path.isEmpty())
- {
- kdDebug( 1204 ) << "Can't find kdesktop_lock!" << endl;
- return false;
+ if (!mLockProcess.isRunning()) {
+ mLockProcess.clearArguments();
+ TQString path = KStandardDirs::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;
+ }
}
- mLockProcess << path;
+
switch( lock_type )
{
case ForceLock:
- mLockProcess << TQString( "--forcelock" );
+ mLockProcess.kill(SIGUSR1); // Request forcelock
break;
case DontLock:
- mLockProcess << TQString( "--dontlock" );
+ mLockProcess.kill(SIGUSR2); // Request dontlock
break;
case SecureDialog:
- mLockProcess << TQString( "--securedialog" );
+ mLockProcess.kill(SIGWINCH); // Request secure dialog
break;
default:
break;
}
- if (mBlankOnly)
- mLockProcess << TQString( "--blank" );
-
- if (mLockProcess.start() == false )
- {
- kdDebug( 1204 ) << "Failed to start kdesktop_lock!" << endl;
- return false;
+ if (mBlankOnly) {
+ mLockProcess.kill(SIGTTIN); // Request blanking
}
+
+ mLockProcess.kill(SIGTTOU); // Start lock
XSetScreenSaver(qt_xdisplay(), 0, mXInterval, PreferBlanking, mXExposures);
mState = Preparing;
@@ -359,9 +397,7 @@ void SaverEngine::stopLockProcess()
void SaverEngine::lockProcessExited()
{
-printf("Lock process exited\n\r"); fflush(stdout);
bool abnormalExit = false;
- kdDebug(1204) << "SaverEngine: lock exited" << endl;
if (mLockProcess.normalExit() == false) {
abnormalExit = true;
}
@@ -387,6 +423,28 @@ printf("Lock process exited\n\r"); fflush(stdout);
system("logout");
}
}
+ else {
+ // Restart the lock process
+ if (!mLockProcess.isRunning()) {
+ mLockProcess.clearArguments();
+ TQString path = KStandardDirs::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;
+ }
+ }
+ }
+}
+
+void SaverEngine::lockProcessWaiting()
+{
+ kdDebug(1204) << "SaverEngine: lock exited" << endl;
if (trinity_lockeng_sak_available == TRUE) {
handleSecureDialog();
}
diff --git a/kdesktop/lockeng.h b/kdesktop/lockeng.h
index ae81f90..ae08e9a 100644
--- a/kdesktop/lockeng.h
+++ b/kdesktop/lockeng.h
@@ -78,6 +78,9 @@ public:
*/
virtual void saverLockReady();
+public slots:
+ void lockProcessWaiting();
+
protected slots:
void idleTimeout();
void lockProcessExited();

@ -1,356 +0,0 @@
commit 4952641328f28a541e3fdf2200df4e1e4b11d5dd
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1328994151 -0600
Commit the rest of 8d521d0b, not merged due to GIT glitch
diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
index 132ff30..4edd1b3 100644
--- a/kdesktop/lock/main.cc
+++ b/kdesktop/lock/main.cc
@@ -73,140 +73,241 @@ static KCmdLineOptions options[] =
{ "dontlock", I18N_NOOP("Only start screensaver"), 0 },
{ "securedialog", I18N_NOOP("Launch the secure dialog"), 0 },
{ "blank", I18N_NOOP("Only use the blank screensaver"), 0 },
+ { "internal <pid>", I18N_NOOP("TDE internal command for background process loading"), 0 },
KCmdLineLastOption
};
+static void sigusr1_handler(int)
+{
+ signalled_forcelock = TRUE;
+}
+
+static void sigusr2_handler(int)
+{
+ signalled_dontlock = TRUE;
+}
+
+static void sigusr3_handler(int)
+{
+ signalled_securedialog = TRUE;
+}
+
+static void sigusr4_handler(int)
+{
+ signalled_blank = TRUE;
+}
+
+static void sigusr5_handler(int)
+{
+ signalled_run = TRUE;
+}
+
// -----------------------------------------------------------------------------
int main( int argc, char **argv )
{
KLocale::setMainCatalogue("kdesktop");
- KCmdLineArgs::init( argc, argv, "kdesktop_lock", I18N_NOOP("KDesktop Locker"), I18N_NOOP("Session Locker for KDesktop"), "2.0" );
+ KCmdLineArgs::init( argc, argv, "kdesktop_lock", I18N_NOOP("KDesktop Locker"), I18N_NOOP("Session Locker for KDesktop"), "2.1" );
KCmdLineArgs::addCmdLineOptions( options );
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
- if (args->isSet( "forcelock" ))
- trinity_desktop_lock_forced = TRUE;
-
putenv(strdup("SESSION_MANAGER="));
KApplication::disableAutoDcopRegistration(); // not needed
- int kdesktop_screen_number = 0;
- int starting_screen = 0;
-
- bool child = false;
- int parent_connection = 0; // socket to the parent saver
- TQValueList<int> child_sockets;
-
- if (KGlobalSettings::isMultiHead())
- {
- Display *dpy = XOpenDisplay(NULL);
- if (! dpy) {
- fprintf(stderr,
- "%s: FATAL ERROR: couldn't open display '%s'\n",
- argv[0], XDisplayName(NULL));
- exit(1);
- }
+ while (1 == 1) {
+ signalled_forcelock = FALSE;
+ signalled_dontlock = FALSE;
+ signalled_securedialog = FALSE;
+ signalled_blank = FALSE;
+ signalled_run = FALSE;
- int number_of_screens = ScreenCount(dpy);
- starting_screen = kdesktop_screen_number = DefaultScreen(dpy);
- int pos;
- TQCString display_name = XDisplayString(dpy);
- XCloseDisplay(dpy);
- kdDebug() << "screen " << number_of_screens << " " << kdesktop_screen_number << " " << display_name << " " << starting_screen << endl;
- dpy = 0;
-
- if ((pos = display_name.findRev('.')) != -1)
- display_name.remove(pos, 10);
-
- TQCString env;
- if (number_of_screens != 1) {
- for (int i = 0; i < number_of_screens; i++) {
- if (i != starting_screen) {
- int fd[2];
- if (pipe(fd)) {
- perror("pipe");
- break;
- }
- if (fork() == 0) {
- child = true;
- kdesktop_screen_number = i;
- parent_connection = fd[0];
- // break here because we are the child process, we don't
- // want to fork() anymore
- break;
- } else {
- child_sockets.append(fd[1]);
+ int kdesktop_screen_number = 0;
+ int starting_screen = 0;
+
+ bool child = false;
+ int parent_connection = 0; // socket to the parent saver
+ TQValueList<int> child_sockets;
+
+ if (KGlobalSettings::isMultiHead())
+ {
+ Display *dpy = XOpenDisplay(NULL);
+ if (! dpy) {
+ fprintf(stderr,
+ "%s: FATAL ERROR: couldn't open display '%s'\n",
+ argv[0], XDisplayName(NULL));
+ exit(1);
+ }
+
+ int number_of_screens = ScreenCount(dpy);
+ starting_screen = kdesktop_screen_number = DefaultScreen(dpy);
+ int pos;
+ TQCString display_name = XDisplayString(dpy);
+ XCloseDisplay(dpy);
+ kdDebug() << "screen " << number_of_screens << " " << kdesktop_screen_number << " " << display_name << " " << starting_screen << endl;
+ dpy = 0;
+
+ if ((pos = display_name.findRev('.')) != -1)
+ display_name.remove(pos, 10);
+
+ TQCString env;
+ if (number_of_screens != 1) {
+ for (int i = 0; i < number_of_screens; i++) {
+ if (i != starting_screen) {
+ int fd[2];
+ if (pipe(fd)) {
+ perror("pipe");
+ break;
+ }
+ if (fork() == 0) {
+ child = true;
+ kdesktop_screen_number = i;
+ parent_connection = fd[0];
+ // break here because we are the child process, we don't
+ // want to fork() anymore
+ break;
+ } else {
+ child_sockets.append(fd[1]);
+ }
}
}
- }
- env.sprintf("DISPLAY=%s.%d", display_name.data(),
- kdesktop_screen_number);
- kdDebug() << "env " << env << endl;
+ 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]);
- perror("putenv()");
+ if (putenv(strdup(env.data()))) {
+ fprintf(stderr,
+ "%s: WARNING: unable to set DISPLAY environment variable\n",
+ argv[0]);
+ perror("putenv()");
+ }
}
}
- }
- MyApp app;
- kdDebug() << "app " << kdesktop_screen_number << " " << starting_screen << " " << child << " " << child_sockets.count() << " " << parent_connection << endl;
- app.disableSessionManagement();
- KGlobal::locale()->insertCatalogue("libdmctl");
-
- // we need to read from the right rc file - possibly taking screen number in account
- KDesktopSettings::instance("kdesktoprc");
-
- trinity_desktop_lock_use_system_modal_dialogs = !KDesktopSettings::useUnmanagedLockWindows();
- trinity_desktop_lock_delay_screensaver_start = KDesktopSettings::delaySaverStart();
- trinity_desktop_lock_use_sak = KDesktopSettings::useTDESAK();
-
- LockProcess process(child, args->isSet( "blank" ));
- if (!child)
- process.setChildren(child_sockets);
- else
- process.setParent(parent_connection);
-
- bool rt;
- bool sig = false;
- if( !child && args->isSet( "forcelock" ))
- {
- rt = process.lock();
- sig = true;
- }
- else if( child || args->isSet( "dontlock" )) {
- rt = process.dontLock();
- }
- else if( child || args->isSet( "securedialog" )) {
- int retcode = tde_sak_verify_calling_process();
- if (retcode == 0) {
- rt = process.runSecureDialog();
+ MyApp app;
+ kdDebug() << "app " << kdesktop_screen_number << " " << starting_screen << " " << child << " " << child_sockets.count() << " " << parent_connection << endl;
+ app.disableSessionManagement();
+ KGlobal::locale()->insertCatalogue("libdmctl");
+
+ // we need to read from the right rc file - possibly taking screen number in account
+ KDesktopSettings::instance("kdesktoprc");
+
+ trinity_desktop_lock_use_system_modal_dialogs = !KDesktopSettings::useUnmanagedLockWindows();
+ trinity_desktop_lock_delay_screensaver_start = KDesktopSettings::delaySaverStart();
+ trinity_desktop_lock_use_sak = KDesktopSettings::useTDESAK();
+
+ if (args->isSet( "internal" )) {
+ while (signalled_run == FALSE) {
+ sigset_t new_mask;
+ struct sigaction act;
+
+ in_internal_mode = TRUE;
+
+ // handle SIGUSR1
+ act.sa_handler= sigusr1_handler;
+ sigemptyset(&(act.sa_mask));
+ sigaddset(&(act.sa_mask), SIGUSR1);
+ act.sa_flags = 0;
+ sigaction(SIGUSR1, &act, 0L);
+ // handle SIGUSR2
+ act.sa_handler= sigusr2_handler;
+ sigemptyset(&(act.sa_mask));
+ sigaddset(&(act.sa_mask), SIGUSR2);
+ act.sa_flags = 0;
+ sigaction(SIGUSR2, &act, 0L);
+ // handle SIGWINCH (an ersatz SIGUSR3)
+ act.sa_handler= sigusr3_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;
+ 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;
+ sigemptyset(&(act.sa_mask));
+ sigaddset(&(act.sa_mask), SIGTTOU);
+ act.sa_flags = 0;
+ sigaction(SIGTTOU, &act, 0L);
+
+ // initialize the signal masks
+ sigfillset(&new_mask);
+ sigdelset(&new_mask,SIGUSR1);
+ sigdelset(&new_mask,SIGUSR2);
+ sigdelset(&new_mask,SIGWINCH);
+ sigdelset(&new_mask,SIGTTIN);
+ sigdelset(&new_mask,SIGTTOU);
+
+ // wait for SIGUSR1, SIGUSR2, SIGWINCH, SIGTTIN, or SIGTTOU
+ sigsuspend(&new_mask);
+ }
+ }
+
+ if (args->isSet( "forcelock" ) || (signalled_forcelock == TRUE))
+ trinity_desktop_lock_forced = TRUE;
+
+ LockProcess process(child, (args->isSet( "blank" ) || (signalled_blank == TRUE)));
+ if (!child)
+ process.setChildren(child_sockets);
+ else
+ process.setParent(parent_connection);
+
+ bool rt;
+ bool sig = false;
+ if( !child && (args->isSet( "forcelock" ) || (signalled_forcelock == TRUE)))
+ {
+ rt = process.lock();
+ sig = true;
+ }
+ else if( child || (args->isSet( "dontlock" ) || (signalled_dontlock == TRUE))) {
+ rt = process.dontLock();
+ }
+ else if( child || (args->isSet( "securedialog" ) || (signalled_securedialog == TRUE))) {
+ int retcode = tde_sak_verify_calling_process();
+ if (retcode == 0) {
+ rt = process.runSecureDialog();
+ }
+ else {
+ return 1;
+ }
}
else {
+ rt = process.defaultSave();
+ }
+ if (!rt) {
return 0;
}
- }
- else {
- rt = process.defaultSave();
- }
- if (!rt) {
- return 0;
- }
- if( sig )
- {
- DCOPRef ref( "kdesktop", "KScreensaverIface");
- ref.send( "saverLockReady" );
- }
+ if( sig )
+ {
+ DCOPRef ref( "kdesktop", "KScreensaverIface");
+ ref.send( "saverLockReady" );
+ }
+
+ if (in_internal_mode == FALSE) {
+ return app.exec();
+ }
+ else {
+ pid_t kdesktop_pid = atoi(args->getOption( "internal" ));
+ app.exec();
+ if (kill(kdesktop_pid, SIGUSR1) < 0) {
+ // The controlling kdesktop process probably died. Commit suicide...
+ return 12;
+ }
- return app.exec();
+ // FIXME
+ // We should not have to return (restart) at all,
+ // but it seems that some X11 connections are left active,
+ // preventing the lock process from restarting properly in the while() loop above.
+ return 0;
+ }
+ }
}
#include "main.moc"

@ -1,19 +0,0 @@
commit bd9c1479d7a965959147398d71f18be62b2aa8b6
Author: Darrell Anderson <humanreadable@yahoo.com>
Date: 1333232418 -0500
Ensure pagersettings.kcfg is installed.
diff --git a/kicker/applets/minipager/CMakeLists.txt b/kicker/applets/minipager/CMakeLists.txt
index b9ca9c7..a90269c 100644
--- a/kicker/applets/minipager/CMakeLists.txt
+++ b/kicker/applets/minipager/CMakeLists.txt
@@ -27,7 +27,7 @@ link_directories(
##### other data ################################
install( FILES minipagerapplet.desktop DESTINATION ${DATA_INSTALL_DIR}/kicker/applets )
-
+install( FILES pagersettings.kcfg DESTINATION ${KCFG_INSTALL_DIR} )
##### minipager_panelapplet (module) ############

@ -1,10 +0,0 @@
--- kdebase/kdm/backend/CMakeLists.txt.ORI 2012-09-19 21:39:48.505001985 +0200
+++ kdebase/kdm/backend/CMakeLists.txt 2012-09-19 21:40:08.951005360 +0200
@@ -14,6 +14,7 @@
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_BINARY_DIR}
+ ${DBUS_INCLUDE_DIRS}
${DBUS_TQT_INCLUDE_DIRS}
)

@ -1,30 +0,0 @@
commit 5df6c5fca20e917aaa82665131b931a0aa7c8628
Author: Darrell Anderson <humanreadable@yahoo.com>
Date: 1332447011 -0500
Restore code snippet removed with GIT hash
27856879bf962f178d88e79144e37a47e731b122,
Sept. 3, 2010, "Massive import of OpenSUSE patches."
Restoring this snippet restores the device icon
placement and resolves bug report 392.
diff --git a/kdesktop/kdiconview.cc b/kdesktop/kdiconview.cc
index e2f1c80..3404e4a 100644
--- a/kdesktop/kdiconview.cc
+++ b/kdesktop/kdiconview.cc
@@ -1141,6 +1141,15 @@ void KDIconView::slotNewItems( const KFileItemList & entries )
kdDebug(1214)<<"Using saved position"<<endl;
}
}
+ else
+ {
+ // Not found, we'll need to save the new pos
+ kdDebug(1214)<<"slotNewItems(): New item without position information, try to find a sane location"<<endl;
+
+ moveToFreePosition(fileIVI);
+
+ m_bNeedSave = true;
+ }
}
}

@ -1,162 +0,0 @@
commit d2f8fca98e6d276f442f90dee48164be15d8e287
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1337223371 -0500
Fix fancy logout not allowing interaction with save dialogs
This closes Bug 922
Fix desktop wallpaper export failing when triggered by krootbacking or ksmserver and konsole or kdesktop_lock not previously loaded
diff --git a/krootbacking/krootbacking.cpp b/krootbacking/krootbacking.cpp
index 8e41b50..fe8574a 100644
--- a/krootbacking/krootbacking.cpp
+++ b/krootbacking/krootbacking.cpp
@@ -54,6 +54,8 @@ public:
KRootBacking::KRootBacking()
: TQObject(KApplication::desktop(), "KRootBacking" ), m_Desk(0), m_timeout(0)
{
+ enableExports();
+
init();
}
diff --git a/ksmserver/shutdown.cpp b/ksmserver/shutdown.cpp
index a4ca020..09cb2d7 100644
--- a/ksmserver/shutdown.cpp
+++ b/ksmserver/shutdown.cpp
@@ -189,24 +189,6 @@ void KSMServer::shutdownInternal( KApplication::ShutdownConfirm confirm,
// shall we save the session on logout?
saveSession = ( config->readEntry( "loginMode", "restorePreviousLogout" ) == "restorePreviousLogout" );
- if (showFancyLogout) {
- KSMShutdownIPFeedback::showit(); // hide the UGLY logout process from the user
- shutdownNotifierIPDlg = KSMShutdownIPDlg::showShutdownIP();
- while (!KSMShutdownIPFeedback::ispainted()) {
- tqApp->processEvents();
- }
- }
-
- // synchronize any folders that were requested for shutdown sync
- if (shutdownNotifierIPDlg) {
- static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Synchronizing remote folders").append("..."));
- }
- KRsync krs(this, "");
- krs.executeLogoutAutoSync();
- if (shutdownNotifierIPDlg) {
- static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Saving your settings..."));
- }
-
if ( saveSession )
sessionGroup = TQString("Session: ") + SESSION_PREVIOUS_LOGOUT;
@@ -252,9 +234,9 @@ void KSMServer::shutdownInternal( KApplication::ShutdownConfirm confirm,
completeShutdownOrCheckpoint();
}
else {
- if (showFancyLogout) {
- KSMShutdownIPFeedback::stop();
- }
+ if (showFancyLogout) {
+ KSMShutdownIPFeedback::stop();
+ }
}
dialogActive = false;
}
@@ -502,6 +484,25 @@ void KSMServer::completeShutdownOrCheckpoint()
if ( waitForPhase2 )
return;
+ bool showFancyLogout = KConfigGroup(KGlobal::config(), "Logout").readBoolEntry("showFancyLogout", true);
+ if (showFancyLogout) {
+ KSMShutdownIPFeedback::showit(); // hide the UGLY logout process from the user
+ shutdownNotifierIPDlg = KSMShutdownIPDlg::showShutdownIP();
+ while (!KSMShutdownIPFeedback::ispainted()) {
+ tqApp->processEvents();
+ }
+ }
+
+ // synchronize any folders that were requested for shutdown sync
+ if (shutdownNotifierIPDlg) {
+ static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Synchronizing remote folders").append("..."));
+ }
+ KRsync krs(this, "");
+ krs.executeLogoutAutoSync();
+ if (shutdownNotifierIPDlg) {
+ static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Saving your settings..."));
+ }
+
if ( saveSession )
storeSession();
else
diff --git a/ksmserver/shutdowndlg.cpp b/ksmserver/shutdowndlg.cpp
index 163352a..35cae65 100644
--- a/ksmserver/shutdowndlg.cpp
+++ b/ksmserver/shutdowndlg.cpp
@@ -528,6 +528,11 @@ KSMShutdownIPFeedback::KSMShutdownIPFeedback()
: TQWidget( 0L, "systemmodaldialogclass", Qt::WStyle_Customize | Qt::WStyle_NoBorder | Qt::WStyle_StaysOnTop ), m_timeout(0), m_isPainted(false), m_sharedRootPixmap(NULL), mPixmapTimeout(0)
{
+ setShown(false);
+ hide();
+
+ enableExports();
+
m_sharedRootPixmap = new KRootPixmap(this);
m_sharedRootPixmap->setCustomPainting(true);
connect(m_sharedRootPixmap, TQT_SIGNAL(backgroundUpdated(const TQPixmap &)), this, TQT_SLOT(slotSetBackgroundPixmap(const TQPixmap &)));
@@ -554,15 +559,36 @@ KSMShutdownIPFeedback::KSMShutdownIPFeedback()
setBackgroundPixmap( m_root );
setGeometry( TQApplication::desktop()->geometry() );
setBackgroundMode( TQWidget::NoBackground );
-
- setShown(true);
}
void KSMShutdownIPFeedback::showNow()
{
+ setShown(true);
+
TQTimer::singleShot( 0, this, SLOT(slotPaintEffect()) );
}
+void KSMShutdownIPFeedback::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(qt_xdisplay());
+ if ( screen_number )
+ appname.sprintf("kdesktop-screen-%d", screen_number );
+
+ client->send( appname, "KBackgroundIface", "setExport(int)", data );
+#endif
+}
+
KSMShutdownIPFeedback::~KSMShutdownIPFeedback()
{
if (m_sharedRootPixmap) {
diff --git a/ksmserver/shutdowndlg.h b/ksmserver/shutdowndlg.h
index db66c55..05ca991 100644
--- a/ksmserver/shutdowndlg.h
+++ b/ksmserver/shutdowndlg.h
@@ -97,6 +97,13 @@
void slotSetBackgroundPixmap(const TQPixmap &);
private:
+ /**
+ * Asks KDesktop to export the desktop background as a KSharedPixmap.
+ * This method uses DCOP to call KBackgroundIface/setExport(int).
+ */
+ void enableExports();
+
+private:
static KSMShutdownIPFeedback * s_pSelf;
KSMShutdownIPFeedback();
int m_currentY;

@ -1,46 +0,0 @@
commit d409abdbef8dd8b72bb2f311fcaa7456bdc2404b
Author: Luboš Luňák <l.lunak@suse.cz>
Date: Fri Mar 4 16:22:23 2011 +0100
do not show hostname in titlebar if it's FQDN of localhost
diff --git a/kwin/utils.cpp b/kwin/utils.cpp
--- a/kwin/utils.cpp
+++ b/kwin/utils.cpp
@@ -18,6 +18,8 @@
#include "utils.h"
#include <unistd.h>
+#include <string.h>
+#include <netdb.h>
#ifndef KCMRULES
@@ -323,6 +325,27 @@ bool isLocalMachine( const TQCString& host )
if( host == hostnamebuf )
return true;
}
+ else
+ { // e.g. LibreOffice likes to give FQDN, even if gethostname() doesn't include domain
+ struct addrinfo hints, *res, *addr;
+ bool is_local = false;
+
+ memset (&hints, 0, sizeof (hints));
+ hints.ai_family = PF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_flags |= AI_CANONNAME;
+
+ if( getaddrinfo( host, NULL, &hints, &res ) != 0)
+ return false;
+ for(addr = res; !is_local && addr; addr = addr->ai_next)
+ {
+ if( res->ai_canonname &&
+ host == TQCString( res->ai_canonname ))
+ is_local = true;
+ }
+ freeaddrinfo(res);
+ return is_local;
+ }
}
return false;
}

@ -1,157 +0,0 @@
commit f05f9dc7532ea41c49b3e9385165d942dfab5d0e
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1327036924 -0600
If someone manages to close down kdesktop_lock through an undiscovered security vulnerability such as http://security-tracker.debian.org/tracker/CVE-2012-0064, immediately terminate the compromised TDE session
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
index 6bd18f7..2588bbf 100644
--- a/kdesktop/lock/lockprocess.cc
+++ b/kdesktop/lock/lockprocess.cc
@@ -326,10 +326,8 @@ static int signal_pipe[2];
static void sigterm_handler(int)
{
if (!trinity_desktop_lock_in_sec_dlg) {
- char tmp = 'T';
- if (::write( signal_pipe[1], &tmp, 1) == -1) {
- // Error handler to shut up gcc warnings
- }
+ // Exit uncleanly
+ exit(1);
}
}
@@ -522,7 +520,7 @@ void LockProcess::setupSignals()
sigaddset(&(act.sa_mask), SIGQUIT);
act.sa_flags = 0;
sigaction(SIGQUIT, &act, 0L);
- // exit cleanly on SIGTERM
+ // exit uncleanly on SIGTERM
act.sa_handler= sigterm_handler;
sigemptyset(&(act.sa_mask));
sigaddset(&(act.sa_mask), SIGTERM);
diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc
index b957218..c5306e9 100644
--- a/kdesktop/lockeng.cc
+++ b/kdesktop/lockeng.cc
@@ -36,10 +36,11 @@ bool trinity_lockeng_sak_available = TRUE;
// a newly started process.
//
SaverEngine::SaverEngine()
- : KScreensaverIface(),
- TQWidget(),
+ : TQWidget(),
+ KScreensaverIface(),
mBlankOnly(false),
- mSAKProcess(NULL)
+ mSAKProcess(NULL),
+ mTerminationRequested(false)
{
// Save X screensaver parameters
XGetScreenSaver(qt_xdisplay(), &mXTimeout, &mXInterval,
@@ -340,6 +341,7 @@ void SaverEngine::stopLockProcess()
kdDebug(1204) << "SaverEngine: stopping lock" << endl;
emitDCOPSignal("KDE_stop_screensaver()", TQByteArray());
+ mTerminationRequested=true;
mLockProcess.kill();
if (mEnabled)
@@ -357,7 +359,33 @@ void SaverEngine::stopLockProcess()
void SaverEngine::lockProcessExited()
{
+printf("Lock process exited\n\r"); fflush(stdout);
+ bool abnormalExit = false;
kdDebug(1204) << "SaverEngine: lock exited" << endl;
+ if (mLockProcess.normalExit() == false) {
+ abnormalExit = true;
+ }
+ else {
+ if (mLockProcess.exitStatus() != 0) {
+ abnormalExit = true;
+ }
+ }
+ if (mTerminationRequested == true) {
+ abnormalExit = false;
+ }
+ if (abnormalExit == true) {
+ // PROBABLE HACKING ATTEMPT DETECTED
+ // 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");
+ }
+ }
if (trinity_lockeng_sak_available == TRUE) {
handleSecureDialog();
}
diff --git a/kdesktop/lockeng.h b/kdesktop/lockeng.h
index b1e31bd..ae81f90 100644
--- a/kdesktop/lockeng.h
+++ b/kdesktop/lockeng.h
@@ -114,6 +114,7 @@ protected:
private:
KProcess* mSAKProcess;
+ bool mTerminationRequested;
};
#endif
commit 5f8d730703882e1335305a2c43a378f0c4b96e8e
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1327216641 -0600
Fix desktop lock
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
index 2588bbf..5acc96e 100644
--- a/kdesktop/lock/lockprocess.cc
+++ b/kdesktop/lock/lockprocess.cc
@@ -630,6 +630,8 @@ void LockProcess::startSecureDialog()
return;
}
+ setGeometry(0, 0, mRootWidth, mRootHeight);
+
int ret;
SecureDlg inDlg( this );
inDlg.setRetInt(&ret);
diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
index 2711c36..c0b8e24 100644
--- a/kdesktop/lock/main.cc
+++ b/kdesktop/lock/main.cc
@@ -181,14 +181,14 @@ int main( int argc, char **argv )
rt = process.runSecureDialog();
}
else {
- return 1;
+ return 0;
}
}
else {
rt = process.defaultSave();
}
if (!rt) {
- return 1;
+ return 0;
}
if( sig )
diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc
index fb0f754..5307c5c 100644
--- a/kdesktop/lockeng.cc
+++ b/kdesktop/lockeng.cc
@@ -372,6 +372,7 @@ printf("Lock process exited\n\r"); fflush(stdout);
}
if (mTerminationRequested == true) {
abnormalExit = false;
+ mTerminationRequested = false;
}
if (abnormalExit == true) {
// PROBABLE HACKING ATTEMPT DETECTED

@ -1,18 +0,0 @@
commit 59ee4f6630e6ed6b2712600a88d3ba9ce383620b
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1339467335 -0500
Fix tdesu/tdesudo argument compatibility problem
diff --git a/kdesu/kdesu/kdesu.cpp b/kdesu/kdesu/kdesu.cpp
index 3511b1f..8ea82fb 100644
--- a/kdesu/kdesu/kdesu.cpp
+++ b/kdesu/kdesu/kdesu.cpp
@@ -63,6 +63,7 @@ static KCmdLineOptions options[] = {
{ "p <prio>", I18N_NOOP("Set priority value: 0 <= prio <= 100, 0 is lowest"), "50" },
{ "r", I18N_NOOP("Use realtime scheduling"), 0 },
{ "nonewdcop", I18N_NOOP("Let command use existing dcopserver"), 0 },
+ { "comment <comment>", I18N_NOOP("Ignored"), "" },
{ "noignorebutton", I18N_NOOP("Do not display ignore button"), 0 },
{ "i <icon name>", I18N_NOOP("Specify icon to use in the password dialog"), 0},
{ "d", I18N_NOOP("Do not show the command to be run in the dialog"), 0},

@ -1,47 +0,0 @@
commit 1e2983ad0107fb1d26e3e9931528701f30632c6d
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1326856834 -0600
Fix kdm_greet high CPU usage
Clean up a few build warnings
diff --git a/kdm/kfrontend/kgreeter.cpp b/kdm/kfrontend/kgreeter.cpp
index 9b974cc..5877cb6 100644
--- a/kdm/kfrontend/kgreeter.cpp
+++ b/kdm/kfrontend/kgreeter.cpp
@@ -273,6 +273,9 @@ void KGreeter::handleInputPipe(void) {
readbuf[numread] = 0;
readbuf[2047] = 0;
inputcommand += readbuf;
+ if (!tqApp->hasPendingEvents()) {
+ usleep(500);
+ }
tqApp->processEvents();
}
if (closingDown) {
@@ -508,11 +511,11 @@ KGreeter::insertUsers(int limit_users)
int count = 0;
for (setpwent(); (ps = getpwent()) != 0;) {
if (*ps->pw_dir && *ps->pw_shell &&
- (ps->pw_uid >= (unsigned)_lowUserId ||
- !ps->pw_uid && _showRoot) &&
- ps->pw_uid <= (unsigned)_highUserId &&
- !noUsers.hasUser( ps->pw_name ) &&
- !noUsers.hasGroup( ps->pw_gid ))
+ ((ps->pw_uid >= (unsigned)_lowUserId) ||
+ ((!ps->pw_uid) && _showRoot)) &&
+ (ps->pw_uid <= (unsigned)_highUserId) &&
+ (!noUsers.hasUser( ps->pw_name )) &&
+ (!noUsers.hasGroup( ps->pw_gid )))
{
TQString username( TQFile::decodeName( ps->pw_name ) );
if (!dupes.find( username )) {
@@ -574,7 +577,7 @@ KGreeter::insertUsers(int limit_users)
for (setpwent(); (ps = getpwent()) != 0;) {
if (*ps->pw_dir && *ps->pw_shell &&
(ps->pw_uid >= (unsigned)_lowUserId ||
- !ps->pw_uid && _showRoot) &&
+ ((!ps->pw_uid) && _showRoot)) &&
ps->pw_uid <= (unsigned)_highUserId &&
(users.hasUser( ps->pw_name ) ||
users.hasGroup( ps->pw_gid )))

@ -1,38 +0,0 @@
commit b45b4bd730da3196a4658773f7eef46e004a39d6
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1337063762 -0500
Fix KHTML smooth scrolling control center option
This closes Bug 1001
Thanks to Roman Savochenko for the patch!
diff --git a/kcontrol/konqhtml/htmlopts.cpp b/kcontrol/konqhtml/htmlopts.cpp
index 0b81421..9e199cb 100644
--- a/kcontrol/konqhtml/htmlopts.cpp
+++ b/kcontrol/konqhtml/htmlopts.cpp
@@ -299,7 +299,7 @@ void KMiscHTMLOptions::load( bool useDefaults )
KConfig kdeglobals("kdeglobals", true, false);
kdeglobals.setReadDefaults( useDefaults );
kdeglobals.setGroup("KDE");
- bool smoothScrolling = kdeglobals.readBoolEntry("SmoothScroll", DEFAULT_SMOOTHSCROLL);
+ bool smoothScrolling = kdeglobals.readBoolEntry("SmoothScrolling", DEFAULT_SMOOTHSCROLL);
if (smoothScrolling)
m_pSmoothScrollingCombo->setCurrentItem( SmoothScrollingAlways );
else
@@ -374,13 +374,13 @@ void KMiscHTMLOptions::save()
switch(m_pSmoothScrollingCombo->currentItem())
{
case SmoothScrollingAlways:
- kdeglobals.writeEntry( "SmoothScroll", true );
+ kdeglobals.writeEntry( "SmoothScrolling", true );
break;
case SmoothScrollingNever:
- kdeglobals.writeEntry( "SmoothScroll", false );
+ kdeglobals.writeEntry( "SmoothScrolling", false );
break;
// case SmoothScrollingWhenEfficient:
- // kdeglobals.writeEntry( "SmoothScroll", somethingelse );
+ // kdeglobals.writeEntry( "SmoothScrolling", somethingelse );
// break;
}
kdeglobals.sync();

@ -1,57 +0,0 @@
commit e72f4926c094b2bd94501518fbcd2a3e66a74f6a
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1335166907 -0500
Fix sftp failure on newer systems
This closes Bug 897
diff --git a/kioslave/sftp/ksshprocess.cpp b/kioslave/sftp/ksshprocess.cpp
index 2ccab59..3393f89 100644
--- a/kioslave/sftp/ksshprocess.cpp
+++ b/kioslave/sftp/ksshprocess.cpp
@@ -569,7 +569,9 @@ TQString KSshProcess::getLine() {
// If we still don't have anything in our buffer so there must
// not be anything on the pty or stderr. Setup a select()
// to wait for some data from SSH.
- if( buffer.empty() ) {
+ // Hack around select() failure on newer systems
+ unsigned long milliseconds = 0;
+ while ((buffer.size() == 0) && (milliseconds < (60*1000))) {
//kdDebug(KSSHPROC) << "KSshProcess::getLine(): " <<
// "Line buffer empty, calling select() to wait for data." << endl;
int errfd = ssh.stderrFd();
@@ -616,14 +618,18 @@ TQString KSshProcess::getLine() {
// had data on it first.
if( FD_ISSET(ptyfd, &rfds) ) {
ptyLine = ssh.readLineFromPty(false);
- buffer.prepend(TQString(ptyLine));
+ if (ptyLine.size() > 0) {
+ buffer.prepend(TQString(ptyLine));
+ }
//kdDebug(KSSHPROC) << "KSshProcess::getLine(): "
// "line from pty -" << ptyLine << endl;
}
-
+
if( FD_ISSET(errfd, &rfds) ) {
errLine = ssh.readLineFromStderr(false);
- buffer.prepend(TQString(errLine));
+ if (errLine.size() > 0) {
+ buffer.prepend(TQString(errLine));
+ }
//kdDebug(KSSHPROC) << "KSshProcess::getLine(): "
// "line from err -" << errLine << endl;
}
@@ -637,7 +643,11 @@ TQString KSshProcess::getLine() {
kdDebug(KSSHPROC) << "KSshProcess::getLine(): "
"Exception on std err file descriptor." << endl;
}
-
+
+ if (buffer.size() == 0) {
+ milliseconds++;
+ usleep(1000);
+ }
}
}

@ -1,23 +0,0 @@
commit 073dc86aceaa060597d7653747c3c6c14d0ed59d
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1335311121 -0500
Fix sftp when nonstandard port is specified in ssh config
diff --git a/kioslave/sftp/kio_sftp.cpp b/kioslave/sftp/kio_sftp.cpp
index 2316c8c..04a2b33 100644
--- a/kioslave/sftp/kio_sftp.cpp
+++ b/kioslave/sftp/kio_sftp.cpp
@@ -481,11 +481,7 @@ void sftpProtocol::setHost (const TQString& h, int port, const TQString& user, c
if( port > 0 )
mPort = port;
else {
- struct servent *pse;
- if( (pse = getservbyname("ssh", "tcp") ) == NULL )
- mPort = 22;
- else
- mPort = ntohs(pse->s_port);
+ mPort = -1;
}
mUsername = user;

@ -1,18 +0,0 @@
commit f752bcbf6585c61f414963ad83e1300a1da08504
Author: Darrell Anderson <humanreadable@yahoo.com>
Date: 1333232616 -0500
Fix "Malformed URL $( kxdglauncher --getpath xdgname DOCUMENTS )" error dialog.
diff --git a/kioslave/system/entries/documents.desktop b/kioslave/system/entries/documents.desktop
index e5fc3d1..d65cc3d 100644
--- a/kioslave/system/entries/documents.desktop
+++ b/kioslave/system/entries/documents.desktop
@@ -1,6 +1,6 @@
[Desktop Entry]
Type=Link
-Path=$( kxdglauncher --getpath --xdgname DOCUMENTS )
+URL=$( kxdglauncher --getpath --xdgname DOCUMENTS )
Icon=folder_man
Name=Documents Folder
Name[af]=Dokument Gids

@ -1,102 +0,0 @@
--- kdebase/ConfigureChecks.cmake.libdetect 2012-09-06 20:55:39.679897201 +0200
+++ kdebase/ConfigureChecks.cmake 2012-09-06 21:06:41.454048511 +0200
@@ -100,22 +100,26 @@
# xext (kwin/kompmgr)
if( WITH_XEXT )
pkg_search_module( XEXT xext )
- if( XEXT_FOUND )
- set( HAVE_XEXT 1 )
- else( XEXT_FOUND )
- tde_message_fatal( "xext is requested, but was not found on your system" )
+ if( NOT XEXT_FOUND )
+ find_path( XEXT_INCLUDE_DIR "X11/extensions/Xext.h" )
+ if ( NOT XEXT_INCLUDE_DIR )
+ tde_message_fatal( "xext is requested, but was not found on your system" )
+ endif( )
endif( )
+ set( HAVE_XEXT 1 )
endif( )
# xtest (kxkb)
if( WITH_XTEST )
pkg_search_module( XTEST xtst )
- if( XTEST_FOUND )
- set( HAVE_XTEST 1 )
- else( XTEST_FOUND )
- tde_message_fatal( "xtest is requested, but was not found on your system" )
+ if( NOT XTEST_FOUND )
+ find_path ( XTEST_INCLUDE_DIR "X11/extensions/XTest.h" )
+ if( NOT XTEST_INCLUDE_DIR )
+ tde_message_fatal( "xtest is requested, but was not found on your system" )
+ endif( )
endif( )
+ set( HAVE_XTEST 1 )
endif( )
@@ -125,12 +129,20 @@
if( HAVE_XSSLIB )
pkg_search_module( XSS xscrnsaver )
else( )
- check_library_exists( Xext XScreenSaverQueryInfo "" HAVE_XSSLIB )
- if( HAVE_XSSLIB )
- pkg_search_module( XSS xext )
+ find_path( XSS_LIBRARY_DIR "libXss.so" )
+ if( XSS_LIBRARY_DIR )
+ set( HAVE_XSSLIB 1 )
+ else( )
+ check_library_exists( Xext XScreenSaverQueryInfo "" HAVE_XSSLIB )
+ if( HAVE_XSSLIB )
+ pkg_search_module( XSS xext )
+ endif( )
endif( )
endif( )
- check_include_file( X11/extensions/scrnsaver.h HAVE_XSCREENSAVER_H )
+ find_path( XSCREENSAVER_INCLUDE_DIR "X11/extensions/scrnsaver.h" )
+ if( XSCREENSAVER_INCLUDE_DIR )
+ set( HAVE_XSCREENSAVER_H 1 )
+ endif( )
if( HAVE_XSSLIB AND HAVE_XSCREENSAVER_H )
set( HAVE_XSCREENSAVER 1 )
else( )
--- kdebase/kcontrol/ConfigureChecks.cmake.ORI 2012-09-06 21:14:07.070747861 +0200
+++ kdebase/kcontrol/ConfigureChecks.cmake 2012-09-06 21:18:33.159501490 +0200
@@ -59,10 +59,13 @@
if( WITH_LIBUSB )
pkg_search_module( LIBUSB libusb )
- if( LIBUSB_FOUND )
- set( HAVE_LIBUSB 1 CACHE INTERNAL "" FORCE )
- else( )
- tde_message_fatal( "libusb are requested, but not found on your system" )
+ if( NOT LIBUSB_FOUND )
+ find_path( LIBUSB_LIBRARY_DIR libusb.so )
+ if( LIBUSB_LIBRARY_DIR )
+ set( HAVE_LIBUSB 1 CACHE INTERNAL "" FORCE )
+ else( )
+ #tde_message_fatal( "libusb are requested, but not found on your system" )
+ endif( )
endif( )
endif( )
--- kdebase/kdm/ConfigureChecks.cmake.ORI 2012-09-06 21:43:53.814013510 +0200
+++ kdebase/kdm/ConfigureChecks.cmake 2012-09-06 21:44:10.768708628 +0200
@@ -112,7 +112,7 @@
# Xau
pkg_search_module( XAU xau )
if( NOT XAU_FOUND )
- tde_message_fatal( "Xau are required, but not found on your system" )
+ set( XAU_LIBRARIES "-lXau" )
endif()
@@ -122,7 +122,7 @@
if( XDMCP_FOUND )
set( XDMCP 1 CACHE INTERNAL "" FORCE )
else()
- tde_message_fatal( "xdmcp is requested, but was not found on your system" )
+ set( XDMCP_LIBRARIES "-lXdmcp" )
endif()
endif()

@ -1,84 +0,0 @@
commit 67a3a8f34892a6491ba0073a3f583503b44e58e7
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1335211141 -0500
Fix desktop lock failure due to race condition within signal handler between qt and xcb
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
index c0050d3..3c67ac0 100644
--- a/kdesktop/lock/lockprocess.cc
+++ b/kdesktop/lock/lockprocess.cc
@@ -659,6 +659,7 @@ void LockProcess::startSecureDialog()
mBusy = false;
trinity_desktop_lock_in_sec_dlg = false;
if (ret == 0) {
+ trinity_desktop_lock_closing_windows = 1;
kapp->quit();
}
if (ret == 1) {
@@ -687,6 +688,7 @@ void LockProcess::startSecureDialog()
mBusy = false;
}
if (ret == 2) {
+ trinity_desktop_lock_closing_windows = 1;
if (system("ksysguard &") == -1) {
// Error handler to shut up gcc warnings
}
diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
index 5853da1..225d9c5 100644
--- a/kdesktop/lock/main.cc
+++ b/kdesktop/lock/main.cc
@@ -260,7 +260,7 @@ int main( int argc, char **argv )
bool rt;
bool sig = false;
- if( !child && (args->isSet( "forcelock" ) || (signalled_forcelock == TRUE)))
+ if( (((!child) && (args->isSet( "forcelock" ))) || (signalled_forcelock == TRUE)))
{
rt = process.lock();
sig = true;
diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc
index 9eb88e1..f24d02f 100644
--- a/kdesktop/lockeng.cc
+++ b/kdesktop/lockeng.cc
@@ -34,7 +34,7 @@ SaverEngine* m_masterSaverEngine = NULL;
static void sigusr1_handler(int)
{
if (m_masterSaverEngine) {
- m_masterSaverEngine->lockProcessWaiting();
+ m_masterSaverEngine->slotLockProcessWaiting();
}
}
@@ -445,6 +445,13 @@ void SaverEngine::lockProcessExited()
}
}
+void SaverEngine::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
+ TQTimer::singleShot(0, this, SLOT(lockProcessWaiting()));
+}
+
void SaverEngine::lockProcessWaiting()
{
kdDebug(1204) << "SaverEngine: lock exited" << endl;
diff --git a/kdesktop/lockeng.h b/kdesktop/lockeng.h
index ae08e9a..e42a048 100644
--- a/kdesktop/lockeng.h
+++ b/kdesktop/lockeng.h
@@ -79,11 +79,12 @@ public:
virtual void saverLockReady();
public slots:
- void lockProcessWaiting();
+ void slotLockProcessWaiting();
protected slots:
void idleTimeout();
void lockProcessExited();
+ void lockProcessWaiting();
private slots:
void handleSecureDialog();

@ -1,20 +0,0 @@
commit 0afb2d8a78d212568f6836dd0e7d41382cfb991d
Author: Slávek Banko <slavek.banko@axis.cz>
Date: 1341682699 +0200
Fix menu crash with disabled search field
This resolves Bug 1081
diff --git a/kicker/kicker/ui/k_mnu.cpp b/kicker/kicker/ui/k_mnu.cpp
index b7cfe8f..702c921 100644
--- a/kicker/kicker/ui/k_mnu.cpp
+++ b/kicker/kicker/ui/k_mnu.cpp
@@ -273,6 +273,8 @@ void PanelKMenu::initialize()
connect(searchEdit, TQT_SIGNAL(textChanged(const TQString&)),
this, TQT_SLOT( slotUpdateSearch( const TQString&)));
insertItem(hbox, searchLineID, 0);
+ } else {
+ searchEdit = NULL;
}
//TQToolTip::add(clearButton, i18n("Clear Search"));

@ -1,297 +0,0 @@
Index: kdesktop/lock/lockdlg.cc
===================================================================
--- kdesktop/lock/lockdlg.cc (revision 1261452)
+++ kdesktop/lock/lockdlg.cc (working copy)
@@ -115,7 +115,7 @@
frame->setFrameStyle( TQFrame::Panel | TQFrame::Raised );
frame->setLineWidth( 2 );
- TQLabel *pixLabel;
+ TQLabel *pixLabel = NULL;
if (!trinity_desktop_lock_use_system_modal_dialogs) {
pixLabel = new TQLabel( frame, "pixlabel" );
pixLabel->setPixmap(DesktopIcon("lock"));
@@ -134,7 +134,7 @@
i18n("<nobr><b>The session was locked by %1</b><br>").arg( user.fullName() ), frame );
}
- TQLabel *lockDTLabel;
+ TQLabel *lockDTLabel = NULL;
if ((trinity_desktop_lock_use_system_modal_dialogs) && (!m_lockStartDT.isNull())) {
lockDTLabel = new TQLabel(i18n("This session has been locked since %1").arg(m_lockStartDT.toString()), frame);
}
Index: kdesktop/lock/lockprocess.cc
===================================================================
--- kdesktop/lock/lockprocess.cc (revision 1261452)
+++ kdesktop/lock/lockprocess.cc (working copy)
@@ -173,6 +173,7 @@
mDialogControlLock(false),
mForceReject(false),
currentDialog(NULL),
+ mEnsureScreenHiddenTimer(NULL),
mForceContinualLockDisplayTimer(NULL),
mEnsureVRootWindowSecurityTimer(NULL),
mHackDelayStartupTimer(NULL),
@@ -288,6 +289,10 @@
hackResumeTimer->stop();
delete hackResumeTimer;
}
+ if (mEnsureScreenHiddenTimer != NULL) {
+ mEnsureScreenHiddenTimer->stop();
+ delete mEnsureScreenHiddenTimer;
+ }
if (mForceContinualLockDisplayTimer != NULL) {
mForceContinualLockDisplayTimer->stop();
delete mForceContinualLockDisplayTimer;
@@ -410,7 +415,7 @@
if (numread > 0) {
if (readbuf[0] == 'C') {
mInfoMessageDisplayed=false;
- while (mDialogControlLock == true) sleep(1);
+ while (mDialogControlLock == true) usleep(100000);
mDialogControlLock = true;
if (currentDialog != NULL) {
mForceReject = true;
@@ -423,7 +428,7 @@
to_display = to_display.remove(0,1);
// Lock out password dialogs and close any active dialog
mInfoMessageDisplayed=true;
- while (mDialogControlLock == true) sleep(1);
+ while (mDialogControlLock == true) usleep(100000);
mDialogControlLock = true;
if (currentDialog != NULL) {
mForceReject = true;
@@ -444,7 +449,7 @@
to_display = to_display.remove(0,1);
// Lock out password dialogs and close any active dialog
mInfoMessageDisplayed=true;
- while (mDialogControlLock == true) sleep(1);
+ while (mDialogControlLock == true) usleep(100000);
mDialogControlLock = true;
if (currentDialog != NULL) {
mForceReject = true;
@@ -468,7 +473,7 @@
to_display = to_display.remove(0,1);
// Lock out password dialogs and close any active dialog
mInfoMessageDisplayed=true;
- while (mDialogControlLock == true) sleep(1);
+ while (mDialogControlLock == true) usleep(100000);
mDialogControlLock = true;
if (currentDialog != NULL) {
mForceReject = true;
@@ -887,8 +892,13 @@
mRootWidth = rootAttr.width;
mRootHeight = rootAttr.height;
+ // Resize the background widget
setGeometry(0, 0, mRootWidth, mRootHeight);
+ // Black out the background widget to hide ugly resize tiling artifacts
+ setBackgroundColor(black);
+ erase();
+
// This slot needs to be able to execute very rapidly so as to prevent the user's desktop from ever
// being displayed, so we finish the hack restarting/display prettying operations in a separate timed slot
if (resizeTimer == NULL) {
@@ -902,7 +912,7 @@
{
stopHack();
- while (mDialogControlLock == true) sleep(1);
+ while (mDialogControlLock == true) usleep(100000);
mDialogControlLock = true;
if (closeCurrentWindow()) {
TQTimer::singleShot( 0, this, SLOT(doDesktopResizeFinish()) );
@@ -911,7 +921,13 @@
mDialogControlLock = false;
// Restart the hack as the window size is now different
- startHack();
+ 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);
+ }
+ else {
+ startHack();
+ }
mBusy = false;
}
@@ -1064,7 +1080,7 @@
if (!grabKeyboard())
{
- sleep(1);
+ usleep(100000);
if (!grabKeyboard())
{
return false;
@@ -1073,7 +1089,7 @@
if (!grabMouse())
{
- sleep(1);
+ usleep(100000);
if (!grabMouse())
{
XUngrabKeyboard(qt_xdisplay(), CurrentTime);
@@ -1117,7 +1133,7 @@
m_grayImage.fill(0); // Set the alpha buffer to 0 (fully transparent)
m_grayImage.setAlphaBuffer(true);
TQPixmap m_root;
- m_root.resize( TQApplication::desktop()->geometry().width(), TQApplication::desktop()->geometry().height() );
+ m_root.resize(mRootWidth, mRootHeight);
TQPainter p;
p.begin( &m_root );
m_grayImage.setAlphaBuffer(false);
@@ -1144,14 +1160,21 @@
setBackgroundColor(black);
else
setBackgroundPixmap(backingPixmap);
+ setGeometry(0, 0, mRootWidth, mRootHeight);
erase();
}
if (trinity_desktop_lock_use_system_modal_dialogs) {
// Try to get the root pixmap
- m_rootPixmap = new KRootPixmap(this);
+ if (!m_rootPixmap) m_rootPixmap = new KRootPixmap(this);
m_rootPixmap->setCustomPainting(true);
connect(m_rootPixmap, TQT_SIGNAL(backgroundUpdated(const TQPixmap &)), this, TQT_SLOT(slotPaintBackground(const TQPixmap &)));
m_rootPixmap->start();
+ // Sometimes KRootPixmap fails...make sure the desktop is hidden regardless
+ if (!mEnsureScreenHiddenTimer) {
+ mEnsureScreenHiddenTimer = new TQTimer( this );
+ connect( mEnsureScreenHiddenTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotForcePaintBackground()) );
+ }
+ mEnsureScreenHiddenTimer->start(2000, true);
}
if (trinity_desktop_lock_in_sec_dlg == FALSE) {
@@ -1275,6 +1298,7 @@
if (!mHackProc.isRunning()) {
if (backingPixmap.isNull()) {
setBackgroundColor(black);
+ setGeometry(0, 0, mRootWidth, mRootHeight);
erase();
}
else {
@@ -1298,6 +1322,7 @@
setBackgroundColor(black);
else
setBackgroundPixmap(backingPixmap);
+ setGeometry(0, 0, mRootWidth, mRootHeight);
erase();
return false;
}
@@ -1344,6 +1369,7 @@
setBackgroundColor(black);
else
setBackgroundPixmap(backingPixmap);
+ setGeometry(0, 0, mRootWidth, mRootHeight);
erase();
mSuspended = false;
}
@@ -1377,7 +1403,10 @@
else
setBackgroundPixmap(backingPixmap);
}
- if (backingPixmap.isNull()) erase();
+ if (backingPixmap.isNull()) {
+ setGeometry(0, 0, mRootWidth, mRootHeight);
+ erase();
+ }
else bitBlt(this, 0, 0, &backingPixmap);
if (trinity_desktop_lock_use_system_modal_dialogs) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
@@ -1416,7 +1445,10 @@
else
setBackgroundPixmap(backingPixmap);
}
- if (backingPixmap.isNull()) erase();
+ if (backingPixmap.isNull()) {
+ setGeometry(0, 0, mRootWidth, mRootHeight);
+ erase();
+ }
else bitBlt(this, 0, 0, &backingPixmap);
if (!mSuspended) {
if (trinity_desktop_lock_use_system_modal_dialogs) {
@@ -1492,6 +1524,7 @@
setBackgroundColor(black);
else
setBackgroundPixmap(backingPixmap);
+ setGeometry(0, 0, mRootWidth, mRootHeight);
erase();
return;
}
@@ -1597,10 +1630,13 @@
}
mDialogs.prepend( dlg );
fakeFocusIn( dlg->winId());
- if (backingPixmap.isNull() && trinity_desktop_lock_use_system_modal_dialogs) erase();
+ if (backingPixmap.isNull() && trinity_desktop_lock_use_system_modal_dialogs) {
+ setGeometry(0, 0, mRootWidth, mRootHeight);
+ erase();
+ }
else bitBlt(this, 0, 0, &backingPixmap);
int rt = dlg->exec();
- while (mDialogControlLock == true) sleep(1);
+ while (mDialogControlLock == true) usleep(100000);
currentDialog = NULL;
mDialogs.remove( dlg );
if( mDialogs.isEmpty() ) {
@@ -1624,8 +1660,18 @@
return rt;
}
+void LockProcess::slotForcePaintBackground()
+{
+ TQPixmap blankPixmap(mRootWidth, mRootHeight);
+ blankPixmap.fill(Qt::black);
+ slotPaintBackground(blankPixmap);
+ printf("[WARNING] Unable to obtain desktop wallpaper in a timely manner. High system load or possibly a TDE bug!\n\r"); fflush(stdout);
+}
+
void LockProcess::slotPaintBackground(const TQPixmap &rpm)
{
+ mEnsureScreenHiddenTimer->stop();
+
TQPixmap pm = rpm;
if (TQPaintDevice::x11AppDepth() == 32) {
@@ -1652,6 +1698,7 @@
backingPixmap = pm;
if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced) {
setBackgroundPixmap(backingPixmap);
+ setGeometry(0, 0, mRootWidth, mRootHeight);
erase();
}
}
@@ -1677,7 +1724,7 @@
mBusy=true;
TQTimer::singleShot(1000, this, TQT_SLOT(slotDeadTimePassed()));
if (mkeyCode == XKeysymToKeycode(qt_xdisplay(), XF86XK_Display)) {
- while (mDialogControlLock == true) sleep(1);
+ while (mDialogControlLock == true) usleep(100000);
mDialogControlLock = true;
currentDialog->close(); // DO NOT use closeCurrentWindow() here!
mDialogControlLock = false;
Index: kdesktop/lock/lockprocess.h
===================================================================
--- kdesktop/lock/lockprocess.h (revision 1261452)
+++ kdesktop/lock/lockprocess.h (working copy)
@@ -74,6 +74,7 @@
void doDesktopResizeFinish();
void doFunctionKeyBroadcast();
void slotPaintBackground(const TQPixmap &pm);
+ void slotForcePaintBackground();
protected:
virtual bool x11Event(XEvent *);
@@ -181,6 +182,7 @@
bool mForceReject;
TQDialog *currentDialog;
+ TQTimer* mEnsureScreenHiddenTimer;
TQTimer* mForceContinualLockDisplayTimer;
TQTimer* mEnsureVRootWindowSecurityTimer;
TQTimer* mHackDelayStartupTimer;

@ -1,24 +0,0 @@
commit 77041d785dbbede734f8dc44aa454d07d14f0317
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1329161441 -0600
Clean up 9cc1e2c1 changes to enum
This corrects a potential ABI compat problem noted by Martin Gräßlin
diff --git a/twin/lib/kdecoration.h b/twin/lib/kdecoration.h
index 19fe494..f18f970 100644
--- a/kwin/lib/kdecoration.h
+++ b/kwin/lib/kdecoration.h
@@ -97,10 +97,10 @@ public:
LowerOp,
FullScreenOp,
NoBorderOp,
- ShadowOp,
NoOp,
SetupWindowShortcutOp,
- ApplicationRulesOp ///< @since 3.5
+ ApplicationRulesOp, ///< @since 3.5
+ ShadowOp ///< @since 3.5.12
};
/**
* Basic color types that should be recognized by all decoration styles.

@ -1,22 +0,0 @@
commit 9e172fa7a1e93cc77e09616eb793b823d29ebaec
Author: Darrell Anderson <humanreadable@yahoo.com>
Date: 1333594438 -0500
Temporary fix for a probable race condition on some systems.
Still needs to be resolved by determining the root cause.
Partially resolves bug report 760.
diff --git a/kioslave/system/kdedmodule/systemdirnotify.cpp b/kioslave/system/kdedmodule/systemdirnotify.cpp
index 162d966..99b9ac7 100644
--- a/kioslave/system/kdedmodule/systemdirnotify.cpp
+++ b/kioslave/system/kdedmodule/systemdirnotify.cpp
@@ -36,6 +36,9 @@ SystemDirNotify::SystemDirNotify()
void SystemDirNotify::init()
{
if( mInited )
+ // FIXME Work around a race condition by inserting kdDebug delay before following
+ // code is executed -- the root cause of the race should be investigated and fixed.
+ kdDebug() << "SystemDirNotify::init(" << mInited << ")" << endl;
return;
mInited = true;
KGlobal::dirs()->addResourceType("system_entries",

@ -1,152 +0,0 @@
--- kdebase/kwin/kompmgr/kompmgr.c.rhel4 2012-09-06 22:02:37.201586743 +0200
+++ kdebase/kwin/kompmgr/kompmgr.c 2012-09-06 22:04:39.529337359 +0200
@@ -89,6 +89,8 @@
#include <pwd.h>
#endif
+#define ShapeInput 2
+
typedef enum {
WINTYPE_DESKTOP,
WINTYPE_DOCK,
@@ -403,6 +405,70 @@
#endif
}
+void
+loadConfig(char *filename){
+ FILE *file = NULL;
+ char line[ 1024 ];
+ size_t length = 0;
+ Bool wasNull = False;
+ Bool section = False;
+
+ if( filename == NULL ){
+#ifdef USE_ENV_HOME
+ const char *home = getenv("HOME");
+#else
+ const char *home;
+ struct passwd *p;
+ p = getpwuid(getuid());
+ if (p)
+ home = p->pw_dir;
+ else
+ home = getenv("HOME");
+#endif
+ const char *configfile = "/.xcompmgrrc";
+ int n = strlen(home)+strlen(configfile)+1;
+ filename = (char*)malloc(n*sizeof(char));
+ memset(filename,0,n);
+ wasNull = True;
+
+ strcat(filename, home);
+ strcat(filename, configfile);
+ }
+
+ printf("trying '%s' as configfile\n\n", filename);
+
+ if( (file = fopen(filename, "r")) == NULL ){
+ printf("failed to open config file. does it exist?\n");
+ if( wasNull ){
+ free(filename);
+ filename = NULL;
+ }
+ return;
+ }
+
+ /*find section*/
+ while( !section && fgets(line, 1023, file) != NULL ){
+ if( strcmp(line, "[xcompmgr]\n") == 0 )
+ section = True;
+ }
+ /*read and set values*/
+ while( section && fgets(line, 1023, file) != NULL ){
+ int ret = strlen( line );
+ if( ret > 1 ){
+ if( *line == '[' )/*found new section - maybe check for '\n'?*/
+ break;
+ *(line+ret-1) = '\0';
+ setParameter(line);
+ }
+ }
+ printf("\nfinished parsing the config file\n");
+ fclose(file);
+ if( wasNull ){
+ free(filename);
+ filename = NULL;
+ }
+}
+
void handle_siguser (int sig)
{
int uidnum;
@@ -2992,69 +3058,6 @@
return 0;
}
-void
-loadConfig(char *filename){
- FILE *file = NULL;
- char line[ 1024 ];
- size_t length = 0;
- Bool wasNull = False;
- Bool section = False;
-
- if( filename == NULL ){
-#ifdef USE_ENV_HOME
- const char *home = getenv("HOME");
-#else
- const char *home;
- struct passwd *p;
- p = getpwuid(getuid());
- if (p)
- home = p->pw_dir;
- else
- home = getenv("HOME");
-#endif
- const char *configfile = "/.xcompmgrrc";
- int n = strlen(home)+strlen(configfile)+1;
- filename = (char*)malloc(n*sizeof(char));
- memset(filename,0,n);
- wasNull = True;
-
- strcat(filename, home);
- strcat(filename, configfile);
- }
-
- printf("trying '%s' as configfile\n\n", filename);
-
- if( (file = fopen(filename, "r")) == NULL ){
- printf("failed to open config file. does it exist?\n");
- if( wasNull ){
- free(filename);
- filename = NULL;
- }
- return;
- }
-
- /*find section*/
- while( !section && fgets(line, 1023, file) != NULL ){
- if( strcmp(line, "[xcompmgr]\n") == 0 )
- section = True;
- }
- /*read and set values*/
- while( section && fgets(line, 1023, file) != NULL ){
- int ret = strlen( line );
- if( ret > 1 ){
- if( *line == '[' )/*found new section - maybe check for '\n'?*/
- break;
- *(line+ret-1) = '\0';
- setParameter(line);
- }
- }
- printf("\nfinished parsing the config file\n");
- fclose(file);
- if( wasNull ){
- free(filename);
- filename = NULL;
- }
-}
void
usage (char *program)

@ -1,29 +0,0 @@
--- kdebase/kdesktop/lock/lockprocess.cc.tooltips 2012-08-10 15:16:14.047229047 +0200
+++ kdebase/kdesktop/lock/lockprocess.cc 2012-08-10 15:41:08.433645385 +0200
@@ -960,6 +960,26 @@
setGeometry(0, 0, mRootWidth, mRootHeight);
+ // Hack to close all tooltips on screen
+ Window rootWindow = RootWindow(x11Display(), x11Screen());
+ Window parent;
+ Window* children = NULL;
+ Window* child = NULL;
+ unsigned int noOfChildren = 0;
+ XWindowAttributes childAttr;
+ Window childTransient;
+
+ if(XQueryTree(x11Display(), rootWindow, &rootWindow, &parent, &children, &noOfChildren) && noOfChildren>0 ) {
+ for (unsigned int i=0; i<noOfChildren; i++) {
+ if (XGetWindowAttributes(x11Display(), children[i], &childAttr) && XGetTransientForHint(x11Display(), children[i], &childTransient)) {
+ if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
+ XUnmapWindow(x11Display(), children[i]);
+ }
+ }
+ }
+ }
+
+
kdDebug(1204) << "Saver window Id: " << winId() << endl;
}

@ -1,105 +0,0 @@
--- a/kdesktop/init/My_Documents 2011-10-24 00:31:04.000000000 +0200
+++ b/kdesktop/init/My_Documents 2012-02-15 19:03:22.830485960 +0100
@@ -3,12 +3,10 @@
Icon=folder_wordprocessing
Name=My Documents
Name[af]=Dokument Gids
-Name[ar]=مستنداتي
+Name[ar]=مستنداتي
Name[be]=Тэчка для дакументаў
Name[bg]=Директория с документи
Name[bn]=ডকুমেন্ট ফোল্ডার
-Name[br]=Renkell an teulioù
-Name[ar]=مستنداتي
Name[br]=Renkell an teulioù
Name[bs]=Direktorij dokumenata
Name[ca]=Carpeta de documents
--- a/kioslave/system/entries/documents.desktop 2010-09-24 08:36:47.000000000 +0200
+++ b/kioslave/system/entries/documents.desktop 2012-02-15 19:02:55.094464303 +0100
@@ -4,66 +4,55 @@
Icon=folder_man
Name=Documents Folder
Name[af]=Dokument Gids
-Name[ar]=مستنداتي
+Name[ar]=مستنداتي
Name[be]=Тэчка для дакументаў
Name[bg]=Директория с документи
Name[bn]=ডকুমেন্ট ফোল্ডার
-Name[br]=Renkell an teulioù
+Name[br]=Renkell an teulioù
Name[bs]=Direktorij dokumenata
Name[ca]=Carpeta de documents
-Name[cs]=Složka s dokumenty
-Name[csb]=Katalog dokùmentów
+Name[cs]=Složka s dokumenty
+Name[csb]=Katalog dokùmentów
Name[da]=Dokumentmappe
Name[de]=Dokumente
-Name[el]=Φάκελος εγγράφων
Name[eo]=Dokumenta dosierujo
Name[es]=Carpeta de documentos
Name[et]=Dokumentide kataloog
Name[eu]=Dokumentuen karpeta
-Name[fa]=پوشۀ مستندات
+Name[fa]=پوشۀ مستندات
Name[fi]=Asiakirjakansio
Name[fr]=Dossier des documents
Name[fy]=Ofkeppele kamera
-Name[ga]=Fillteán na gCáipéisí
+Name[ga]=Fillteán na gCáipéisí
Name[gl]=Cartafol de Documentos
-Name[he]=תיקיית מסמכים
Name[hr]=Mapa dokumenata
-Name[hu]=Dokumentumok könyvtár
+Name[hu]=Dokumentumok könyvtár
Name[is]=Skjalamappa
Name[it]=Cartella documenti
-Name[ja]=ドキュメントフォルダ
-Name[ka]=დოკუმენტების დასტა
-Name[kk]=Құжаттар қапшығы
-Name[km]=ថត​ឯកសារ
-Name[ko]=문서 탐색기
-Name[lt]=Dokumentų aplankai
-Name[mk]=Папка со документи
+Name[ja]=ドキュメントフォルダ
+Name[kk]=Құжаттар қапшығы
+Name[lt]=Dokumentų aplankai
Name[nb]=Dokumentmappe
Name[nds]=Dokmenten-Orner
-Name[ne]=कागजात फोल्डर
Name[nl]=Documenten
Name[nn]=Dokumentmappe
-Name[pa]=ਦਸਤਾਵੇਜ਼ ਫੋਲਡਰ
-Name[pl]=Katalog dokumentów
+Name[pa]=ਦਸਤਾਵੇਜ਼ ਫੋਲਡਰ
+Name[pl]=Katalog dokumentów
Name[pt]=Pasta de Documentos
Name[pt_BR]=Pasta de Documentos
Name[ro]=Folder documente
-Name[ru]=Документы
-Name[se]=Dokumeantamáhppa
-Name[sk]=Priečinok dokumentov
+Name[ru]=Документы
+Name[se]=Dokumeantamáhppa
Name[sl]=Mapa z dokumenti
-Name[sr]=Фасцикла са документима
Name[sr@Latn]=Fascikla sa dokumentima
Name[sv]=Dokumentkatalog
-Name[te]=పత్రాల ఫొల్డర్
-Name[tg]=Ҳуҷҷатҳо
-Name[th]=โฟลเดอร์เอกสาร
+Name[tg]=Ҳуҷҷатҳо
Name[tr]=Belgeler Dizini
-Name[uk]=Тека документів
+Name[uk]=Тека документів
Name[uz]=Hujjatlar jildi
-Name[uz@cyrillic]=Ҳужжатлар жилди
-Name[vi]=Thư mục Tà i liệu
+Name[uz@cyrillic]=Ҳужжатлар жилди
+Name[vi]=Thư mục T<> i liệu
Name[wa]=Ridant documints
-Name[zh_CN]=文档文件夹
-Name[zh_TW]=文件目錄
+Name[zh_CN]=文档文件夹
+Name[zh_TW]=文件目錄

@ -1,12 +0,0 @@
--- kdebase/tsak/main.cpp.tsak 2012-08-20 18:12:34.000000000 -0400
+++ kdebase/tsak/main.cpp 2012-08-20 18:13:16.748272246 -0400
@@ -35,7 +35,9 @@
#include <sys/time.h>
#include <termios.h>
#include <signal.h>
+extern "C" {
#include <libudev.h>
+}
#include <libgen.h>
#define FIFO_DIR "/tmp/ksocket-global"

@ -1,11 +0,0 @@
--- kdebase/kdm/kfrontend/genkdmconf.c.ORI 2011-11-01 21:59:14.450046357 +0100
+++ kdebase/kdm/kfrontend/genkdmconf.c 2011-11-01 21:59:34.449045801 +0100
@@ -676,7 +676,7 @@
" ;;\n"
"esac\n"
"# invoke global X session script\n"
-". /etc/X11/Xsession\n";
+". /etc/X11/xinit/Xsession\n";
static const char def_background[] =
"[Desktop0]\n"

@ -1,11 +0,0 @@
--- kdebase/kdm/kfrontend/genkdmconf.c.ORI 2011-11-01 21:59:14.450046357 +0100
+++ kdebase/kdm/kfrontend/genkdmconf.c 2011-11-01 21:59:34.449045801 +0100
@@ -676,7 +676,7 @@
" ;;\n"
"esac\n"
"# invoke global X session script\n"
-". /etc/X11/Xsession\n";
+". /etc/X11/xdm/Xsession\n";
static const char def_background[] =
"[Desktop0]\n"

@ -1,133 +0,0 @@
--- kdebase.o/kate/app/kateconfigdialog.cpp.orig 2012-04-01 18:22:50.732901887 +0200
+++ kdebase/kate/app/kateconfigdialog.cpp 2012-04-01 18:25:01.100327408 +0200
@@ -138,6 +138,16 @@
TQWhatsThis::add( sb_numRecentFiles, youwouldnotbelieveit );
connect( sb_numRecentFiles, TQT_SIGNAL( valueChanged ( int ) ), this, TQT_SLOT( slotChanged() ) );
+ // Use only one instance of kate (MDI) ?
+ cb_useInstance = new TQCheckBox(bgStartup);
+ cb_useInstance->setText(i18n("Always use the current instance of kate to open new files"));
+ cb_useInstance->setChecked(parent->useInstance);
+ TQWhatsThis::add( cb_useInstance, i18n(
+ "When checked, all files opened from outside of Kate will only use the "
+ "currently opened instance of Kate.") );
+ connect( cb_useInstance, TQT_SIGNAL( toggled( bool ) ), this, TQT_SLOT( slotChanged() ) );
+
+
// sync the konsole ?
cb_syncKonsole = new TQCheckBox(bgStartup);
cb_syncKonsole->setText(i18n("Sync &terminal emulator with active document"));
@@ -161,7 +171,7 @@
this, TQT_SLOT( slotChanged() ) );
// GROUP with the one below: "Meta-informations"
- bgStartup = new TQButtonGroup( 1, Qt::Horizontal, i18n("Meta-Information"), frGeneral );
+ bgStartup = new TQButtonGroup( 2, Qt::Horizontal, i18n("Meta-Information"), frGeneral );
lo->addWidget( bgStartup );
// save meta infos
@@ -409,6 +419,7 @@
mainWindow->modNotification = cb_modNotifications->isChecked();
mainWindow->syncKonsole = cb_syncKonsole->isChecked();
+ mainWindow->useInstance = cb_useInstance->isChecked();
mainWindow->filelist->setSortType(cb_sortFiles->isChecked() ? KateFileList::sortByName : KateFileList::sortByID);
diff -urN tdebase/kate/app/kateconfigdialog.h tdebase.new/kate/app/kateconfigdialog.h
--- tdebase/kate/app/kateconfigdialog.h 2012-01-08 18:00:01.000000000 -0600
+++ tdebase.new/kate/app/kateconfigdialog.h 2012-03-11 00:05:03.000000000 -0600
@@ -66,6 +66,7 @@
TQCheckBox *cb_fullPath;
TQCheckBox *cb_syncKonsole;
+ TQCheckBox *cb_useInstance;
TQCheckBox *cb_sortFiles;
TQSpinBox *sb_numRecentFiles;
TQCheckBox *cb_modNotifications;
diff -urN tdebase/kate/app/katemain.cpp tdebase.new/kate/app/katemain.cpp
--- tdebase/kate/app/katemain.cpp 2011-12-25 00:52:38.000000000 -0600
+++ tdebase.new/kate/app/katemain.cpp 2012-03-11 00:05:03.000000000 -0600
@@ -41,6 +41,8 @@
{ "start <name>", I18N_NOOP("Start Kate with a given session"), 0 },
{ "u", 0, 0 },
{ "use", I18N_NOOP("Use a already running kate instance (if possible)"), 0 },
+ { "f", 0, 0 },
+ { "force-sdi", I18N_NOOP("Force single document mode if the MDI setting is enabled."), 0 },
{ "p", 0, 0 },
{ "pid <pid>", I18N_NOOP("Only try to reuse kate instance with this pid"), 0 },
{ "e", 0, 0 },
@@ -57,9 +59,13 @@
extern "C" KDE_EXPORT int kdemain( int argc, char **argv )
{
+ KConfig * config = NULL;
+ bool alwaysUseInstance;
// here we go, construct the Kate version
TQString kateVersion = KateApp::kateVersion();
+ KInstance instance( "kate" );
+
KAboutData aboutData ("kate", I18N_NOOP("Kate"), kateVersion.latin1(),
I18N_NOOP( "Kate - Advanced Text Editor" ), KAboutData::License_LGPL_V2,
I18N_NOOP( "(c) 2000-2005 The Kate Authors" ), 0, "http://kate.kde.org");
@@ -107,8 +113,13 @@
// get our command line args ;)
KCmdLineArgs* args = KCmdLineArgs::parsedArgs();
- // now, first try to contact running kate instance if needed
- if ( args->isSet("use") || (::getenv("KATE_PID")!=0) )
+ config = KGlobal::config();
+ config->setGroup("General");
+ alwaysUseInstance = config->readBoolEntry("UseInstance");
+
+// now, first try to contact running kate instance if needed
+ if ( ((args->isSet("use") || alwaysUseInstance) &&
+ !(args->isSet("force-sdi"))) || (::getenv("KATE_PID")!=0) )
{
DCOPClient client;
client.attach ();
diff -urN tdebase/kate/app/katemainwindow.cpp tdebase.new/kate/app/katemainwindow.cpp
--- tdebase/kate/app/katemainwindow.cpp 2012-01-08 18:00:01.000000000 -0600
+++ tdebase.new/kate/app/katemainwindow.cpp 2012-03-11 01:18:48.000000000 -0600
@@ -406,6 +406,7 @@
config->setGroup("General");
syncKonsole = config->readBoolEntry("Sync Konsole", true);
+ useInstance = config->readBoolEntry("UseInstance", false);
modNotification = config->readBoolEntry("Modified Notification", false);
KateDocManager::self()->setSaveMetaInfos(config->readBoolEntry("Save Meta Infos", true));
KateDocManager::self()->setDaysMetaInfos(config->readNumEntry("Days Meta Infos", 30));
@@ -437,6 +438,8 @@
config->writeEntry("Sync Konsole", syncKonsole);
+ config->writeEntry("UseInstance", useInstance);
+
fileOpenRecent->saveEntries(config, "Recent Files");
fileselector->writeConfig(config, "fileselector");
diff -urN tdebase/kate/app/katemainwindow.h tdebase.new/kate/app/katemainwindow.h
--- tdebase/kate/app/katemainwindow.h 2011-12-25 00:52:38.000000000 -0600
+++ tdebase.new/kate/app/katemainwindow.h 2012-03-11 00:05:03.000000000 -0600
@@ -182,6 +182,7 @@
Kate::ToolViewManager *m_toolViewManager;
bool syncKonsole;
+ bool useInstance;
bool modNotification;
DCOPObject *m_dcop;
diff -urN tdebase/kate/app/katemain.cpp tdebase.new/kate/app/katemain.cpp
--- tdebase/kate/app/katemain.cpp 2011-12-25 00:52:38.000000000 -0600
+++ tdebase.new/kate/app/katemain.cpp 2012-03-11 13:32:05.000000000 -0500
@@ -231,7 +231,9 @@
else
wRef.call("restore");
}
+ wRef.call( "hide" );
wRef.call( "raise" );
+ wRef.call( "show" );
// stop startup notification
KStartupInfo::appStarted( );

@ -1,71 +0,0 @@
diff -urN /dev/shm/kdebase/kate/app/kateconfigdialog.cpp /dev/shm/kdebase.new/kate/app/kateconfigdialog.cpp
--- /dev/shm/kdebase/kate/app/kateconfigdialog.cpp 2011-07-09 01:16:52.000000000 -0500
+++ /dev/shm/kdebase.new/kate/app/kateconfigdialog.cpp 2011-11-29 11:06:22.000000000 -0600
@@ -112,11 +112,32 @@
TQWhatsThis::add(cb_fullPath,i18n("If this option is checked, the full document path will be shown in the window caption."));
connect( cb_fullPath, TQT_SIGNAL( toggled( bool ) ), this, TQT_SLOT( slotChanged() ) );
+ // sort filelist ? ### remove
+ cb_sortFiles = new TQCheckBox(bgStartup);
+ cb_sortFiles->setText(i18n("Sort &files alphabetically in the file list"));
+ cb_sortFiles->setChecked(parent->filelist->sortType() == KateFileList::sortByName);
+ TQWhatsThis::add( cb_sortFiles, i18n(
+ "If this is checked, the files in the file list will be sorted alphabetically.") );
+ connect( cb_sortFiles, TQT_SIGNAL( toggled( bool ) ), this, TQT_SLOT( slotChanged() ) );
// GROUP with the one below: "Behavior"
bgStartup = new TQButtonGroup( 1, Qt::Horizontal, i18n("&Behavior"), frGeneral );
lo->addWidget( bgStartup );
+ // number of recent files
+ TQHBox *hbNrf = new TQHBox( bgStartup );
+ TQLabel *lNrf = new TQLabel( i18n("&Number of recent files:"), hbNrf );
+ sb_numRecentFiles = new TQSpinBox( 0, 1000, 1, hbNrf );
+ sb_numRecentFiles->setValue( mainWindow->fileOpenRecent->maxItems() );
+ lNrf->setBuddy( sb_numRecentFiles );
+ TQString youwouldnotbelieveit ( i18n(
+ "<qt>Sets the number of recent files remembered by Kate.<p><strong>NOTE: </strong>"
+ "If you set this lower than the current value, the list will be truncated and "
+ "some items forgotten.</qt>") );
+ TQWhatsThis::add( lNrf, youwouldnotbelieveit );
+ TQWhatsThis::add( sb_numRecentFiles, youwouldnotbelieveit );
+ connect( sb_numRecentFiles, TQT_SIGNAL( valueChanged ( int ) ), this, TQT_SLOT( slotChanged() ) );
+
// sync the konsole ?
cb_syncKonsole = new TQCheckBox(bgStartup);
cb_syncKonsole->setText(i18n("Sync &terminal emulator with active document"));
@@ -389,6 +403,11 @@
mainWindow->syncKonsole = cb_syncKonsole->isChecked();
+ mainWindow->filelist->setSortType(cb_sortFiles->isChecked() ? KateFileList::sortByName : KateFileList::sortByID);
+
+ config->writeEntry( "Number of recent files", sb_numRecentFiles->value() );
+ mainWindow->fileOpenRecent->setMaxItems( sb_numRecentFiles->value() );
+
fileSelConfigPage->apply();
filelistConfigPage->apply();
diff -urN /dev/shm/kdebase/kate/app/kateconfigdialog.h /dev/shm/kdebase.new/kate/app/kateconfigdialog.h
--- /dev/shm/kdebase/kate/app/kateconfigdialog.h 2010-08-12 17:35:39.000000000 -0500
+++ /dev/shm/kdebase.new/kate/app/kateconfigdialog.h 2011-11-29 11:09:03.000000000 -0600
@@ -66,6 +66,8 @@
TQCheckBox *cb_fullPath;
TQCheckBox *cb_syncKonsole;
+ TQCheckBox *cb_sortFiles;
+ TQSpinBox *sb_numRecentFiles;
TQCheckBox *cb_modNotifications;
TQCheckBox *cb_saveMetaInfos;
TQSpinBox *sb_daysMetaInfos;
diff -urN /dev/shm/kdebase/kate/app/katemainwindow.cpp /dev/shm/kdebase.new/kate/app/katemainwindow.cpp
--- /dev/shm/kdebase/kate/app/katemainwindow.cpp 2011-07-09 01:16:52.000000000 -0500
+++ /dev/shm/kdebase.new/kate/app/katemainwindow.cpp 2011-11-29 11:10:05.000000000 -0600
@@ -412,6 +412,7 @@
m_viewManager->setShowFullPath(config->readBoolEntry("Show Full Path in Title", false));
+ fileOpenRecent->setMaxItems( config->readNumEntry("Number of recent files", fileOpenRecent->maxItems() ) );
fileOpenRecent->loadEntries(config, "Recent Files");
fileselector->readConfig(config, "fileselector");

@ -1,45 +0,0 @@
diff -rcb kdebase.ORI/kdesu/kdesu/sudlg.cpp kdebase/kdesu/kdesu/sudlg.cpp
*** kdebase.ORI/kdesu/kdesu/sudlg.cpp 2010-12-17 22:55:07.725798945 +0100
--- kdebase/kdesu/kdesu/sudlg.cpp 2010-12-17 22:55:49.378797283 +0100
***************
*** 15,21 ****
#include "sudlg.h"
KDEsuDialog::KDEsuDialog(TQCString user, TQCString auth_user, bool enableKeep,const TQString& icon, bool withIgnoreButton)
! : KPasswordDialog(Password, enableKeep, (withIgnoreButton ? User1:NoDefault), icon)
{
KConfig* config = KGlobal::config();
config->setGroup("super-user-command");
--- 15,21 ----
#include "sudlg.h"
KDEsuDialog::KDEsuDialog(TQCString user, TQCString auth_user, bool enableKeep,const TQString& icon, bool withIgnoreButton)
! : KPasswordDialog(Password, enableKeep, 0, icon)
{
KConfig* config = KGlobal::config();
config->setGroup("super-user-command");
***************
*** 34,45 ****
} else {
if (m_User == "root") {
prompt = i18n("The action you requested needs root privileges. "
! "Please enter root's password below or click "
! "Ignore to continue with your current privileges.");
} else {
prompt = i18n("The action you requested needs additional privileges. "
! "Please enter the password for \"%1\" below or click "
! "Ignore to continue with your current privileges.").arg(static_cast<const char *>(m_User));
}
}
setPrompt(prompt);
--- 34,43 ----
} else {
if (m_User == "root") {
prompt = i18n("The action you requested needs root privileges. "
! "Please enter root's password below.");
} else {
prompt = i18n("The action you requested needs additional privileges. "
! "Please enter the password for \"%1\" below.").arg(static_cast<const char *>(m_User));
}
}
setPrompt(prompt);

@ -1,11 +0,0 @@
--- kdebase/kdesu/kdesu/kdesu.cpp.orig 2011-10-26 21:06:48.000000000 +0200
+++ kdebase/kdesu/kdesu/kdesu.cpp 2012-01-01 16:54:11.468303046 +0100
@@ -274,7 +274,7 @@
// Try to exec the command with kdesud.
bool keep = !args->isSet("n") && have_daemon;
- bool terminal = true;
+ bool terminal = args->isSet("t");
bool new_dcop = args->isSet("newdcop");
bool withIgnoreButton = args->isSet("ignorebutton");

@ -1,43 +0,0 @@
diff -u -r kdebase.orig/config.h.cmake kdebase/config.h.cmake
--- kdebase.orig/config.h.cmake 2011-10-30 00:02:15.000000000 +0300
+++ kdebase/config.h.cmake 2011-11-19 00:59:26.088061733 +0200
@@ -114,6 +114,7 @@
#cmakedefine HAVE_SYSINFO 1
#cmakedefine HAVE_STRNLEN 1
#cmakedefine HAVE_GETIFADDRS 1
+#cmakedefine HAVE_CRYPT 1
#cmakedefine HAVE_SETUSERCONTEXT 1
#cmakedefine HAVE_GETUSERSHELL 1
diff -u -r kdebase.orig/kdm/backend/CMakeLists.txt kdebase/kdm/backend/CMakeLists.txt
--- kdebase.orig/kdm/backend/CMakeLists.txt 2011-09-03 22:32:00.000000000 +0300
+++ kdebase/kdm/backend/CMakeLists.txt 2011-11-19 01:05:03.820839491 +0200
@@ -43,6 +43,6 @@
process.c protodpy.c reset.c resource.c rpcauth.c
server.c session.c sessreg.c socket.c streams.c
util.c xdmauth.c xdmcp.c
- LINK X11 ${XAU_LIBRARIES} ${DBUS_TQT_LIBRARIES} ${PAM_LIBRARY} ${XDMCP_LIBRARIES}
+ LINK X11 ${XAU_LIBRARIES} ${DBUS_TQT_LIBRARIES} ${CRYPT_LIBRARY} ${PAM_LIBRARY} ${XDMCP_LIBRARIES}
DESTINATION ${BIN_INSTALL_DIR}
)
diff -u -r kdebase.orig/kdm/ConfigureChecks.cmake kdebase/kdm/ConfigureChecks.cmake
--- kdebase.orig/kdm/ConfigureChecks.cmake 2011-03-16 22:49:38.000000000 +0200
+++ kdebase/kdm/ConfigureChecks.cmake 2011-11-19 01:05:40.426381860 +0200
@@ -27,6 +27,16 @@
check_function_exists( auth_timeok HAVE_AUTH_TIMEOK )
tde_restore( CMAKE_REQUIRED_LIBRARIES )
+check_function_exists( crypt LIBC_HAVE_CRYPT )
+if( LIBC_HAVE_CRYPT )
+ set( HAVE_CRYPT 1 CACHE INTERNAL "" FORCE )
+else( )
+ check_library_exists( crypt crypt "" HAVE_CRYPT )
+ if( HAVE_CRYPT )
+ set( CRYPT_LIBRARY crypt )
+ endif( )
+endif( )
+
check_include_file( lastlog.h HAVE_LASTLOG_H )
check_include_file( termio.h HAVE_TERMIO_H )

@ -1,29 +0,0 @@
--- kicker/applets/launcher/easyvector.h
+++ kicker/applets/launcher/easyvector.h 2012-04-05 17:33:50.320708865 -0500
@@ -87,7 +87,7 @@
template < class VALUE, bool CHECKINDEX >
void EasyVector< VALUE, CHECKINDEX >::eraseAt(Index index)
{ _checkIndex(index);
- erase(this->begin()+index);
+ this->erase(this->begin()+index);
}
@@ -108,7 +108,7 @@
this->push_back(value);
return;
}
- insert(this->begin()+index,value);
+ this->insert(this->begin()+index,value);
}
@@ -116,7 +116,7 @@
void EasyVector< VALUE, CHECKINDEX >::insertAt(EasyVector< VALUE, CHECKINDEX >::Index index,const EasyVector< VALUE, CHECKINDEX > &v)
{ index=_convertInsertIndex(index);
_checkInsertIndex(index);
- insert(this->begin()+index,v.begin(),v.end());
+ this->insert(this->begin()+index,v.begin(),v.end());
}

@ -1,442 +0,0 @@
diff -ur kdebase/kicker/kicker/buttons/knewbutton.cpp kdebase1/kicker/kicker/buttons/knewbutton.cpp
--- kdebase/kicker/kicker/buttons/knewbutton.cpp 2011-08-11 01:25:50.000000000 -0400
+++ kdebase1/kicker/kicker/buttons/knewbutton.cpp 2011-11-18 12:54:22.380404540 -0500
@@ -55,26 +55,28 @@
: KButton( parent ),
m_oldPos(0,0)
{
+
+ setTitle(i18n("K Menu"));
Q_ASSERT( !m_self );
m_self = this;
- m_hoverTimer = -1;
m_openTimer = -1;
- m_active = false;
+ m_hoverTimer = -1;
m_mouseInside = false;
m_drag = false;
-
- setIconAlignment((TQ_Alignment)(AlignTop|AlignRight));
- setAcceptDrops(true);
- setIcon("kmenu-suse");
- setDrawArrow(false);
-
- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_basic.mng"));
- m_movie->connectUpdate(this, TQT_SLOT(updateMovie()));
- m_movie->connectStatus(TQT_TQOBJECT(this), TQT_SLOT(slotStatus(int)));
- m_movie->connectResize(this, TQT_SLOT(slotSetSize(const TQSize&)));
-
+
+ setIcon("kmenu");
+ setIcon(KickerSettings::customKMenuIcon());
+
TQApplication::desktop()->screen()->installEventFilter(this);
- setMouseTracking(true);
+
+ if (KickerSettings::showKMenuText())
+ {
+ setButtonText(KickerSettings::kMenuText());
+ setFont(KickerSettings::buttonFont());
+ setTextColor(KickerSettings::buttonTextColor());
+ }
+
+ tqrepaint();
}
KNewButton::~KNewButton()
@@ -82,28 +84,15 @@
if ( m_self == this )
m_self = 0;
setMouseTracking(false);
- delete m_movie;
}
-void KNewButton::slotStatus(int status)
-{
- if(status == TQMovie::EndOfLoop)
- slotStopAnimation();
-}
-TQColor KNewButton::borderColor() const
+void KNewButton::drawButton(TQPainter *p)
{
- TQImage img = m_active_pixmap.convertToImage();
-
- for (int i = 0; i < img.width(); ++i) {
- QRgb rgb = img.pixel(orientation() == Qt::Horizontal ? img.width() - i - 1 :
- i, 2);
-
- if (tqGreen(rgb) > 0x50)
- return rgb;
- }
-
- return img.pixel( orientation() == Qt::Horizontal ? img.width() - 2 : 2, 2);
+ if (KickerSettings::showDeepButtons())
+ PanelPopupButton::drawDeepButton(p);
+ else
+ PanelPopupButton::drawButton(p);
}
void KNewButton::show()
@@ -111,103 +100,12 @@
KButton::show();
if (KickerSettings::firstRun()) {
- TQTimer::singleShot(500,this,TQT_SLOT(slotExecMenu()));
+ TQTimer::singleShot(0,this,TQT_SLOT(slotExecMenu()));
KickerSettings::setFirstRun(false);
KickerSettings::writeConfig();
}
}
-void KNewButton::updateMovie()
-{
- m_oldPos = TQPoint( -1, -1 );
- drawEye();
-
- if (!m_active && m_movie->running())
- m_movie->pause();
-}
-
-void KNewButton::setPopupDirection(KPanelApplet::Direction d)
-{
- KButton::setPopupDirection(d);
-
- delete m_movie;
-
- switch (d) {
- case KPanelApplet::Left:
- setIconAlignment((TQ_Alignment)(AlignTop|AlignLeft));
- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_vertical.mng"));
- break;
- case KPanelApplet::Right:
- setIconAlignment((TQ_Alignment)(AlignTop|AlignRight));
- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_vertical.mng"));
- break;
- case KPanelApplet::Up:
- setIconAlignment((TQ_Alignment)(AlignTop|AlignHCenter));
- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_basic.mng"));
- break;
- case KPanelApplet::Down:
- setIconAlignment((TQ_Alignment)(AlignBottom|AlignHCenter));
- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_flipped.mng"));
- }
-
- m_movie->connectUpdate(this, TQT_SLOT(updateMovie()));
- m_movie->connectStatus(TQT_TQOBJECT(this), TQT_SLOT(slotStatus(int)));
- m_movie->connectResize(this, TQT_SLOT(slotSetSize(const TQSize&)));
-}
-
-void KNewButton::slotSetSize(const TQSize& s)
-{
- m_iconSize = s;
-}
-
-double KNewButton::buttonScaleFactor(const TQSize& s) const
-{
- double sf = 1.0;
-
- switch (popupDirection()) {
- case KPanelApplet::Left:
- case KPanelApplet::Right:
-// sf = kMin(double(s.width()) / m_iconSize.height(), double(s.height()) / m_iconSize.width());
-// break;
- case KPanelApplet::Up:
- case KPanelApplet::Down:
- sf = kMin(double(s.width()) / m_iconSize.width(), double(s.height()) / m_iconSize.height());
- break;
- }
-
- if (sf > 0.8) sf = 1.0;
- return sf;
-}
-
-int KNewButton::widthForHeight(int height) const
-{
- int r = m_iconSize.width() * buttonScaleFactor(TQSize(m_iconSize.width(), height));
-
- if (!m_movie->running() && height != m_active_pixmap.height())
- {
- KNewButton* that = const_cast<KNewButton*>(this);
- TQTimer::singleShot(0, that, TQT_SLOT(slotStopAnimation()));
- }
-
- return r;
-}
-
-int KNewButton::preferredDimension(int panelDim) const
-{
- return kMax(m_icon.width(), m_icon.height());
-}
-
-int KNewButton::heightForWidth(int width) const
-{
- int r = m_iconSize.width() * buttonScaleFactor(TQSize(width, m_iconSize.height()));
- if (!m_movie->running() && width != m_active_pixmap.width())
- {
- KNewButton* that = const_cast<KNewButton*>(this);
- TQTimer::singleShot(0, that, TQT_SLOT(slotStopAnimation()));
- }
- return r;
-}
-
bool KNewButton::eventFilter(TQObject *o, TQEvent *e)
{
if (e->type() == TQEvent::MouseButtonRelease ||
@@ -223,75 +121,9 @@
}
}
- if (KickerSettings::kickoffDrawGeekoEye() && e->type() == TQEvent::MouseMove)
- {
- TQMouseEvent *me = TQT_TQMOUSEEVENT(e);
- if ((me->state() & Qt::MouseButtonMask) == Qt::NoButton)
- drawEye();
- }
-
return KButton::eventFilter(o, e);
}
-void KNewButton::drawEye()
-{
-#define eye_x 62
-#define eye_y 13
- TQPoint mouse = TQCursor::pos();
- TQPoint me = mapToGlobal(TQPoint(eye_x, eye_y));
- double a = atan2(mouse.y() - me.y(), mouse.x() - me.x());
- int dx = int(2.1 * cos(a));
- int dy = int(2.1 * sin(a));
-
- TQPoint newpos(eye_x+dx,eye_y+dy);
- if (newpos!=m_oldPos) {
- m_oldPos = newpos;
- TQPixmap pixmap = m_active_pixmap;
-
- double sf = 1.0;
-
- if(!m_movie->framePixmap().isNull())
- {
- pixmap = m_movie->framePixmap();
- pixmap.detach();
- m_iconSize = pixmap.size();
- sf = buttonScaleFactor(size());
-
- if (KickerSettings::kickoffDrawGeekoEye()) {
- TQPainter p(&pixmap);
- p.setPen(white);
- p.setBrush(white);
- // p.setPen(TQColor(110,185,55));
- p.drawRect(eye_x+dx, eye_y+dy, 2, 2);
- p. end();
- }
- }
-
- TQWMatrix matrix;
- switch (popupDirection()) {
- case KPanelApplet::Left:
- matrix.scale(sf, -sf);
- matrix.rotate(90);
- break;
- case KPanelApplet::Up:
- matrix.scale(sf, sf);
- break;
- case KPanelApplet::Right:
- matrix.scale(sf, -sf);
- matrix.rotate(90);
- break;
- case KPanelApplet::Down:
- matrix.scale(sf, sf);
- break;
- }
- m_active_pixmap = pixmap.xForm(matrix);
-
- tqrepaint(false);
- }
-#undef eye_x
-#undef eye_y
-}
-
void KNewButton::enterEvent(TQEvent* e)
{
KButton::enterEvent(e);
@@ -315,15 +147,8 @@
}
m_active = true;
- m_movie->unpause();
- m_movie->restart();
}
-void KNewButton::rewindMovie()
-{
- m_oldPos = TQPoint( -1, -1 );
- m_movie->unpause();
-}
void KNewButton::dragEnterEvent(TQDragEnterEvent* /*e*/)
{
@@ -369,31 +194,12 @@
}
}
-void KNewButton::slotStopAnimation()
-{
- m_active = false;
- m_movie->pause();
- m_movie->restart();
- TQTimer::singleShot(200, this, TQT_SLOT(rewindMovie()));
-}
-
-const TQPixmap& KNewButton::labelIcon() const
-{
- return m_active_pixmap;
-}
-
void KNewButton::slotExecMenu()
{
- if (m_openTimer != -1)
- killTimer(m_openTimer);
-
- m_openTimer = startTimer(TQApplication::doubleClickInterval() * 3);
if (m_active)
{
m_active = false;
- m_movie->pause();
- m_movie->restart();
}
KButton::slotExecMenu();
@@ -401,40 +207,12 @@
assert(!KickerTip::tippingEnabled());
assert(dynamic_cast<KMenu*>(m_popup));
- disconnect(dynamic_cast<KMenu*>(m_popup), TQT_SIGNAL(aboutToHide()), this,
- TQT_SLOT(slotStopAnimation()));
- connect(dynamic_cast<KMenu*>(m_popup), TQT_SIGNAL(aboutToHide()),
- TQT_SLOT(slotStopAnimation()));
-
m_popup->move(KickerLib::popupPosition(popupDirection(), m_popup, this));
// I wish KMenu would properly done itself when it closes. But it doesn't.
- bool useEffect = true; // could be TQApplication::isEffectEnabled()
- useEffect = false; // too many TQt bugs to be useful
- if (m_drag)
- useEffect = false;
-
m_drag = false; // once is enough
- if (useEffect)
- {
- switch (popupDirection()) {
- case KPanelApplet::Left:
- qScrollEffect(m_popup, TQEffects::LeftScroll);
- break;
- case KPanelApplet::Up:
- qScrollEffect(m_popup, TQEffects::UpScroll);
- break;
- case KPanelApplet::Right:
- qScrollEffect(m_popup, TQEffects::RightScroll);
- break;
- case KPanelApplet::Down:
- qScrollEffect(m_popup, TQEffects::DownScroll);
- break;
- }
- }
- else
- static_cast<KMenu*>(m_popup)->show();
+ static_cast<KMenu*>(m_popup)->show();
}
void KNewButton::timerEvent(TQTimerEvent* e)
@@ -447,9 +225,4 @@
killTimer(m_hoverTimer);
m_hoverTimer = -1;
}
- if (e->timerId() == m_openTimer)
- {
- killTimer(m_openTimer);
- m_openTimer = -1;
- }
}
diff -ur kdebase/kicker/kicker/buttons/knewbutton.h kdebase1/kicker/kicker/buttons/knewbutton.h
--- kdebase/kicker/kicker/buttons/knewbutton.h 2011-03-12 01:58:13.000000000 -0500
+++ kdebase1/kicker/kicker/buttons/knewbutton.h 2011-11-18 09:31:03.163665964 -0500
@@ -28,7 +28,6 @@
#include "kbutton.h"
-#include <tqmovie.h>
#include <tqpoint.h>
/**
@@ -43,25 +42,10 @@
~KNewButton();
static KNewButton *self() { return m_self; }
-
void loadConfig( const KConfigGroup& config );
-
- virtual const TQPixmap& labelIcon() const;
-
- virtual int widthForHeight(int height) const;
- virtual int preferredDimension(int panelDim) const;
- virtual int heightForWidth(int width) const;
-
TQColor borderColor() const;
+ //virtual void setPopupDirection(KPanelApplet::Direction d);
- virtual void setPopupDirection(KPanelApplet::Direction d);
-
-private slots:
- void slotStatus(int);
- void slotSetSize(const TQSize&);
- void slotStopAnimation();
- void rewindMovie();
- void updateMovie();
protected:
virtual void show();
@@ -78,17 +62,15 @@
void timerEvent(TQTimerEvent*);
private:
- void drawEye();
- double buttonScaleFactor(const TQSize& s) const;
- TQMovie* m_movie;
+ void drawButton(TQPainter *p);
TQPixmap m_active_pixmap;
TQPoint m_oldPos;
TQSize m_iconSize;
TQRect m_sloppyRegion;
- int m_hoverTimer;
int m_openTimer;
- bool m_active;
+ int m_hoverTimer;
+ bool m_active;
bool m_mouseInside;
bool m_drag;
diff -ur kdebase/kicker/kicker/ui/k_new_mnu.cpp kdebase1/kicker/kicker/ui/k_new_mnu.cpp
--- kdebase/kicker/kicker/ui/k_new_mnu.cpp 2011-08-11 01:25:49.000000000 -0400
+++ kdebase1/kicker/kicker/ui/k_new_mnu.cpp 2011-11-18 15:02:51.565689119 -0500
@@ -1700,8 +1700,6 @@
TQPixmap pix( 64, footer->height() );
TQPainter p( &pix );
p.fillRect( 0, 0, 64, footer->height(), m_branding->tqcolorGroup().brush( TQColorGroup::Base ) );
- p.fillRect( 0, m_orientation == BottomUp ? footer->height() - 2 : 0,
- 64, 3, KNewButton::self()->borderColor() );
p.end();
footer->setPaletteBackgroundPixmap( pix );
}
@@ -3500,7 +3498,8 @@
}
m_systemView->insertItem( iconName, userLabel.isEmpty() ? label : userLabel,
descr, "system:/media/" + name, nId++, -1 );
-
+ ++it;
+ ++it;
++it; // skip separator
}
}

@ -1,40 +0,0 @@
--- kdebase/kioslave/man/kio_man.cpp.ORI 2011-12-03 00:22:28.400423296 +0100
+++ kdebase/kioslave/man/kio_man.cpp 2011-12-03 00:25:59.127173102 +0100
@@ -569,20 +569,24 @@
}
lastdir = filename.left(filename.findRev('/'));
- myStdStream = TQString::null;
- KProcess proc;
- /* TODO: detect availability of 'man --recode' so that this can go
- * upstream */
- proc << "man" << "--recode" << "UTF-8" << filename;
-
- TQApplication::connect(&proc, TQT_SIGNAL(receivedStdout (KProcess *, char *, int)),
- this, TQT_SLOT(slotGetStdOutputUtf8(KProcess *, char *, int)));
- proc.start(KProcess::Block, KProcess::All);
-
- const TQCString cstr=myStdStream.utf8();
- const int len = cstr.size()-1;
+ TQIODevice *fd= KFilterDev::deviceForFile(filename);
+
+ if ( !fd || !fd->open(IO_ReadOnly))
+ {
+ delete fd;
+ return 0;
+ }
+ TQByteArray array(fd->readAll());
+ kdDebug(7107) << "read " << array.size() << endl;
+ fd->close();
+ delete fd;
+
+ if (array.isEmpty())
+ return 0;
+
+ const int len = array.size();
buf = new char[len + 4];
- tqmemmove(buf + 1, cstr.data(), len);
+ tqmemmove(buf + 1, array.data(), len);
buf[0]=buf[len]='\n'; // Start and end with a end of line
buf[len+1]=buf[len+2]='\0'; // Two NUL characters at end
}

@ -1,19 +0,0 @@
diff -urN /dev/shm/kdebase/konqueror/listview/konq_listviewwidget.cc /dev/shm/kdebase.new/konqueror/listview/konq_listviewwidget.cc
--- /dev/shm/kdebase/konqueror/listview/konq_listviewwidget.cc 2011-08-11 00:25:51.000000000 -0500
+++ /dev/shm/kdebase.new/konqueror/listview/konq_listviewwidget.cc 2011-12-03 20:55:00.000000000 -0600
@@ -1009,10 +1009,11 @@
// gather pixmap
TQPixmap *pix = new TQPixmap(*(_item->pixmap(0)));
- // call the icon effect
- KIconEffect::visualActivate(viewport(), rect, pix);
-
- delete(pix);
+ // call the icon effect if enabled
+ if (KGlobalSettings::showKonqIconActivationEffect() == true) {
+ KIconEffect::visualActivate(viewport(), rect, pix);
+ delete(pix);
+ }
}
}
else

@ -1,160 +0,0 @@
diff -urN /dev/shm/kdebase/kcontrol/konqhtml/advancedTabDialog.cpp /dev/shm/kdebase.new/kcontrol/konqhtml/advancedTabDialog.cpp
--- kdebase/kcontrol/konqhtml/advancedTabDialog.cpp 2011-03-12 00:57:45.000000000 -0600
+++ kdebase.new/kcontrol/konqhtml/advancedTabDialog.cpp 2011-12-03 17:25:40.297586593 -0600
@@ -58,7 +58,6 @@
layout->addSpacing( 20 );
layout->addStretch();
- connect(m_advancedWidget->m_pNewTabsInBackground, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
connect(m_advancedWidget->m_pOpenAfterCurrentPage, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
connect(m_advancedWidget->m_pTabConfirm, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
connect(m_advancedWidget->m_pTabCloseActivatePrevious, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
@@ -76,7 +75,6 @@
void advancedTabDialog::load()
{
m_pConfig->setGroup("FMSettings");
- m_advancedWidget->m_pNewTabsInBackground->setChecked( ! (m_pConfig->readBoolEntry( "NewTabsInFront", false )) );
m_advancedWidget->m_pOpenAfterCurrentPage->setChecked( m_pConfig->readBoolEntry( "OpenAfterCurrentPage", false ) );
m_advancedWidget->m_pPermanentCloseButton->setChecked( m_pConfig->readBoolEntry( "PermanentCloseButton", false ) );
m_advancedWidget->m_pKonquerorTabforExternalURL->setChecked( m_pConfig->readBoolEntry( "KonquerorTabforExternalURL", false ) );
@@ -92,7 +90,6 @@
void advancedTabDialog::save()
{
m_pConfig->setGroup("FMSettings");
- m_pConfig->writeEntry( "NewTabsInFront", !(m_advancedWidget->m_pNewTabsInBackground->isChecked()) );
m_pConfig->writeEntry( "OpenAfterCurrentPage", m_advancedWidget->m_pOpenAfterCurrentPage->isChecked() );
m_pConfig->writeEntry( "PermanentCloseButton", m_advancedWidget->m_pPermanentCloseButton->isChecked() );
m_pConfig->writeEntry( "KonquerorTabforExternalURL", m_advancedWidget->m_pKonquerorTabforExternalURL->isChecked() );
diff -urN /dev/shm/kdebase/kcontrol/konqhtml/advancedTabOptions.ui /dev/shm/kdebase.new/kcontrol/konqhtml/advancedTabOptions.ui
--- kdebase/kcontrol/konqhtml/advancedTabOptions.ui 2011-03-12 00:57:45.000000000 -0600
+++ kdebase.new/kcontrol/konqhtml/advancedTabOptions.ui 2011-12-03 17:24:25.987334444 -0600
@@ -51,17 +51,6 @@
</property>
<widget class="TQCheckBox">
<property name="name">
- <cstring>m_pNewTabsInBackground</cstring>
- </property>
- <property name="text">
- <string>O&amp;pen new tabs in the background</string>
- </property>
- <property name="whatsThis" stdset="0">
- <string>This will open a new tab in the background, instead of in the foreground.</string>
- </property>
- </widget>
- <widget class="TQCheckBox">
- <property name="name">
<cstring>m_pOpenAfterCurrentPage</cstring>
</property>
<property name="text">
diff -urN /dev/shm/kdebase/konqueror/konq_guiclients.cc /dev/shm/kdebase.new/konqueror/konq_guiclients.cc
--- kdebase/konqueror/konq_guiclients.cc 2011-08-11 00:25:53.000000000 -0500
+++ kdebase.new/konqueror/konq_guiclients.cc 2011-12-03 17:24:25.987334444 -0600
@@ -104,8 +104,8 @@
openInSameWindow.setAttribute( "name", "sameview" );
openInSameWindow.setAttribute( "group", "tabhandling" );
menu.appendChild( openInSameWindow );
-
- TQDomElement openInWindow = m_doc.createElement( "action" );
+
+ TQDomElement openInWindow = m_doc.createElement( "action" );
openInWindow.setAttribute( "name", "newview" );
openInWindow.setAttribute( "group", "tabhandling" );
menu.appendChild( openInWindow );
@@ -115,6 +115,11 @@
openInTabElement.setAttribute( "group", "tabhandling" );
menu.appendChild( openInTabElement );
+ TQDomElement openInTabFrontElement = m_doc.createElement( "action" );
+ openInTabFrontElement.setAttribute( "name", "openintabfront" );
+ openInTabFrontElement.setAttribute( "group", "tabhandling" );
+ menu.appendChild( openInTabFrontElement );
+
TQDomElement separatorElement = m_doc.createElement( "separator" );
separatorElement.setAttribute( "group", "tabhandling" );
menu.appendChild( separatorElement );
diff -urN /dev/shm/kdebase/konqueror/konq_mainwindow.cc /dev/shm/kdebase.new/konqueror/konq_mainwindow.cc
--- kdebase/konqueror/konq_mainwindow.cc 2011-08-20 02:14:06.000000000 -0500
+++ kdebase.new/konqueror/konq_mainwindow.cc 2011-12-03 17:24:25.994334609 -0600
@@ -2726,15 +2726,23 @@
openURL( 0L, popupItems.getFirst()->url() );
}
+void KonqMainWindow::slotPopupNewTabAtFront()
+{
+ KConfig *config = KGlobal::config();
+ KConfigGroupSaver cs( config, TQString::fromLatin1("FMSettings") );
+ bool openAfterCurrentPage = config->readBoolEntry( "OpenAfterCurrentPage", false );
+ popupNewTab(true, openAfterCurrentPage);
+}
+
void KonqMainWindow::slotPopupNewTab()
{
bool openAfterCurrentPage = KonqSettings::openAfterCurrentPage();
bool newTabsInFront = KonqSettings::newTabsInFront();
- if (KApplication::keyboardMouseState() & TQt::ShiftButton)
+ if (KApplication::keyboardMouseState() & ShiftButton)
newTabsInFront = !newTabsInFront;
- popupNewTab(newTabsInFront, openAfterCurrentPage);
+ popupNewTab(false, openAfterCurrentPage);
}
void KonqMainWindow::slotPopupNewTabRight()
@@ -2754,17 +2762,13 @@
KFileItemListIterator it ( popupItems );
KonqOpenURLRequest req;
req.newTab = true;
- req.newTabInFront = false;
+ req.newTabInFront = infront;
req.openAfterCurrentPage = openAfterCurrentPage;
req.args = popupUrlArgs;
for ( ; it.current(); ++it )
{
- if ( infront && it.atLast() )
- {
- req.newTabInFront = true;
- }
- openURL( 0L, (*it)->url(), TQString::null, req );
+ openURL( 0L, (*it)->url(), QString::null, req );
}
}
@@ -3926,7 +3930,7 @@
reloadShortcut.append(KKey(CTRL + Key_R));
m_paReload = new KAction( i18n( "&Reload" ), "reload", reloadShortcut, TQT_TQOBJECT(this), TQT_SLOT( slotReload() ), actionCollection(), "reload" );
m_paReloadAllTabs = new KAction( i18n( "&Reload All Tabs" ), "reload_all_tabs", SHIFT+Key_F5, TQT_TQOBJECT(this), TQT_SLOT( slotReloadAllTabs() ), actionCollection(), "reload_all_tabs" );
-
+
m_paReloadStop = new KAction( i18n( "&Reload/Stop" ), "reload", 0, TQT_TQOBJECT(this), TQT_SLOT( slotReloadStop() ), actionCollection(), "reload_stop" );
m_paUndo = KStdAction::undo( KonqUndoManager::self(), TQT_SLOT( undo() ), actionCollection(), "undo" );
@@ -4782,8 +4786,14 @@
else
tab_new_x = "tab_new_bg" ;
- actNewTab = new KAction( i18n( "Open in &New Tab" ), tab_new_x, 0, TQT_TQOBJECT(this), TQT_SLOT( slotPopupNewTab() ), konqyMenuClient->actionCollection(), "openintab" );
- actNewTab->setToolTip( i18n( "Open the document in a new tab" ) );
+ KAction *actNewTab = new KAction( i18n( "Open in &Background Tab" ), "tab_new_bg", 0, TQT_TQOBJECT(this), TQT_SLOT( slotPopupNewTab() ), actionCollection(), "openintab" );
+ actNewTab->setStatusText( i18n( "Open the document in a new background tab" ) );
+ KAction *actNewTabFront = new KAction( i18n( "Open in &New Tab" ), "tab_new", 0, TQT_TQOBJECT(this), TQT_SLOT( slotPopupNewTabAtFront() ), actionCollection(), "openintabfront" );
+ actNewTabFront->setStatusText( i18n( "Open the document in a new foreground tab" ) );
+ actNewTab = new KAction( i18n( "Open in &Background Tab" ), tab_new_x, 0, TQT_TQOBJECT(this), TQT_SLOT( slotPopupNewTab() ), konqyMenuClient->actionCollection(), "openintab" );
+ actNewTabFront = new KAction( i18n( "Open in &New Tab" ), tab_new_x, 0, TQT_TQOBJECT(this), TQT_SLOT( slotPopupNewTabAtFront() ), konqyMenuClient->actionCollection(), "openintabfront" );
+ actNewTab->setToolTip( i18n( "Open the document in a new background tab" ) );
+ actNewTabFront->setToolTip( i18n( "Open the document in a new foreground tab" ) );
doTabHandling = true;
}
diff -urN /dev/shm/kdebase/konqueror/konq_mainwindow.h /dev/shm/kdebase.new/konqueror/konq_mainwindow.h
--- kdebase/konqueror/konq_mainwindow.h 2011-03-12 00:58:18.000000000 -0600
+++ kdebase.new/konqueror/konq_mainwindow.h 2011-12-03 17:24:25.995334564 -0600
@@ -444,6 +444,7 @@
void slotPopupNewWindow();
void slotPopupThisWindow();
void slotPopupNewTab();
+ void slotPopupNewTabAtFront();
void slotPopupNewTabRight();
void slotPopupPasteTo();
void slotRemoveView();

@ -1,11 +0,0 @@
--- kdebase/konqueror/sidebar/trees/dirtree_module/dirtree_module.cpp.ORI 2011-12-10 15:07:43.171011925 +0100
+++ kdebase/konqueror/sidebar/trees/dirtree_module/dirtree_module.cpp 2011-12-10 15:07:48.000797355 +0100
@@ -400,7 +400,7 @@
kdDebug(1201) << this << " KonqSidebarDirTreeModule::slotNewItems " << entries.count() << endl;
Q_ASSERT(entries.count());
- KFileItem * firstItem = const_cast<KFileItemList&>(entries).first(); // qlist sucks for constness
+ KFileItem * firstItem = const_cast<KFileItemList&>(entries).last(); // qlist sucks for constness
// Find parent item - it's the same for all the items
KURL dir( firstItem->url().url(-1) );

@ -1,41 +0,0 @@
diff -urN kdebase/kpersonalizer/kospage.cpp kdebase.new2/kpersonalizer/kospage.cpp
--- kdebase/kpersonalizer/kospage.cpp 2011-08-21 02:08:16.000000000 -0500
+++ kdebase.new2/kpersonalizer/kospage.cpp 2011-12-22 09:27:39.000000000 -0600
@@ -142,7 +142,7 @@
ckcmdisplay->writeEntry("macStyle", false, true, true);
cglobal->setGroup("KDE");
- cglobal->writeEntry("SingleClick", true, true, true);
+ cglobal->writeEntry("SingleClick", false, true, true);
claunch->setGroup("FeedbackStyle");
claunch->writeEntry("BusyCursor", false);
@@ -351,8 +351,8 @@
textview_ospage->setText(i18n(
"<b>Window activation:</b> <i>Focus on click</i><br>"
"<b>Titlebar double-click:</b> <i>Shade window</i><br>"
- "<b>Mouse selection:</b> <i>Single click</i><br>"
- "<b>Application startup notification:</b> <i>busy cursor</i><br>"
+ "<b>Mouse selection:</b> <i>Double click</i><br>"
+ "<b>Application startup notification:</b> <i>none</i><br>"
"<b>Keyboard scheme:</b> <i>Trinity default</i><br>"
));
}
@@ -376,7 +376,7 @@
"<b>Window activation:</b> <i>Focus on click</i><br>"
"<b>Titlebar double-click:</b> <i>Maximize window</i><br>"
"<b>Mouse selection:</b> <i>Double click</i><br>"
- "<b>Application startup notification:</b> <i>busy cursor</i><br>"
+ "<b>Application startup notification:</b> <i>none</i><br>"
"<b>Keyboard scheme:</b> <i>Windows</i><br>"
));
}
@@ -400,7 +400,7 @@
b_MacMenuBar = ckcmdisplay->readBoolEntry("macStyle", false);
cglobal->setGroup("KDE");
- b_SingleClick = cglobal->readBoolEntry("SingleClick", true);
+ b_SingleClick = cglobal->readBoolEntry("SingleClick", false);
claunch->setGroup("FeedbackStyle");
b_BusyCursor = claunch->readBoolEntry("BusyCursor", false);

@ -1,62 +0,0 @@
diff -uNr kdebase-3.5.13.orig/kwin/clients/keramik/CMakeLists.txt kdebase-3.5.13/kwin/clients/keramik/CMakeLists.txt
--- kdebase-3.5.13.orig/kwin/clients/keramik/CMakeLists.txt 2012-03-14 12:56:02.567586872 +0200
+++ kdebase-3.5.13/kwin/clients/keramik/CMakeLists.txt 2012-03-14 12:50:07.000000000 +0200
@@ -42,22 +42,11 @@
##### tiles.h (header) ##########################
-set( pics
- pics/caption-large-left.png pics/caption-small-right.png
- pics/titlebar-center.png pics/titlebutton-square.png
- pics/border-left.png pics/caption-large-right.png
- pics/grabbar-center.png pics/titlebar-left.png
- pics/border-right.png pics/caption-small-center.png
- pics/grabbar-left.png pics/titlebar-right.png
- pics/caption-large-center.png pics/caption-small-left.png
- pics/grabbar-right.png pics/titlebutton-round.png
- pics/bottom-left.png pics/bottom-right.png pics/bottom-center.png
- pics/titlebutton-square-large.png pics/titlebutton-square-huge.png
- pics/titlebutton-round-large.png pics/titlebutton-round-huge.png )
+file(GLOB _pics "${CMAKE_CURRENT_SOURCE_DIR}/pics/*.png" )
add_custom_command( OUTPUT tiles.h
- COMMAND ${CMAKE_CURRENT_BINARY_DIR}/embedtool ${pics}
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/embedtool ${pics} )
+ COMMAND ${CMAKE_CURRENT_BINARY_DIR}/embedtool ${_pics}
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/embedtool ${_pics} )
tde_add_executable( embedtool
SOURCES embedtool.cpp
diff -Naur tdebase-master-orig/CMakeLists.txt tdebase-master/CMakeLists.txt
--- tdebase-master-orig/CMakeLists.txt 2012-03-28 09:07:30.000000000 +0200
+++ tdebase-master/CMakeLists.txt 2012-04-01 11:41:49.000000000 +0200
@@ -27,6 +27,7 @@
include( CheckLibraryExists )
include( CheckFunctionExists )
include( CheckStructHasMember )
+include( CheckTypeSize )
##### include our cmake modules #################
@@ -150,6 +151,8 @@
set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" )
set( CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined" )
+check_type_size( "long long" LONG_LONG )
+
##### kdebase directories #######################
diff -Naur tdebase-master-orig/config.h.cmake tdebase-master/config.h.cmake
--- tdebase-master-orig/config.h.cmake 2012-03-28 09:07:30.000000000 +0200
+++ tdebase-master/config.h.cmake 2012-04-01 11:45:21.000000000 +0200
@@ -3,6 +3,9 @@
// konsole
#cmakedefine HAVE_PROC_CWD 1
+// Defined if compiler supports long long type.
+#cmakedefine HAVE_LONG_LONG 1
+
// kdesktop, konsole, kcontrol, kicker
#cmakedefine HAVE_XRENDER 1

@ -1,10 +0,0 @@
--- kdebase/kioslave/media/mediamanager/CMakeLists.txt.ORI 2011-11-08 15:00:40.248406596 -0500
+++ kdebase/kioslave/media/mediamanager/CMakeLists.txt 2011-11-08 15:00:56.417996538 -0500
@@ -20,6 +20,7 @@
${TDE_INCLUDE_DIR}
${TQT_INCLUDE_DIRS}
${HAL_INCLUDE_DIRS}
+ ${DBUS_TQT_INCLUDE_DIRS}
)
link_directories(

@ -1,101 +0,0 @@
Index: pagerapplet.cpp
===================================================================
--- kdebase.ori/kicker/applets/minipager/pagerapplet.cpp (revision 1287351)
+++ kdebase/kicker/applets/minipager/pagerapplet.cpp (working copy)
@@ -442,6 +442,10 @@
{
int newDesk;
int desktops = KWin::numberOfDesktops();
+
+
+ if(cycleWindow()){
+
if (m_kwin->numberOfViewports(0).width() * m_kwin->numberOfViewports(0).height() > 1 )
desktops = m_kwin->numberOfViewports(0).width() * m_kwin->numberOfViewports(0).height();
if (e->delta() < 0)
@@ -452,8 +456,9 @@
{
newDesk = (desktops + m_curDesk - 2) % desktops + 1;
}
-
+
slotButtonSelected(newDesk);
+ }
}
void KMiniPager::drawButtons()
@@ -729,6 +734,7 @@
showMenu->insertItem(i18n("&Window Thumbnails"), WindowThumbnails);
showMenu->insertItem(i18n("&Window Icons"), WindowIcons);
+ showMenu->insertItem(i18n("&Cycle on Wheel"), Cycle);
showMenu->insertTitle(i18n("Text Label"));
showMenu->insertItem(i18n("Desktop N&umber"),
@@ -760,6 +766,7 @@
m_contextMenu->setItemChecked(WindowThumbnails, m_settings->preview());
m_contextMenu->setItemChecked(WindowIcons, m_settings->icons());
+ m_contextMenu->setItemChecked(Cycle, m_settings->cycle());
m_contextMenu->setItemEnabled(WindowIcons, m_settings->preview());
m_contextMenu->setItemEnabled(RenameDesktop,
m_settings->labelType() ==
@@ -812,11 +819,12 @@
m_settings->setPreview(!m_settings->preview());
TaskManager::the()->trackGeometry();
break;
-
+ case Cycle:
+ m_settings->setCycle(!m_settings->cycle());
+ break;
case WindowIcons:
m_settings->setIcons(!m_settings->icons());
break;
-
case PagerSettings::EnumBackgroundType::BgPlain + bgOffset:
m_settings->setBackgroundType(PagerSettings::EnumBackgroundType::BgPlain);
break;
Index: pagersettings.kcfg
===================================================================
--- kdebase.ori/kicker/applets/minipager/pagersettings.kcfg (revision 1287351)
+++ kdebase/kicker/applets/minipager/pagersettings.kcfg (working copy)
@@ -49,10 +49,15 @@
<label>Show desktop preview?</label>
<default>true</default>
</entry>
-
+
<entry name="Icons" type="Bool">
<label>Show window icons in previews?</label>
<default>true</default>
</entry>
+
+ <entry name="Cycle" type="Bool">
+ <label>Cycle through desktops with wheel?</label>
+ <default>true</default>
+ </entry>
</group>
</kcfg>
Index: pagerapplet.h
===================================================================
--- kdebase.ori/kicker/applets/minipager/pagerapplet.h (revision 1287351)
+++ kdebase/kicker/applets/minipager/pagerapplet.h (working copy)
@@ -64,15 +64,17 @@
void setActive( WId active ) { m_activeWindow = active; }
WId activeWindow() { return m_activeWindow; }
- enum ConfigOptions { LaunchExtPager = 96, WindowThumbnails,
+ enum ConfigOptions { LaunchExtPager = 96, WindowThumbnails, Cycle,
WindowIcons, ConfigureDesktops, RenameDesktop };
int labelType() const { return m_settings->labelType(); }
int bgType() const { return m_settings->backgroundType(); }
bool desktopPreview() const { return m_settings->preview(); }
+ bool cycleWindow() const { return m_settings->cycle(); }
bool windowIcons() const { return m_settings->icons(); }
+
Orientation orientation() const { return KPanelApplet::orientation(); }
Direction popupDirection() { return KPanelApplet::popupDirection(); }

@ -1,137 +0,0 @@
From 553923b25dc41e2c17ba9038eb225cd3bb9b1770 Mon Sep 17 00:00:00 2001
From: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: Fri, 21 Sep 2012 23:27:59 +0000
Subject: Forcibly prevent transient override redirect windows from showing up over the lock screen
This closes Bug 1079
---
diff --git a/kdesktop/lock/lockdlg.cc b/kdesktop/lock/lockdlg.cc
index 236bf8a..005ac99 100644
--- a/kdesktop/lock/lockdlg.cc
+++ b/kdesktop/lock/lockdlg.cc
@@ -573,9 +573,19 @@ void PasswordDlg::gplugActivity()
void PasswordDlg::gplugMsgBox( TQMessageBox::Icon type, const TQString &text )
{
- TQDialog dialog( this, 0, true, (WFlags)WX11BypassWM );
+ TQDialog dialog( this, 0, true, (trinity_desktop_lock_use_system_modal_dialogs?((WFlags)WStyle_StaysOnTop):((WFlags)WX11BypassWM)) );
+ if (trinity_desktop_lock_use_system_modal_dialogs) {
+ // Signal that we do not want any window controls to be shown at all
+ Atom kde_wm_system_modal_notification;
+ kde_wm_system_modal_notification = XInternAtom(tqt_xdisplay(), "_KDE_WM_MODAL_SYS_NOTIFICATION", False);
+ XChangeProperty(tqt_xdisplay(), dialog.winId(), kde_wm_system_modal_notification, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L);
+ }
+ dialog.setCaption(i18n("Authentication Subsystem Notice"));
TQFrame *winFrame = new TQFrame( &dialog );
- winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
+ if (trinity_desktop_lock_use_system_modal_dialogs)
+ winFrame->setFrameStyle( TQFrame::NoFrame );
+ else
+ winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
winFrame->setLineWidth( 2 );
TQVBoxLayout *vbox = new TQVBoxLayout( &dialog );
vbox->addWidget( winFrame );
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
index 2ce7507..5265bc6 100644
--- a/kdesktop/lock/lockprocess.cc
+++ b/kdesktop/lock/lockprocess.cc
@@ -960,6 +960,27 @@ void LockProcess::createSaverWindow()
setGeometry(0, 0, mRootWidth, mRootHeight);
+ // HACK
+ // Close all tooltips and notification windows
+ {
+ Window rootWindow = RootWindow(x11Display(), x11Screen());
+ Window parent;
+ Window* children = NULL;
+ unsigned int noOfChildren = 0;
+ XWindowAttributes childAttr;
+ Window childTransient;
+
+ if (XQueryTree(x11Display(), rootWindow, &rootWindow, &parent, &children, &noOfChildren) && noOfChildren>0 ) {
+ for (unsigned int i=0; i<noOfChildren; i++) {
+ if (XGetWindowAttributes(x11Display(), children[i], &childAttr) && XGetTransientForHint(x11Display(), children[i], &childTransient)) {
+ if ((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
+ XUnmapWindow(x11Display(), children[i]);
+ }
+ }
+ }
+ }
+ }
+
kdDebug(1204) << "Saver window Id: " << winId() << endl;
}
@@ -2162,9 +2183,19 @@ void LockProcess::unlockXF86()
void LockProcess::msgBox( TQMessageBox::Icon type, const TQString &txt )
{
- TQDialog box( 0, "messagebox", true, (WFlags)WX11BypassWM );
+ TQDialog box( 0, "messagebox", true, (trinity_desktop_lock_use_system_modal_dialogs?((WFlags)WStyle_StaysOnTop):((WFlags)WX11BypassWM)) );
+ if (trinity_desktop_lock_use_system_modal_dialogs) {
+ // Signal that we do not want any window controls to be shown at all
+ Atom kde_wm_system_modal_notification;
+ kde_wm_system_modal_notification = XInternAtom(tqt_xdisplay(), "_KDE_WM_MODAL_SYS_NOTIFICATION", False);
+ XChangeProperty(tqt_xdisplay(), box.winId(), kde_wm_system_modal_notification, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L);
+ }
+ box.setCaption(i18n("Authentication Subsystem Notice"));
TQFrame *winFrame = new TQFrame( &box );
- winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
+ if (trinity_desktop_lock_use_system_modal_dialogs)
+ winFrame->setFrameStyle( TQFrame::NoFrame );
+ else
+ winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
winFrame->setLineWidth( 2 );
TQLabel *label1 = new TQLabel( winFrame );
label1->setPixmap( TQMessageBox::standardIcon( type ) );
@@ -2264,8 +2295,10 @@ void LockProcess::windowAdded( WId w, bool managed )
int y = XDisplayHeight( tqt_xdisplay(), tqt_xscreen()) - attr_geom.height;
if( managed ) {
XSetWindowAttributes attr;
- attr.override_redirect = True;
- XChangeWindowAttributes( tqt_xdisplay(), w, CWOverrideRedirect, &attr );
+ if (!trinity_desktop_lock_use_system_modal_dialogs) {
+ attr.override_redirect = True;
+ XChangeWindowAttributes( tqt_xdisplay(), w, CWOverrideRedirect, &attr );
+ }
XReparentWindow( tqt_xdisplay(), w, tqt_xrootwin(), x, y );
XMapWindow( tqt_xdisplay(), w );
}
diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
index 56b4b5f..e74d9f9 100644
--- a/kdesktop/lock/main.cc
+++ b/kdesktop/lock/main.cc
@@ -76,6 +76,30 @@ bool MyApp::x11EventFilter( XEvent *ev )
emit activity();
}
}
+ else if (ev->type == MapNotify) {
+ // HACK
+ // Close all tooltips and notification windows
+ XMapEvent map_event = ev->xmap;
+ XWindowAttributes childAttr;
+ Window childTransient;
+ if (XGetWindowAttributes(map_event.display, map_event.window, &childAttr) && XGetTransientForHint(map_event.display, map_event.window, &childTransient)) {
+ if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
+ XUnmapWindow(map_event.display, map_event.window);
+ }
+ }
+ }
+ else if (ev->type == CreateNotify) {
+ // HACK
+ // Close all tooltips and notification windows
+ XCreateWindowEvent create_event = ev->xcreatewindow;
+ XWindowAttributes childAttr;
+ Window childTransient;
+ if (XGetWindowAttributes(create_event.display, create_event.window, &childAttr) && XGetTransientForHint(create_event.display, create_event.window, &childTransient)) {
+ if ((childAttr.override_redirect) && (childTransient)) {
+ XDestroyWindow(create_event.display, create_event.window);
+ }
+ }
+ }
return KApplication::x11EventFilter( ev );
}
--
cgit v0.9.0.2-39-g756e

@ -1,51 +0,0 @@
Index: krandrapp.cpp
===================================================================
--- kcontrol/randr/krandrapp.cpp (revision 1261452)
+++ kcontrol/randr/krandrapp.cpp (working copy)
@@ -28,13 +28,20 @@
KRandRApp::KRandRApp()
: m_tray(new KRandRSystemTray(0L, "RANDRTray"))
{
+ connect(&m_eventMergingTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(handleX11ConfigChangeEvent()));
m_tray->show();
}
+void KRandRApp::handleX11ConfigChangeEvent()
+{
+ m_eventMergingTimer.stop();
+ m_tray->configChanged();
+}
+
bool KRandRApp::x11EventFilter(XEvent* e)
{
if (e->type == m_tray->screenChangeNotifyEvent()) {
- m_tray->configChanged();
+ m_eventMergingTimer.start(1000, TRUE);
}
return KApplication::x11EventFilter( e );
}
Index: krandrapp.h
===================================================================
--- kcontrol/randr/krandrapp.h (revision 1261452)
+++ kcontrol/randr/krandrapp.h (working copy)
@@ -19,6 +19,7 @@
#ifndef KRANDRAPP_H
#define KRANDRAPP_H
+#include <tqtimer.h>
#include <kuniqueapplication.h>
class KRandRSystemTray;
@@ -32,8 +33,12 @@
virtual bool x11EventFilter(XEvent * e);
+private slots:
+ void handleX11ConfigChangeEvent();
+
private:
KRandRSystemTray* m_tray;
+ TQTimer m_eventMergingTimer;
};
#endif

@ -1,95 +0,0 @@
commit 8468d9bd5c66fe402acbc06f728b12ea996848de
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1327049889 -0600
Replicate LED status from virtual keyboards to physical keyboards
Fix keyboard attribute cloning
This commit closes Bug 561
diff --git a/tsak/main.cpp b/tsak/main.cpp
index df485a0..26aad00 100644
--- a/tsak/main.cpp
+++ b/tsak/main.cpp
@@ -126,22 +126,23 @@ static void copy_features(int devin, int devout)
for(i=0;i<EV_MAX;++i) {
if (bit_set(i, evtypes)) {
switch(i) {
- case EV_KEY: op = UI_SET_KEYBIT; break;
- case EV_REL: op = UI_SET_RELBIT; break;
- case EV_ABS: op = UI_SET_ABSBIT; break;
- case EV_MSC: op = UI_SET_MSCBIT; break;
- case EV_LED: op = UI_SET_LEDBIT; break;
- case EV_SND: op = UI_SET_SNDBIT; break;
- case EV_SW: op = UI_SET_SWBIT; break;
- default: op = -1;
+ case EV_KEY: op = UI_SET_KEYBIT; break;
+ case EV_REL: op = UI_SET_RELBIT; break;
+ case EV_ABS: op = UI_SET_ABSBIT; break;
+ case EV_MSC: op = UI_SET_MSCBIT; break;
+ case EV_LED: op = UI_SET_LEDBIT; break;
+ case EV_SND: op = UI_SET_SNDBIT; break;
+ case EV_SW: op = UI_SET_SWBIT; break;
+ default: op = -1;
+ }
}
- }
- if (op == -1) continue;
- ioctl(devout, UI_SET_EVBIT, i);
- memset(codes,0,sizeof(codes));
- if (ioctl(devin, EVIOCGBIT(i, sizeof(codes)), codes) < 0) return;
- for(code=0;code<KEY_MAX;code++) {
- if (bit_set(code, codes)) ioctl(devout, op, code);
+ if (op == -1) continue;
+ ioctl(devout, UI_SET_EVBIT, i);
+ memset(codes,0,sizeof(codes));
+ if (ioctl(devin, EVIOCGBIT(i, sizeof(codes)), codes) >= 0) {
+ for(code=0;code<KEY_MAX;code++) {
+ if (bit_set(code, codes)) ioctl(devout, op, code);
+ }
}
}
}
@@ -342,6 +343,7 @@ int main (int argc, char *argv[])
{
struct input_event ev[64];
struct input_event event;
+ struct input_event revev;
struct uinput_user_dev devinfo={0};
int devout[MAX_KEYBOARDS], rd, i, value, size = sizeof (struct input_event);
char name[256] = "Unknown";
@@ -416,9 +418,9 @@ int main (int argc, char *argv[])
fprintf(stderr, "Reading from keyboard: (%s)\n", name);
// Create filtered virtual output device
- devout[current_keyboard]=open("/dev/misc/uinput",O_WRONLY|O_NONBLOCK);
+ devout[current_keyboard]=open("/dev/misc/uinput",O_RDWR|O_NONBLOCK);
if (devout[current_keyboard]<0) {
- devout[current_keyboard]=open("/dev/uinput",O_WRONLY|O_NONBLOCK);
+ devout[current_keyboard]=open("/dev/uinput",O_RDWR|O_NONBLOCK);
if (devout[current_keyboard]<0) {
perror("open(\"/dev/misc/uinput\")");
}
@@ -483,6 +485,14 @@ int main (int argc, char *argv[])
fprintf(stderr, "Read failed.\n");
break;
}
+
+ // Replicate LED events from the virtual keyboard to the physical keyboard
+ int rrd = read(devout[current_keyboard], &revev, size);
+ if (rrd >= size) {
+ if (revev.type == EV_LED) {
+ write(keyboard_fds[current_keyboard], &revev, sizeof(revev));
+ }
+ }
value = ev[0].value;
@@ -506,7 +516,7 @@ int main (int argc, char *argv[])
}
}
- if (hide_event == false) {
+ if ((hide_event == false) && (ev[0].type != EV_LED) && (ev[1].type != EV_LED)) {
// Pass the event on...
event = ev[0];
write(devout[current_keyboard], &event, sizeof event);

@ -1,104 +0,0 @@
Index: kicker/applets/systemtray/systemtrayapplet.cpp
===================================================================
--- kicker/applets/systemtray/systemtrayapplet.cpp (revision 1262481)
+++ kicker/applets/systemtray/systemtrayapplet.cpp (working copy)
@@ -34,6 +34,7 @@
#include <tqstyle.h>
#include <tqgrid.h>
#include <tqpainter.h>
+#include <tqimage.h>
#include <dcopclient.h>
#include <kapplication.h>
Index: kicker/applets/clock/clock.h
===================================================================
--- kicker/applets/clock/clock.h (revision 1262481)
+++ kicker/applets/clock/clock.h (working copy)
@@ -41,7 +41,6 @@
#include <kickertip.h>
#include "settings.h"
-#include "kshadowengine.h"
class TQTimer;
class TQBoxLayout;
@@ -283,8 +282,6 @@
TQDate clockGetDate();
virtual void updateKickerTip(KickerTip::Data&);
-
- KTextShadowEngine *shadowEngine();
k_dcop:
void reconfigure();
@@ -344,7 +341,6 @@
TQStringList _remotezonelist;
KPopupMenu* menu;
ClockAppletToolTip m_tooltip;
- KTextShadowEngine *m_shadowEngine;
};
Index: kicker/applets/clock/clock.cpp
===================================================================
--- kicker/applets/clock/clock.cpp (revision 1262481)
+++ kicker/applets/clock/clock.cpp (working copy)
@@ -277,10 +277,7 @@
{
TQRect tr(0, 0, width(), height());
- if (!KickerSettings::transparent())
- p->drawText(tr, AlignCenter, _timeStr);
- else
- _applet->shadowEngine()->drawText(*p, tr, AlignCenter, _timeStr, size());
+ p->drawText(tr, AlignCenter, _timeStr);
}
//************************************************************
@@ -862,10 +859,7 @@
else
tr = TQRect(4, 2, width() - 8, height() - 4);
- if (!KickerSettings::transparent())
- p->drawText(tr, AlignCenter, _timeStr);
- else
- _applet->shadowEngine()->drawText(*p, tr, AlignCenter, _timeStr, size());
+ p->drawText(tr, AlignCenter, _timeStr);
alreadyDrawing = false;
}
@@ -899,8 +893,7 @@
_prefs(new Prefs(sharedConfig())),
zone(new Zone(config())),
menu(0),
- m_tooltip(this),
- m_shadowEngine(0)
+ m_tooltip(this)
{
DCOPObject::setObjId("ClockApplet");
_prefs->readConfig();
@@ -938,7 +931,6 @@
ClockApplet::~ClockApplet()
{
- delete m_shadowEngine;
//reverse for the moment
KGlobal::locale()->removeCatalogue("clockapplet");
KGlobal::locale()->removeCatalogue("timezones"); // For time zone translations
@@ -959,15 +951,7 @@
}
-KTextShadowEngine *ClockApplet::shadowEngine()
-{
- if (!m_shadowEngine)
- m_shadowEngine = new KTextShadowEngine();
- return m_shadowEngine;
-}
-
-
int ClockApplet::widthForHeight(int h) const
{
if (orientation() == Qt::Vertical)

@ -1,34 +0,0 @@
--- kdebase/kdm/kfrontend/kgapp.cpp.orig 2012-04-27 22:08:53.729331548 +0200
+++ kdebase/kdm/kfrontend/kgapp.cpp 2012-04-27 22:06:29.169359295 +0200
@@ -190,6 +190,7 @@
KProcess *tsak = 0;
KProcess *proc = 0;
KProcess *comp = 0;
+ KProcess *dcop = 0;
KProcess *kwin = 0;
trinity_desktop_lock_use_sak = _useSAK;
@@ -310,6 +311,13 @@
}
if (!_windowManager.isEmpty()) {
+ if (_windowManager == "kwin") {
+ // Special case
+ // Start DCOP...
+ dcop = new KProcess;
+ *dcop << TQCString( argv0, strrchr( argv0, '/' ) - argv0 + 2 ) + "dcopserver" << TQCString("--suicide");
+ dcop->start();
+ }
kwin = new KProcess;
*kwin << TQCString( argv0, strrchr( argv0, '/' ) - argv0 + 2 ) + _windowManager.ascii();
kwin->start();
@@ -453,7 +461,9 @@
if (kwin) {
kwin->closeStdin();
kwin->detach();
+ dcop->detach();
delete kwin;
+ delete dcop;
}
delete proc;
UnsecureDisplay( dpy );

@ -1,118 +0,0 @@
--- kdebase/startkde.ORI 2011-12-12 20:09:21.984162840 +0100
+++ kdebase/startkde 2011-12-12 20:08:27.922834925 +0100
@@ -4,6 +4,7 @@
#
echo "[startkde] Starting startkde." 1>&2
+export KDEDIR="/opt/trinity"
# When the X server dies we get a HUP signal from xinit. We must ignore it
# because we still need to do some cleanup.
@@ -74,39 +75,10 @@
echo "[startkde] KDEHOME is preset to $KDEHOME." 1>&2
export KDEHOME=$KDEHOME
else
- # $KDEHOME is NOT already preset in the environment. Try to help.
- # This might be overkill but does provide flexibility.
+ # $KDEHOME is NOT already preset in the environment.
+ # We always use ~/.trinity as default.
echo "[startkde] KDEHOME is not set." 1>&2
- if [ -d $HOME/.trinity ]; then
- # OK, this one is obvious.
- export KDEHOME=$HOME/.trinity
- elif [ -d $HOME/.trinity ]; then
- # Looks like the user had an old version of Trinity installed at last login
- echo "[startkde] Migrating old ~/.trinity directory to new ~/.trinity name." 1>&2
- mv $HOME/.trinity $HOME/.trinity
- export KDEHOME=$HOME/.trinity
- elif [ -f /usr/bin/kde4-config ]; then
- # Looks like KDE4 is installed.
- if [ -d $HOME/.kde ] && [ ! -d $HOME/.trinity ]; then
- # Presume $HOME/.kde is being used for KDE4 as it already exists.
- export KDEHOME=$HOME/.trinity
- else
- # Presume $HOME/.kde is being used for KDE4 to be on the safe side.
- export KDEHOME=$HOME/.trinity
- fi
- elif [ -f /opt/trinity/bin/kde-config ]; then
- # Looks like KDE3 or Trinity is installed and playing second fiddle to KDE4.
- export KDEHOME=$HOME/.trinity
- elif [ -f /opt/trinity/bin/kde-config ]; then
- # Looks like KDE3 or Trinity is installed and playing second fiddle to KDE4.
- export KDEHOME=$HOME/.trinity
- elif [ -f /usr/bin/kde-config ] && [ -d $HOME/.kde ]; then
- # Looks like KDE3 or Trinity is installed and not playing second fiddle to KDE4.
- export KDEHOME=$HOME/.kde
- else
- # Resort to this and hope for the best!
- export KDEHOME=$HOME/.trinity
- fi
+ export KDEHOME=$HOME/.trinity
echo "[startkde] Set KDEHOME to $KDEHOME." 1>&2
fi
@@ -117,51 +89,25 @@
fi
# Modify the following environment variables only as necessary.
-if [ -d /opt/trinity/games ]; then
- export PATH=/opt/trinity/games:$PATH
-fi
-if [ -d /opt/trinity/bin ]; then
- export PATH=/opt/trinity/bin:$PATH
-fi
-if [ -d /opt/trinity/games ]; then
- export PATH=/opt/trinity/games:$PATH
-fi
-if [ -d /opt/trinity/bin ]; then
- export PATH=/opt/trinity/bin:$PATH
-fi
-if [ -d /opt/trinity/share ]; then
- export XDG_DATA_DIRS=$XDG_DATA_DIRS:/opt/trinity/share/:/usr/share/
-fi
-if [ -d /opt/trinity/share ]; then
- export XDG_DATA_DIRS=$XDG_DATA_DIRS:/opt/trinity/share/:/usr/share/
+if [ -d ${KDEDIR}/games ]; then
+ export PATH=${KDEDIR}/games:$PATH
fi
-if [ -d /opt/trinity/etc/xdg ]; then
- export XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS:/opt/trinity/etc/xdg/:/etc/xdg/
+if [ -d ${KDEDIR}/bin ]; then
+ export PATH=${KDEDIR}/bin:$PATH
fi
-if [ -d /opt/trinity/etc/xdg ]; then
- export XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS:/opt/trinity/etc/xdg/:/etc/xdg/
+if [ -d ${KDEDIR}/share ]; then
+ export XDG_DATA_DIRS=$XDG_DATA_DIRS:${KDEDIR}/share/:/usr/share/
fi
-if [ -d /opt/trinity/share/man ]; then
- export MANPATH=/opt/trinity/share/man:$MANPATH
+if [ -d ${KDEDIR}/etc/xdg ]; then
+ export XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS:${KDEDIR}/etc/xdg/:/etc/xdg/
fi
-if [ -d /opt/trinity/share/man ]; then
- export MANPATH=/opt/trinity/share/man:$MANPATH
-fi
-if [ -d /opt/trinity ]; then
- if [ -n "$KDEDIRS" ]; then
- export KDEDIRS=$KDEDIRS:/opt/trinity/:/usr/
- else
- export KDEDIRS=/opt/trinity/:/usr/
- fi
-fi
-if [ -d /opt/trinity ]; then
- if [ -n "$KDEDIRS" ]; then
- export KDEDIRS=$KDEDIRS:/opt/trinity/:/usr/
- else
- export KDEDIRS=/opt/trinity/:/usr/
- fi
+if [ -d ${KDEDIR}/share/man ]; then
+ export MANPATH=${KDEDIR}/share/man:$MANPATH
fi
+# The TDE directory must be first in $KDEDIRS
+export KDEDIRS=${KDEDIR}/:$KDEDIRS:/usr/
+
test -n "$KDEHOME" && kdehome=`echo "$KDEHOME" | sed "s,^~/,$HOME/,"`
echo "[startkde] kdehome: $kdehome" 1>&2

@ -1,19 +0,0 @@
--- tdebase/startkde.ORI 2012-07-29 18:23:59.885538470 +0200
+++ tdebase/startkde 2012-07-29 18:26:19.022618054 +0200
@@ -152,6 +152,16 @@
fi
fi
+# Default Start Button icon for TDE
+if [ ! -e $kdehome/share/config/kickerrc ]; then
+ if [ -r "%{tde_starticon}" ]; then
+ cat <<EOF >$kdehome/share/config/kickerrc
+[KMenu]
+CustomIcon=%{tde_starticon}
+EOF
+ fi
+fi
+
# XCursor mouse theme needs to be applied here to work even for kded or ksmserver.
if test -n "$kcminputrc_mouse_cursortheme" -o -n "$kcminputrc_mouse_cursorsize" ; then
kapplymousetheme "$kcminputrc_mouse_cursortheme" "$kcminputrc_mouse_cursorsize"

@ -1,13 +0,0 @@
--- kdebase/startkde.ORI 2011-11-01 22:17:52.000000000 +0100
+++ kdebase/startkde 2011-11-01 22:18:14.000000000 +0100
@@ -413,7 +413,9 @@
fi
if [ -n $KGTK_PRELOAD ]; then
- if [ -e /usr/lib/libnspr4.so ]; then
+ if [ -e /usr/lib64/libnspr4.so ]; then
+ KGTK_NSPR_PRELOAD="/usr/lib64/libnspr4.so:"
+ elif [ -e /usr/lib/libnspr4.so ]; then
KGTK_NSPR_PRELOAD="/usr/lib/libnspr4.so:"
fi
export LD_PRELOAD=$KGTK_PRELOAD:$KGTK_NSPR_PRELOAD$LD_PRELOAD

File diff suppressed because it is too large Load Diff

@ -1,641 +0,0 @@
commit 5f413b26ebaab8a6478427e4125bda628058ff85
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1327015159 -0600
Add keyboard hotplug (add/remove) support to tsak
This closes Bug 587
Fix warning in kompmgr
diff --git a/tsak/CMakeLists.txt b/tsak/CMakeLists.txt
index 6aa5b49..4490636 100644
--- a/tsak/CMakeLists.txt
+++ b/tsak/CMakeLists.txt
@@ -23,5 +23,6 @@ link_directories(
tde_add_executable( tsak
SOURCES main.cpp
+ LINK udev
DESTINATION ${BIN_INSTALL_DIR}
)
diff --git a/tsak/main.cpp b/tsak/main.cpp
index 050d6c0..df485a0 100644
--- a/tsak/main.cpp
+++ b/tsak/main.cpp
@@ -1,8 +1,8 @@
/*
Copyright 2010 Adam Marchetti
-Copyright 2011 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Copyright 2011-2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
-This file is part of tsak.
+This file is part of tsak, the TDE Secure Attention Key daemon
tsak is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as
@@ -35,9 +35,15 @@ License along with tsak. If not, see http://www.gnu.org/licenses/.
#include <sys/time.h>
#include <termios.h>
#include <signal.h>
+#include <libudev.h>
+#include <libgen.h>
#define FIFO_DIR "/tmp/ksocket-global"
#define FIFO_FILE_OUT "/tmp/ksocket-global/tsak"
+#define FIFO_LOCKFILE_OUT "/tmp/ksocket-global/tsak.lock"
+
+#define MAX_KEYBOARDS 64
+#define MAX_INPUT_NODE 128
#define TestBit(bit, array) (array[(bit) / 8] & (1 << ((bit) % 8)))
@@ -46,9 +52,18 @@ typedef unsigned char byte;
bool mPipeOpen_out = false;
int mPipe_fd_out = -1;
+int mPipe_lockfd_out = -1;
+
+char filename[32];
+char key_bitmask[(KEY_MAX + 7) / 8];
+
struct sigaction usr_action;
sigset_t block_mask;
+int keyboard_fd_num;
+int keyboard_fds[MAX_KEYBOARDS];
+int child_pids[MAX_KEYBOARDS];
+
const char *keycode[256] =
{
"", "<esc>", "1", "2", "3", "4", "5", "6", "7", "8",
@@ -79,6 +94,26 @@ int bit_set(size_t i, const byte* a)
return a[i/CHAR_BIT] & (1 << i%CHAR_BIT);
}
+// --------------------------------------------------------------------------------------
+// Useful function from Stack Overflow
+// http://stackoverflow.com/questions/874134/find-if-string-endswith-another-string-in-c
+// --------------------------------------------------------------------------------------
+/* returns 1 iff str ends with suffix */
+int str_ends_with(const char * str, const char * suffix) {
+
+ if( str == NULL || suffix == NULL )
+ return 0;
+
+ size_t str_len = strlen(str);
+ size_t suffix_len = strlen(suffix);
+
+ if(suffix_len > str_len)
+ return 0;
+
+ return 0 == strncmp( str + str_len - suffix_len, suffix, suffix_len );
+}
+// --------------------------------------------------------------------------------------
+
/* Assign features (supported axes and keys) of the physical input device (devin)
* to the virtual input device (devout) */
static void copy_features(int devin, int devout)
@@ -111,26 +146,40 @@ static void copy_features(int devin, int devout)
}
}
-int find_keyboard() {
+int find_keyboards() {
int i, j;
int fd;
- char filename[32];
- char key_bitmask[(KEY_MAX + 7) / 8];
+ char name[256] = "Unknown";
+
+ keyboard_fd_num = 0;
+ for (i=0; i<MAX_KEYBOARDS; i++) {
+ keyboard_fds[i] = 0;
+ }
- for (i=0; i<32; i++) {
+ for (i=0; i<MAX_INPUT_NODE; i++) {
snprintf(filename,sizeof(filename), "/dev/input/event%d", i);
-
+
fd = open(filename, O_RDWR|O_SYNC);
ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(key_bitmask)), key_bitmask);
-
- /* We assume that anything that has an alphabetic key in the
- QWERTYUIOP range in it is the main keyboard. */
- for (j = KEY_Q; j <= KEY_P; j++) {
- if (TestBit(j, key_bitmask))
- return fd;
+
+ // Ensure that we do not detect our own tsak faked keyboards
+ ioctl (fd, EVIOCGNAME (sizeof (name)), name);
+ if (str_ends_with(name, "+tsak") == 0) {
+ /* We assume that anything that has an alphabetic key in the
+ QWERTYUIOP range in it is the main keyboard. */
+ for (j = KEY_Q; j <= KEY_P; j++) {
+ if (TestBit(j, key_bitmask)) {
+ keyboard_fds[keyboard_fd_num] = fd;
+ }
+ }
+ }
+
+ if (keyboard_fds[keyboard_fd_num] == 0) {
+ close (fd);
+ }
+ else {
+ keyboard_fd_num++;
}
-
- close (fd);
}
return 0;
}
@@ -144,6 +193,12 @@ void tearDownPipe()
}
}
+void tearDownLockingPipe()
+{
+ close(mPipe_lockfd_out);
+ unlink(FIFO_LOCKFILE_OUT);
+}
+
bool setFileLock(int fd, bool close_on_failure)
{
struct flock fl;
@@ -154,8 +209,8 @@ bool setFileLock(int fd, bool close_on_failure)
fl.l_len = 1;
// Set the exclusive file lock
- if (fcntl(mPipe_fd_out, F_SETLK, &fl) == -1) {
- close(mPipe_fd_out);
+ if (fcntl(fd, F_SETLK, &fl) == -1) {
+ close(fd);
return false;
}
@@ -171,7 +226,7 @@ bool checkFileLock()
fl.l_whence = SEEK_SET;
fl.l_len = 0;
- int fd = open(FIFO_FILE_OUT, O_RDWR | O_NONBLOCK);
+ int fd = open(FIFO_LOCKFILE_OUT, O_RDWR | O_NONBLOCK);
fcntl(fd, F_GETLK, &fl); /* Overwrites lock structure with preventors. */
if (fd > -1) {
@@ -202,6 +257,71 @@ bool setupPipe()
return setFileLock(mPipe_fd_out, true);
}
+bool setupLockingPipe()
+{
+ /* Create the FIFOs if they do not exist */
+ umask(0);
+ mkdir(FIFO_DIR,0644);
+
+ mknod(FIFO_LOCKFILE_OUT, S_IFIFO|0600, 0);
+ chmod(FIFO_LOCKFILE_OUT, 0600);
+
+ mPipe_lockfd_out = open(FIFO_LOCKFILE_OUT, O_RDWR | O_NONBLOCK);
+ if (mPipe_lockfd_out > -1) {
+ // Set the exclusive file lock
+ return setFileLock(mPipe_lockfd_out, true);
+ }
+
+ return false;
+}
+
+void broadcast_sak()
+{
+ // Let anyone listening to our interface know that an SAK keypress was received
+ // I highly doubt there are more than 255 VTs active at once...
+ int i;
+ for (i=0;i<255;i++) {
+ write(mPipe_fd_out, "SAK\n\r", 6);
+ }
+}
+
+void restart_tsak()
+{
+ int i;
+
+ fprintf(stderr, "Forcibly terminating...\n");
+
+ // Close down all child processes
+ for (i=0; i<MAX_KEYBOARDS; i++) {
+ if (child_pids[i] != 0) {
+ kill(child_pids[i], SIGKILL);
+ }
+ }
+
+ // Wait for process termination
+ sleep(1);
+
+ // Release all exclusive keyboard locks
+ for (int current_keyboard=0;current_keyboard<keyboard_fd_num;current_keyboard++) {
+ if(ioctl(keyboard_fds[current_keyboard], EVIOCGRAB, 0) < 0) {
+ fprintf(stderr, "Failed to release exclusive input device lock");
+ }
+ close(keyboard_fds[current_keyboard]);
+ }
+
+#if 1
+ // Restart now
+ // Note that the execl function never returns
+ char me[2048];
+ int chars = readlink("/proc/self/exe", me, sizeof(me));
+ me[chars] = 0;
+ me[2047] = 0;
+ execl(me, basename(me), (char*)NULL);
+#else
+ _exit(0);
+#endif
+}
+
class PipeHandler
{
public:
@@ -215,7 +335,7 @@ PipeHandler::PipeHandler()
PipeHandler::~PipeHandler()
{
- tearDownPipe();
+ tearDownLockingPipe();
}
int main (int argc, char *argv[])
@@ -223,13 +343,19 @@ int main (int argc, char *argv[])
struct input_event ev[64];
struct input_event event;
struct uinput_user_dev devinfo={0};
- int fd, devout, rd, value, size = sizeof (struct input_event);
+ int devout[MAX_KEYBOARDS], rd, i, value, size = sizeof (struct input_event);
char name[256] = "Unknown";
bool ctrl_down = false;
bool alt_down = false;
bool hide_event = false;
bool established = false;
bool testrun = false;
+ int current_keyboard;
+ bool can_proceed;
+
+ for (i=0; i<MAX_KEYBOARDS; i++) {
+ child_pids[i] = 0;
+ }
if (argc == 2) {
if (strcmp(argv[1], "checkactive") == 0) {
@@ -239,7 +365,11 @@ int main (int argc, char *argv[])
// Check for existing file locks
if (!checkFileLock()) {
- fprintf(stderr, "Another instance of this program is already running\n");
+ fprintf(stderr, "Another instance of this program is already running [1]\n");
+ return 8;
+ }
+ if (!setupLockingPipe()) {
+ fprintf(stderr, "Another instance of this program is already running [2]\n");
return 8;
}
@@ -256,125 +386,227 @@ int main (int argc, char *argv[])
return 5;
}
- // Open Device
- fd = find_keyboard();
- if (fd == -1) {
- printf ("Could not find your keyboard!\n");
+ // Find keyboards
+ find_keyboards();
+ if (keyboard_fd_num == 0) {
+ printf ("Could not find any usable keyboard(s)!\n");
+ // Make sure everyone knows we physically can't detect a SAK
+ // Before we do this we broadcast one so that active dialogs are updated appropriately
+ // Also, we keep watching for a keyboard to be added via a forked child process...
+ broadcast_sak();
if (established)
sleep(1);
- else
- return 4;
+ else {
+ int i=fork();
+ if (i<0) return 12; // fork failed
+ if (i>0) {
+ return 4;
+ }
+ sleep(1);
+ restart_tsak();
+ }
}
else {
- // Print Device Name
- ioctl (fd, EVIOCGNAME (sizeof (name)), name);
- fprintf(stderr, "Reading From : (%s)\n", name);
-
- // Create filtered virtual output device
- devout=open("/dev/misc/uinput",O_WRONLY|O_NONBLOCK);
- if (devout<0) {
- perror("open(\"/dev/misc/uinput\")");
- devout=open("/dev/uinput",O_WRONLY|O_NONBLOCK);
- }
- if (devout<0) {
- fprintf(stderr,"Unable to open /dev/uinput or /dev/misc/uinput (char device 10:223).\nPossible causes:\n 1) Device node does not exist\n 2) Kernel not compiled with evdev [INPUT_EVDEV] and uinput [INPUT_UINPUT] user level driver support\n 3) Permission denied.\n");
- perror("open(\"/dev/uinput\")");
- if (established)
- sleep(1);
- else
- return 3;
- }
- else {
- if(ioctl(fd, EVIOCGRAB, 2) < 0) {
- close(fd);
- fprintf(stderr, "Failed to grab exclusive input device lock");
+ fprintf(stderr, "Found %d keyboard(s)\n", keyboard_fd_num);
+
+ can_proceed = true;
+ for (current_keyboard=0;current_keyboard<keyboard_fd_num;current_keyboard++) {
+ // Print Device Name
+ ioctl (keyboard_fds[current_keyboard], EVIOCGNAME (sizeof (name)), name);
+ fprintf(stderr, "Reading from keyboard: (%s)\n", name);
+
+ // Create filtered virtual output device
+ devout[current_keyboard]=open("/dev/misc/uinput",O_WRONLY|O_NONBLOCK);
+ if (devout[current_keyboard]<0) {
+ devout[current_keyboard]=open("/dev/uinput",O_WRONLY|O_NONBLOCK);
+ if (devout[current_keyboard]<0) {
+ perror("open(\"/dev/misc/uinput\")");
+ }
+ }
+ if (devout[current_keyboard]<0) {
+ can_proceed = false;
+ fprintf(stderr, "Unable to open /dev/uinput or /dev/misc/uinput (char device 10:223).\nPossible causes:\n 1) Device node does not exist\n 2) Kernel not compiled with evdev [INPUT_EVDEV] and uinput [INPUT_UINPUT] user level driver support\n 3) Permission denied.\n");
+ perror("open(\"/dev/uinput\")");
if (established)
sleep(1);
else
- return 1;
+ return 3;
}
- else {
- ioctl(fd, EVIOCGNAME(UINPUT_MAX_NAME_SIZE), devinfo.name);
- strncat(devinfo.name, "+tsak", UINPUT_MAX_NAME_SIZE-1);
- fprintf(stderr, "%s\n", devinfo.name);
- ioctl(fd, EVIOCGID, &devinfo.id);
-
- copy_features(fd, devout);
- write(devout,&devinfo,sizeof(devinfo));
- if (ioctl(devout,UI_DEV_CREATE)<0) {
- fprintf(stderr,"Unable to create input device with UI_DEV_CREATE\n");
+ }
+
+ if (can_proceed == true) {
+ for (current_keyboard=0;current_keyboard<keyboard_fd_num;current_keyboard++) {
+ if(ioctl(keyboard_fds[current_keyboard], EVIOCGRAB, 2) < 0) {
+ close(keyboard_fds[current_keyboard]);
+ fprintf(stderr, "Failed to grab exclusive input device lock");
if (established)
sleep(1);
else
- return 2;
+ return 1;
}
else {
- fprintf(stderr,"Device created.\n");
-
- if (established == false) {
- tearDownPipe();
- int i=fork();
- if (i<0) return 9; // fork failed
- if (i>0) {
- // close parent process
- close(mPipe_fd_out);
- return 0;
- }
- setupPipe();
+ ioctl(keyboard_fds[current_keyboard], EVIOCGNAME(UINPUT_MAX_NAME_SIZE), devinfo.name);
+ strncat(devinfo.name, "+tsak", UINPUT_MAX_NAME_SIZE-1);
+ fprintf(stderr, "%s\n", devinfo.name);
+ ioctl(keyboard_fds[current_keyboard], EVIOCGID, &devinfo.id);
+
+ copy_features(keyboard_fds[current_keyboard], devout[current_keyboard]);
+ write(devout[current_keyboard],&devinfo,sizeof(devinfo));
+ if (ioctl(devout[current_keyboard],UI_DEV_CREATE)<0) {
+ fprintf(stderr, "Unable to create input device with UI_DEV_CREATE\n");
+ if (established)
+ sleep(1);
+ else
+ return 2;
}
-
- established = true;
-
- if (testrun == true) {
- return 0;
- }
-
- while (1) {
- if ((rd = read (fd, ev, size * 2)) < size) {
- fprintf(stderr,"Read failed.\n");
- break;
- }
-
- value = ev[0].value;
-
- if (value != ' ' && ev[1].value == 0 && ev[1].type == 1){ // Read the key release event
- if (keycode[(ev[1].code)]) {
- if (strcmp(keycode[(ev[1].code)], "<control>") == 0) ctrl_down = false;
- if (strcmp(keycode[(ev[1].code)], "<alt>") == 0) alt_down = false;
+ else {
+ fprintf(stderr, "Device created.\n");
+
+ if (established == false) {
+ int i=fork();
+ if (i<0) return 9; // fork failed
+ if (i>0) {
+ child_pids[current_keyboard] = i;
+ continue;
}
+ setupLockingPipe();
}
- if (value != ' ' && ev[1].value == 1 && ev[1].type == 1){ // Read the key press event
- if (keycode[(ev[1].code)]) {
- if (strcmp(keycode[(ev[1].code)], "<control>") == 0) ctrl_down = true;
- if (strcmp(keycode[(ev[1].code)], "<alt>") == 0) alt_down = true;
- }
+
+ established = true;
+
+ if (testrun == true) {
+ return 0;
}
- hide_event = false;
- if (keycode[(ev[1].code)]) {
- if (alt_down && ctrl_down && (strcmp(keycode[(ev[1].code)], "<del>") == 0)) {
- hide_event = true;
+ while (1) {
+ if ((rd = read (keyboard_fds[current_keyboard], ev, size * 2)) < size) {
+ fprintf(stderr, "Read failed.\n");
+ break;
+ }
+
+ value = ev[0].value;
+
+ if (value != ' ' && ev[1].value == 0 && ev[1].type == 1){ // Read the key release event
+ if (keycode[(ev[1].code)]) {
+ if (strcmp(keycode[(ev[1].code)], "<control>") == 0) ctrl_down = false;
+ if (strcmp(keycode[(ev[1].code)], "<alt>") == 0) alt_down = false;
+ }
+ }
+ if (value != ' ' && ev[1].value == 1 && ev[1].type == 1){ // Read the key press event
+ if (keycode[(ev[1].code)]) {
+ if (strcmp(keycode[(ev[1].code)], "<control>") == 0) ctrl_down = true;
+ if (strcmp(keycode[(ev[1].code)], "<alt>") == 0) alt_down = true;
+ }
+ }
+
+ hide_event = false;
+ if (keycode[(ev[1].code)]) {
+ if (alt_down && ctrl_down && (strcmp(keycode[(ev[1].code)], "<del>") == 0)) {
+ hide_event = true;
+ }
+ }
+
+ if (hide_event == false) {
+ // Pass the event on...
+ event = ev[0];
+ write(devout[current_keyboard], &event, sizeof event);
+ event = ev[1];
+ write(devout[current_keyboard], &event, sizeof event);
+ }
+ if (hide_event == true) {
+ // Let anyone listening to our interface know that an SAK keypress was received
+ broadcast_sak();
}
}
+ }
+ }
+ }
+
+ // fork udev monitor process
+ int i=fork();
+ if (i<0) return 10; // fork failed
+ if (i>0) {
+ // Terminate parent
+ return 0;
+ }
+
+ // Prevent multiple process instances from starting
+ setupLockingPipe();
+
+ // Wait a little bit so that udev hotplug can stabilize before we start monitoring
+ sleep(1);
+
+ fprintf(stderr, "Hotplug monitoring process started\n");
+
+ // Monitor for hotplugged keyboards
+ int j;
+ int hotplug_fd;
+ bool is_new_keyboard;
+ struct udev *udev;
+ struct udev_device *dev;
+ struct udev_monitor *mon;
+
+ // Create the udev object
+ udev = udev_new();
+ if (!udev) {
+ fprintf(stderr, "Cannot connect to udev interface\n");
+ return 11;
+ }
+
+ // Set up a udev monitor to monitor input devices
+ mon = udev_monitor_new_from_netlink(udev, "udev");
+ udev_monitor_filter_add_match_subsystem_devtype(mon, "input", NULL);
+ udev_monitor_enable_receiving(mon);
+
+ while (1) {
+ // Watch for input from the monitoring process
+ dev = udev_monitor_receive_device(mon);
+ if (dev) {
+ // If a keyboard was removed we need to restart...
+ if (strcmp(udev_device_get_action(dev), "remove") == 0) {
+ udev_device_unref(dev);
+ udev_unref(udev);
+ restart_tsak();
+ }
+
+ is_new_keyboard = false;
+ snprintf(filename,sizeof(filename), "%s", udev_device_get_devnode(dev));
+ udev_device_unref(dev);
+
+ // Print name of keyboard
+ hotplug_fd = open(filename, O_RDWR|O_SYNC);
+ ioctl(hotplug_fd, EVIOCGBIT(EV_KEY, sizeof(key_bitmask)), key_bitmask);
- if (hide_event == false) {
- // Pass the event on...
- event = ev[0];
- write(devout, &event, sizeof event);
- event = ev[1];
- write(devout, &event, sizeof event);
- }
- if (hide_event == true) {
- // Let anyone listening to our interface know that an SAK keypress was received
- // I highly doubt there are more than 255 VTs active at once...
- int i;
- for (i=0;i<255;i++) {
- write(mPipe_fd_out, "SAK\n\r", 6);
- }
+ /* We assume that anything that has an alphabetic key in the
+ QWERTYUIOP range in it is the main keyboard. */
+ for (j = KEY_Q; j <= KEY_P; j++) {
+ if (TestBit(j, key_bitmask)) {
+ is_new_keyboard = true;
}
}
+ ioctl (hotplug_fd, EVIOCGNAME (sizeof (name)), name);
+ close(hotplug_fd);
+
+ // Ensure that we do not detect our own tsak faked keyboards
+ if (str_ends_with(name, "+tsak") == 1) {
+ is_new_keyboard = false;
+ }
+
+ // If a keyboard was added we need to restart...
+ if (is_new_keyboard == true) {
+ fprintf(stderr, "Hotplugged new keyboard: (%s)\n", name);
+ udev_unref(udev);
+ restart_tsak();
+ }
+ }
+ else {
+ fprintf(stderr, "No Device from receive_device(). An error occured.\n");
}
}
+
+ udev_unref(udev);
+
+ fprintf(stderr, "Hotplug monitoring process terminated\n");
}
}
}
diff --git a/twin/kompmgr/kompmgr.c b/twin/kompmgr/kompmgr.c
index 5daf8c2..8216676 100644
--- a/kwin/kompmgr/kompmgr.c
+++ b/kwin/kompmgr/kompmgr.c
@@ -60,6 +60,7 @@ check baghira.sf.net for more infos
#include <signal.h>
#include <time.h>
#include <unistd.h>
+#include <libgen.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xatom.h>
@@ -397,7 +398,7 @@ void delete_pid_file()
int chars = readlink("/proc/self/exe", me, sizeof(me));
me[chars] = 0;
me[2047] = 0;
- execl(me, NULL);
+ execl(me, basename(me), (char*)NULL);
}
#endif
}

@ -1,49 +0,0 @@
commit 03e19305ec704b8749bb7564e16ed8d78a80d516
Author: Darrell Anderson <humanreadable@yahoo.com>
Date: 1340675585 -0500
Update default konqueror maximum image preview size to 10MB.
diff --git a/kcontrol/konq/previews.cpp b/kcontrol/konq/previews.cpp
index cbe4d40..53c16f1 100644
--- a/kcontrol/konq/previews.cpp
+++ b/kcontrol/konq/previews.cpp
@@ -67,14 +67,14 @@ KPreviewOptions::KPreviewOptions( TQWidget *parent, const char */*name*/ )
setQuickHelp( i18n("<h1>Preview Options</h1> Here you can modify the behavior "
"of Konqueror when it shows the files in a folder."
- "<h2>The list of protocols:</h2> check the protocols over which "
+ "<h2>The list of protocols:</h2> Check the protocols over which "
"previews should be shown; uncheck those over which they should not. "
"For instance, you might want to show previews over SMB if the local "
"network is fast enough, but you might disable it for FTP if you often "
"visit very slow FTP sites with large images."
- "<h2>Maximum File Size:</h2> select the maximum file size for which "
- "previews should be generated. For instance, if set to 1 MB (the default), "
- "no preview will be generated for files bigger than 1 MB, for speed reasons."));
+ "<h2>Maximum File Size:</h2> Select the maximum file size for which "
+ "previews should be generated. For instance, if set to 10 MB (the default), "
+ "no preview will be generated for files bigger than 10 MB, for speed reasons."));
// Listview containing checkboxes for all protocols that support listing
KListView *listView = new KListView( this, "listView" );
@@ -152,8 +152,8 @@ KPreviewOptions::KPreviewOptions( TQWidget *parent, const char */*name*/ )
load();
}
-// Default: 1 MB
-#define DEFAULT_MAXSIZE (1024*1024)
+// Default: 10 MB
+#define DEFAULT_MAXSIZE (1024*1024*10)
void KPreviewOptions::load(bool useDefaults)
{
@@ -171,7 +171,7 @@ void KPreviewOptions::load(bool useDefaults)
else
it.current()->setOn( group.readBoolEntry( protocol, false ) );
}
- // config key is in bytes (default value 1MB), numinput is in MB
+ // config key is in bytes (default value 10MB), numinput is in MB
m_maxSize->setValue( ((double)group.readNumEntry( "MaximumSize", DEFAULT_MAXSIZE )) / (1024*1024) );
m_boostSize->setChecked( group.readBoolEntry( "BoostSize", false /*default*/ ) );

@ -1,20 +0,0 @@
--- kdebase-3.5.13.1/kcontrol/displayconfig/displayconfig.desktop.ORI 2012-10-04 23:36:14.085070870 +0200
+++ kdebase-3.5.13.1/kcontrol/displayconfig/displayconfig.desktop 2012-10-04 23:36:23.449879298 +0200
@@ -3,7 +3,7 @@
Comment=Configure display
Comment[en_US]=Configure display
DocPath=kcontrol/displayconfig.html
-Exec[$e]=kcmshell displayconfig
+Exec=kcmshell displayconfig
GenericName=
GenericName[en_US]=
Icon=background
@@ -12,7 +12,7 @@
Name=Monitor & Display
Name[en_US]=Monitor & Display
NoDisplay=false
-Path[$e]=
+Path=
StartupNotify=true
Terminal=false
TerminalOptions=

@ -1,107 +0,0 @@
--- bin/startkde.ORI 2012-11-16 20:44:01.763131101 +0100
+++ bin/startkde 2012-11-16 21:24:12.865147976 +0100
@@ -15,6 +15,26 @@
source $HOME/.xprofile
fi
+# Some functions to parse and check path correctly ...
+is_in_path() {
+ search="$1"; ifs="$IFS"; IFS=":"; set $PATH; IFS="$ifs"
+ for i in $*; do
+ [ "${i}" = "${search}" ] && return 0
+ done
+ return 1
+}
+
+# Usage: place_before_in_path /opt/trinity/games /usr/games
+place_before_in_path() {
+ insert="$1"; before="$2"; ifs="$IFS"; IFS=":"; set $PATH; IFS="$ifs"
+ NPATH=""
+ for i in $*; do
+ [ "${i}" = "${before}" ] && NPATH="${NPATH}:${insert}"
+ NPATH="${NPATH}:${i}"
+ done
+ export PATH=${NPATH}
+}
+
echo "[startkde] Starting startkde." 1>&2
echo "[startkde] This script is $0" 1>&2
@@ -29,7 +49,7 @@
# Do not use kde-config to determine the version. That command creates a
# profile directory in the root of the file system. Refer to Bug Report 293.
if [ -x $BIN_DIR/konqueror ]; then
- KDE_VERSION="`$BIN_DIR/konqueror --version | grep KDE | awk '{print $2}'`"
+ KDE_VERSION=$($BIN_DIR/konqueror --version | while IFS=: read a b; do [[ "$a" =~ "KDE" ]] && echo $b; done)
echo "[startkde] TDE version is $KDE_VERSION" 1>&2
export KDEDIR=${BIN_DIR%/bin}
echo "[startkde] TDE base directory is $KDEDIR" 1>&2
@@ -105,27 +125,12 @@
# This script and kstandardirs.h and kstandardirs.cpp must match.
# The latter two must be edited/patched before compiling.
echo "[startkde] KDEHOME is not set." 1>&2
- if [ -d $HOME/.trinity ]; then
- # OK, this one is obvious.
- export KDEHOME=$HOME/.trinity
- elif [ -f /usr/bin/kde4-config ]; then
- # Looks like KDE4 is installed.
- if [ -d $HOME/.kde ] && [ ! -d $HOME/.trinity ]; then
- # Presume $HOME/.kde is being used for KDE4 as it already exists.
- export KDEHOME=$HOME/.trinity
- else
- # Presume $HOME/.kde is being used for KDE4 to be on the safe side.
- export KDEHOME=$HOME/.trinity
- fi
- elif [ -f /opt/trinity/bin/kde-config ]; then
- # Looks like Trinity is installed.
- export KDEHOME=$HOME/.trinity
- elif [ -f /usr/bin/kde-config ] && [ -d $HOME/.kde ]; then
+ # Default value: $HOME/.trinity. Most users will use this.
+ export KDEHOME=$HOME/.trinity
+
+ if [ ! -d $HOME/.trinity ] && [ ! -f /usr/bin/kde4-config ] && [ -f /usr/bin/kde-config ] && [ -d $HOME/.kde ]; then
# Looks like Trinity is installed and not playing second fiddle to KDE4.
export KDEHOME=$HOME/.kde
- else
- # Resort to this and hope for the best!
- export KDEHOME=$HOME/.trinity
fi
echo "[startkde] Set KDEHOME to $KDEHOME." 1>&2
fi
@@ -149,30 +154,30 @@
# Modify the following environment variables only as necessary.
if [ -d $KDEDIR/games ]; then
- if [ "`echo $PATH | grep \"$KDEDIR/games\"`" = "" ]; then
+ if ! is_in_path "$KDEDIR/games" ; then
# Respect the traditional path order. Don't blindly place $KDEDIR/games
# first in the path. Only place $KDEDIR/games before /usr/games. If packagers
# are adding $KDEDIR/games elsewhere, then they need to ensure the traditional
# search patch is respected.
# Is there a way we can check that $KDEDIR/games is always placed only just before
# /usr/games in the search path?
- if [ "`echo $PATH | grep \"^\\(.*:\\)\\?/usr/games\\(:.*\\)\\?$\"`" != "" ]; then
- export PATH="`echo $PATH | sed \"s|^\\(.*:\\)\\?/usr/games\\(:.*\\)\\?$|\\1$KDEDIR/games:/usr/games\\2|\"`"
+ if is_in_path "/usr/games"; then
+ place_before_in_path "$KDEDIR/games" "/usr/games"
else
export PATH=$KDEDIR/games:$PATH
fi
fi
fi
if [ -d $KDEDIR/bin ]; then
- if [ "`echo $PATH | grep \"$KDEDIR/bin\"`" = "" ]; then
+ if ! is_in_path "$KDEDIR/bin" ]; then
# Respect the traditional path order. Don't blindly place $KDEDIR/bin
# first in the path. Only place $KDEDIR/bin before /usr/bin. This order is
# consistent with kdelibs/kdesu/stub.cpp. If packagers are adding $KDEDIR/bin
# elsewhere, then they need to ensure the traditional search patch is respected.
# Is there a way we can check that $KDEDIR/bin is always placed only just before
# /usr/bin in the search path?
- if [ "`echo $PATH | grep \"^\\(.*:\\)\\?/usr/bin\\(:.*\\)\\?$\"`" != "" ]; then
- export PATH="`echo $PATH | sed \"s|^\\(.*:\\)\\?/usr/bin\\(:.*\\)\\?$|\\1$KDEDIR/bin:/usr/bin\\2|\"`"
+ if is_in_path "/usr/bin"; then
+ place_before_in_path "$KDEDIR/bin" "/usr/bin"
else
export PATH=$KDEDIR/bin:$PATH
fi

@ -1,11 +0,0 @@
--- kdebase-3.5.13.1/kdm/config.def.ORI 2012-12-01 12:45:04.820426652 +0100
+++ kdebase-3.5.13.1/kdm/config.def 2012-12-01 12:45:16.291197270 +0100
@@ -883,7 +883,7 @@
Type: string
Default: ""
User: core
-Instance: "/var/run/kdm.pid"
+Instance: "/var/run/tdm.pid"
Merge: xdm
Comment:
Where &kdm; should store its PID (do not store if empty).

@ -1,19 +0,0 @@
--- kdebase/startkde.tdeicon 2012-08-09 10:33:24.000000000 +0200
+++ kdebase/startkde 2012-08-09 10:34:11.484608675 +0200
@@ -302,6 +302,16 @@
fi
fi
+# Default Start Button icon for TDE
+if [ ! -e $kdehome/share/config/kickerrc ]; then
+ if [ -r "%{tde_starticon}" ]; then
+ cat <<EOF >$kdehome/share/config/kickerrc
+[KMenu]
+CustomIcon=%{tde_starticon}
+EOF
+ fi
+fi
+
# XCursor mouse theme needs to be applied here to work even for kded or ksmserver.
if test -n "$kcminputrc_mouse_cursortheme" -o -n "$kcminputrc_mouse_cursorsize" ; then
kapplymousetheme "$kcminputrc_mouse_cursortheme" "$kcminputrc_mouse_cursorsize"

File diff suppressed because it is too large Load Diff

@ -1,15 +0,0 @@
--- trinity-tdebase-3.5.13.2/kdmlib/dmctl.cpp.ORI 2013-02-15 22:22:05.217381830 +0100
+++ trinity-tdebase-3.5.13.2/kdmlib/dmctl.cpp 2013-02-15 22:52:06.635823349 +0100
@@ -180,7 +180,12 @@
if (DMType == GDM)
return exec( "QUERY_LOGOUT_ACTION\n", re ) && re.find("HALT") >= 0;
+#ifdef WITH_CONSOLE_KIT
+ // Use consolekit to check if we can shutdown the computer
+ return exec( "dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.CanStop\n", re ) && re.find("boolean true") >= 0;
+#else
return exec( "caps\n", re ) && re.find( "\tshutdown" ) >= 0;
+#endif
}
void

@ -1,81 +0,0 @@
--- kdebase/kdesktop/bgmanager.cc.ORI 2012-09-06 17:20:49.564915154 -0400
+++ kdebase/kdesktop/bgmanager.cc 2012-09-06 17:21:01.969682348 -0400
@@ -1013,13 +1013,13 @@
slotChangeDesktop(0);
}
-#ifdef COMPOSITE
void KBackgroundManager::slotCmBackgroundChanged( bool )
{
+#ifdef COMPOSITE
m_tPixmap->fill(TQColor(0, 0x0));
m_Hash = 0;
slotChangeDesktop(0);
-}
#endif
+}
#include "bgmanager.moc"
--- kdebase/kdesktop/main.cc.ORI 2012-09-07 20:33:09.716283507 +0200
+++ kdebase/kdesktop/main.cc 2012-09-07 20:33:31.683842727 +0200
@@ -43,7 +43,7 @@
#include <fcntl.h>
#include <stdlib.h>
-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
+#if defined(WITH_COMPOSITE) && defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
#define COMPOSITE
#endif
--- kdebase/kdesktop/bgmanager.h.ORI 2012-09-07 20:36:28.196299160 +0200
+++ kdebase/kdesktop/bgmanager.h 2012-09-07 20:36:52.420812591 +0200
@@ -15,7 +15,7 @@
#include <KBackgroundIface.h>
-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
+#if defined(WITH_COMPOSITE) && defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
#define COMPOSITE
#endif
--- kdebase/kdesktop/kdesktopapp.h.ORI 2012-09-07 20:37:14.677365503 +0200
+++ kdebase/kdesktop/kdesktopapp.h 2012-09-07 20:37:25.194154223 +0200
@@ -23,7 +23,7 @@
#include <config.h>
#include <kuniqueapplication.h>
-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
+#if defined(WITH_COMPOSITE) && defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
#define COMPOSITE
#endif
--- kdebase/konsole/konsole/main.cpp.ORI 2012-09-07 20:37:37.749901966 +0200
+++ kdebase/konsole/konsole/main.cpp 2012-09-07 20:37:46.683722469 +0200
@@ -46,7 +46,7 @@
#include "konsole.h"
-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
+#if defined(WITH_COMPOSITE) && defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
#define COMPOSITE
#endif
--- trinity-tdebase-3.5.13.2/CMakeLists.txt.composite 2013-06-16 21:49:33.742313671 +0200
+++ trinity-tdebase-3.5.13.2/CMakeLists.txt 2013-06-16 21:49:40.485177448 +0200
@@ -82,6 +82,7 @@
option( WITH_I8K "Enable Dell laptop support (ksysguard)" ${WITH_ALL_OPTIONS} )
option( WITH_HAL "Enable HAL support" ${WITH_ALL_OPTIONS} )
option( WITH_KDESKTOP_LOCK_BACKTRACE "Enable backtrace in kdesktop_lock exception handler" ${WITH_ALL_OPTIONS} )
+option( WITH_COMPOSITE "Enable COMPOSITE support" OFF )
##### user requested modules ####################
--- trinity-tdebase-3.5.13.2/config.h.cmake.composite 2013-06-16 21:50:04.626689570 +0200
+++ trinity-tdebase-3.5.13.2/config.h.cmake 2013-06-16 21:50:13.094518380 +0200
@@ -188,3 +188,6 @@
// Kickoff menu
#cmakedefine KICKOFF_DIST_CONFIG_SHORTCUT1 "@KICKOFF_DIST_CONFIG_SHORTCUT1@"
#cmakedefine KICKOFF_DIST_CONFIG_SHORTCUT2 "@KICKOFF_DIST_CONFIG_SHORTCUT2@"
+
+// kdesktop, konsole
+#cmakedefine WITH_COMPOSITE "@WITH_COMPOSITE@"

@ -1,139 +0,0 @@
--- kdebase/kdm/backend/CMakeLists.txt.ORI 2012-09-06 22:11:08.422091268 +0200
+++ kdebase/kdm/backend/CMakeLists.txt 2012-09-06 22:11:21.280843938 +0200
@@ -14,11 +14,11 @@
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_BINARY_DIR}
- ${DBUS_TQT_INCLUDE_DIRS}
+ ${DBUS_INCLUDE_DIRS}
)
link_directories(
- ${DBUS_TQT_LIBRARY_DIRS}
+ ${DBUS_LIBRARY_DIRS}
)
##### kdm (executable) ##########################
@@ -43,6 +43,6 @@
process.c protodpy.c reset.c resource.c rpcauth.c
server.c session.c sessreg.c socket.c streams.c
util.c xdmauth.c xdmcp.c
- LINK X11 ${XAU_LIBRARIES} ${DBUS_TQT_LIBRARIES} ${CRYPT_LIBRARY} ${PAM_LIBRARY} ${XDMCP_LIBRARIES}
+ LINK X11 ${XAU_LIBRARIES} ${DBUS_LIBRARIES} ${CRYPT_LIBRARY} ${PAM_LIBRARY} ${XDMCP_LIBRARIES}
DESTINATION ${BIN_INSTALL_DIR}
)
--- kdebase/ksmserver/CMakeLists.txt.ORI 2012-09-06 17:22:59.990317001 -0400
+++ kdebase/ksmserver/CMakeLists.txt 2012-09-06 17:23:16.340989494 -0400
@@ -19,13 +19,13 @@
${CMAKE_SOURCE_DIR}/kdmlib
${TDE_INCLUDE_DIR}
${TQT_INCLUDE_DIRS}
- ${DBUS_TQT_INCLUDE_DIRS}
+ ${DBUS_INCLUDE_DIRS}
${HAL_INCLUDE_DIRS}
)
link_directories(
${TQT_LIBRARY_DIRS}
- ${DBUS_TQT_LIBRARY_DIRS}
+ ${DBUS_LIBRARY_DIRS}
)
@@ -43,5 +43,5 @@
main.cpp server.cpp shutdowndlg.cpp startupdlg.cpp
legacy.cpp startup.cpp shutdown.cpp client.cpp
KSMServerInterface.skel server.skel timed.ui
- LINK dmctl-static kdeui-shared krsync-shared ${HAL_LIBRARIES} ${DBUS_TQT_LIBRARIES}
+ LINK dmctl-static kdeui-shared krsync-shared ${HAL_LIBRARIES} ${DBUS_LIBRARIES}
)
--- kdebase/kioslave/media/mediamanager/CMakeLists.txt.ORI 2012-09-07 23:57:56.858227336 +0200
+++ kdebase/kioslave/media/mediamanager/CMakeLists.txt 2012-09-07 23:58:54.948097583 +0200
@@ -20,12 +20,12 @@
${TDE_INCLUDE_DIR}
${TQT_INCLUDE_DIRS}
${HAL_INCLUDE_DIRS}
- ${DBUS_TQT_INCLUDE_DIRS}
+ ${DBUS_INCLUDE_DIRS}
)
link_directories(
${TQT_LIBRARY_DIRS}
- ${DBUS_TQT_LIBRARY_DIRS}
+ ${DBUS_LIBRARY_DIRS}
)
@@ -48,7 +48,7 @@
tde_add_kpart( ${target} AUTOMOC
SOURCES ${${target}_SRCS}
- LINK mediacommon-static kdeinit_kded-shared ${HAL_LIBRARIES} -lhal-storage ${DBUS_TQT_LIBRARIES}
+ LINK mediacommon-static kdeinit_kded-shared ${HAL_LIBRARIES} -lhal-storage ${DBUS_LIBRARIES} -ldbus-qt-1
DESTINATION ${PLUGIN_INSTALL_DIR}
)
else( )
--- trinity-tdebase-3.5.13.2/ConfigureChecks.cmake.ORI 2013-01-23 23:11:55.903373346 +0100
+++ trinity-tdebase-3.5.13.2/ConfigureChecks.cmake 2013-01-23 23:12:23.168860363 +0100
@@ -256,21 +256,3 @@
endif( )
-# dbus-tqt (kdm, ksmserver, kioslaves(media))
-if( BUILD_KDM OR BUILD_KSMSERVER OR (BUILD_KIOSLAVES AND WITH_HAL) )
- # check for dbus-tqt
- pkg_check_modules( DBUS_TQT REQUIRED dbus-tqt )
- tde_save( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
- set( CMAKE_REQUIRED_INCLUDES ${DBUS_TQT_INCLUDE_DIRS} ${TQT_INCLUDE_DIRS} ${QT_INCLUDE_DIRS})
- set( CMAKE_REQUIRED_LIBRARIES ${DBUS_TQT_LDFLAGS} ${TQT_LDFLAGS} ${QT_LDFLAGS} )
- check_cxx_source_compiles("
- #include <tqt.h>
- #include <dbus/connection.h>
- int main(int, char**) { return 0; } "
- HAVE_DBUS_QT3_07 )
- tde_restore( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
- if( NOT HAVE_DBUS_QT3_07 )
- tde_message_fatal( "dbus-tqt is required, but was not found on your system" )
- endif( )
-
-endif( )
--- trinity-tdebase-3.5.13.2/kicker/kicker/ui/CMakeLists.txt.ORI 2013-06-16 22:01:14.879046232 +0200
+++ trinity-tdebase-3.5.13.2/kicker/kicker/ui/CMakeLists.txt 2013-06-16 22:01:32.316688895 +0200
@@ -20,7 +20,7 @@
${CMAKE_SOURCE_DIR}/kicker/kicker/buttons
${CMAKE_SOURCE_DIR}/kdmlib
${CMAKE_SOURCE_DIR}/libkonq
- ${DBUS_TQT_INCLUDE_DIRS}
+ ${DBUS_INCLUDE_DIRS}
${TDE_INCLUDE_DIR}
${TQT_INCLUDE_DIRS}
)
@@ -56,5 +56,5 @@
tde_add_library( ${target} STATIC_PIC AUTOMOC
SOURCES ${${target}_SRCS}
DEPENDENCIES kicker_core-static kickermain-static
- LINK dmctl-static kickoffsearch_interfaces-shared ${DBUS_TQT_LIBRARIES} ${HAL_LIBRARIES}
+ LINK dmctl-static kickoffsearch_interfaces-shared ${DBUS_LIBRARIES} ${HAL_LIBRARIES}
)
--- trinity-tdebase-3.5.13.2/kicker/kicker/core/CMakeLists.txt.ORI 2013-06-16 22:05:07.891261997 +0200
+++ trinity-tdebase-3.5.13.2/kicker/kicker/core/CMakeLists.txt 2013-06-16 22:05:17.673060725 +0200
@@ -17,7 +17,7 @@
${CMAKE_SOURCE_DIR}/kicker/libkicker
${CMAKE_SOURCE_DIR}/kicker/kicker/ui
${CMAKE_SOURCE_DIR}/kicker/kicker/buttons
- ${DBUS_TQT_INCLUDE_DIRS}
+ ${DBUS_INCLUDE_DIRS}
${TDE_INCLUDE_DIR}
${TQT_INCLUDE_DIRS}
)
--- trinity-tdebase-3.5.13.2/kicker/kicker/buttons/CMakeLists.txt.ORI 2013-06-16 22:09:44.143564983 +0200
+++ trinity-tdebase-3.5.13.2/kicker/kicker/buttons/CMakeLists.txt 2013-06-16 22:09:48.450475959 +0200
@@ -17,7 +17,7 @@
${CMAKE_SOURCE_DIR}/kicker/kicker/core
${CMAKE_SOURCE_DIR}/kicker/kicker/ui
${CMAKE_SOURCE_DIR}/libkonq
- ${DBUS_TQT_INCLUDE_DIRS}
+ ${DBUS_INCLUDE_DIRS}
${TDE_INCLUDE_DIR}
${TQT_INCLUDE_DIRS}
)

@ -1,39 +0,0 @@
--- trinity-tdebase-3.5.13.2/config.h.cmake.ORI 2013-02-11 13:57:40.955386048 +0100
+++ trinity-tdebase-3.5.13.2/config.h.cmake 2013-02-11 14:02:42.484413874 +0100
@@ -159,6 +159,9 @@
#cmakedefine XDMCP 1
+#define TDM_DEFMINUID "@TDM_DEFMINUID@"
+#define TDM_DEFMAXUID "@TDM_DEFMAXUID@"
+
// ksmserver
#cmakedefine DBUS_SYSTEM_BUS "@DBUS_SYSTEM_BUS@"
--- trinity-tdebase-3.5.13.2/kdm/kfrontend/genkdmconf.c.ORI 2013-02-11 14:03:11.290843286 +0100
+++ trinity-tdebase-3.5.13.2/kdm/kfrontend/genkdmconf.c 2013-02-11 14:05:21.309267838 +0100
@@ -2761,6 +2761,10 @@
}
}
}
+#ifdef TDM_MINDEFUID
+ defminuid = TDM_MINDEFUID;
+ defmaxuid = TDM_MAXDEFUID;
+#else // TDM_MINDEFUID
#ifdef __linux__
if (!stat( "/etc/debian_version", &st )) { /* debian */
defminuid = "1000";
@@ -2778,10 +2782,11 @@
defminuid = "500";
defmaxuid = "65000";
}
-#else
+#else // __linux__
defminuid = "1000";
defmaxuid = "65000";
-#endif
+#endif // __linux__
+#endif // TDM_MINDEFUID
for (i = 0; i < CONF_MAX_PRIO; i++)
for (cs = config; cs; cs = cs->next)
for (ce = cs->ents; ce; ce = ce->next)

File diff suppressed because it is too large Load Diff

@ -1,135 +0,0 @@
commit 553923b25dc41e2c17ba9038eb225cd3bb9b1770
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1348270079 -0500
Forcibly prevent transient override redirect windows from showing up over the lock screen
This closes Bug 1079
diff --git a/kdesktop/lock/lockdlg.cc b/kdesktop/lock/lockdlg.cc
index 236bf8a..005ac99 100644
--- a/kdesktop/lock/lockdlg.cc
+++ b/kdesktop/lock/lockdlg.cc
@@ -573,9 +573,19 @@ void PasswordDlg::gplugActivity()
void PasswordDlg::gplugMsgBox( TQMessageBox::Icon type, const TQString &text )
{
- TQDialog dialog( this, 0, true, (WFlags)WX11BypassWM );
+ TQDialog dialog( this, 0, true, (trinity_desktop_lock_use_system_modal_dialogs?((WFlags)WStyle_StaysOnTop):((WFlags)WX11BypassWM)) );
+ if (trinity_desktop_lock_use_system_modal_dialogs) {
+ // Signal that we do not want any window controls to be shown at all
+ Atom kde_wm_system_modal_notification;
+ kde_wm_system_modal_notification = XInternAtom(qt_xdisplay(), "_KDE_WM_MODAL_SYS_NOTIFICATION", False);
+ XChangeProperty(qt_xdisplay(), dialog.winId(), kde_wm_system_modal_notification, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L);
+ }
+ dialog.setCaption(i18n("Authentication Subsystem Notice"));
TQFrame *winFrame = new TQFrame( &dialog );
- winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
+ if (trinity_desktop_lock_use_system_modal_dialogs)
+ winFrame->setFrameStyle( TQFrame::NoFrame );
+ else
+ winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
winFrame->setLineWidth( 2 );
TQVBoxLayout *vbox = new TQVBoxLayout( &dialog );
vbox->addWidget( winFrame );
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
index 2ce7507..5265bc6 100644
--- a/kdesktop/lock/lockprocess.cc
+++ b/kdesktop/lock/lockprocess.cc
@@ -960,6 +960,27 @@ void LockProcess::createSaverWindow()
setGeometry(0, 0, mRootWidth, mRootHeight);
+ // HACK
+ // Close all tooltips and notification windows
+ {
+ Window rootWindow = RootWindow(x11Display(), x11Screen());
+ Window parent;
+ Window* children = NULL;
+ unsigned int noOfChildren = 0;
+ XWindowAttributes childAttr;
+ Window childTransient;
+
+ if (XQueryTree(x11Display(), rootWindow, &rootWindow, &parent, &children, &noOfChildren) && noOfChildren>0 ) {
+ for (unsigned int i=0; i<noOfChildren; i++) {
+ if (XGetWindowAttributes(x11Display(), children[i], &childAttr) && XGetTransientForHint(x11Display(), children[i], &childTransient)) {
+ if ((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
+ XUnmapWindow(x11Display(), children[i]);
+ }
+ }
+ }
+ }
+ }
+
kdDebug(1204) << "Saver window Id: " << winId() << endl;
}
@@ -2162,9 +2183,19 @@ void LockProcess::unlockXF86()
void LockProcess::msgBox( TQMessageBox::Icon type, const TQString &txt )
{
- TQDialog box( 0, "messagebox", true, (WFlags)WX11BypassWM );
+ TQDialog box( 0, "messagebox", true, (trinity_desktop_lock_use_system_modal_dialogs?((WFlags)WStyle_StaysOnTop):((WFlags)WX11BypassWM)) );
+ if (trinity_desktop_lock_use_system_modal_dialogs) {
+ // Signal that we do not want any window controls to be shown at all
+ Atom kde_wm_system_modal_notification;
+ kde_wm_system_modal_notification = XInternAtom(qt_xdisplay(), "_KDE_WM_MODAL_SYS_NOTIFICATION", False);
+ XChangeProperty(qt_xdisplay(), box.winId(), kde_wm_system_modal_notification, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L);
+ }
+ box.setCaption(i18n("Authentication Subsystem Notice"));
TQFrame *winFrame = new TQFrame( &box );
- winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
+ if (trinity_desktop_lock_use_system_modal_dialogs)
+ winFrame->setFrameStyle( TQFrame::NoFrame );
+ else
+ winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
winFrame->setLineWidth( 2 );
TQLabel *label1 = new TQLabel( winFrame );
label1->setPixmap( TQMessageBox::standardIcon( type ) );
@@ -2264,8 +2295,10 @@ void LockProcess::windowAdded( WId w, bool managed )
int y = XDisplayHeight( qt_xdisplay(), qt_xscreen()) - attr_geom.height;
if( managed ) {
XSetWindowAttributes attr;
- attr.override_redirect = True;
- XChangeWindowAttributes( qt_xdisplay(), w, CWOverrideRedirect, &attr );
+ if (!trinity_desktop_lock_use_system_modal_dialogs) {
+ attr.override_redirect = True;
+ XChangeWindowAttributes( qt_xdisplay(), w, CWOverrideRedirect, &attr );
+ }
XReparentWindow( qt_xdisplay(), w, qt_xrootwin(), x, y );
XMapWindow( qt_xdisplay(), w );
}
diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
index 56b4b5f..e74d9f9 100644
--- a/kdesktop/lock/main.cc
+++ b/kdesktop/lock/main.cc
@@ -76,6 +76,30 @@ bool MyApp::x11EventFilter( XEvent *ev )
emit activity();
}
}
+ else if (ev->type == MapNotify) {
+ // HACK
+ // Close all tooltips and notification windows
+ XMapEvent map_event = ev->xmap;
+ XWindowAttributes childAttr;
+ Window childTransient;
+ if (XGetWindowAttributes(map_event.display, map_event.window, &childAttr) && XGetTransientForHint(map_event.display, map_event.window, &childTransient)) {
+ if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
+ XUnmapWindow(map_event.display, map_event.window);
+ }
+ }
+ }
+ else if (ev->type == CreateNotify) {
+ // HACK
+ // Close all tooltips and notification windows
+ XCreateWindowEvent create_event = ev->xcreatewindow;
+ XWindowAttributes childAttr;
+ Window childTransient;
+ if (XGetWindowAttributes(create_event.display, create_event.window, &childAttr) && XGetTransientForHint(create_event.display, create_event.window, &childTransient)) {
+ if ((childAttr.override_redirect) && (childTransient)) {
+ XDestroyWindow(create_event.display, create_event.window);
+ }
+ }
+ }
return KApplication::x11EventFilter( ev );
}

@ -1,159 +0,0 @@
commit 57f5c0698d49f0a0a7a55c75404f5b9ded910002
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1348355175 -0500
Lower override redirect windows instead of unmapping them on lock start
Restore lowered windows on lock exit
This provides a better solution to Bug 1079
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
index 5265bc6..7191346 100644
--- a/kdesktop/lock/lockprocess.cc
+++ b/kdesktop/lock/lockprocess.cc
@@ -138,6 +138,8 @@ extern bool trinity_desktop_lock_delay_screensaver_start;
extern bool trinity_desktop_lock_use_sak;
extern bool trinity_desktop_lock_forced;
+extern TQXLibWindowList trinity_desktop_lock_hidden_window_list;
+
bool trinity_desktop_lock_autohide_lockdlg = TRUE;
bool trinity_desktop_lock_closing_windows = FALSE;
bool trinity_desktop_lock_in_sec_dlg = FALSE;
@@ -961,7 +963,7 @@ void LockProcess::createSaverWindow()
setGeometry(0, 0, mRootWidth, mRootHeight);
// HACK
- // Close all tooltips and notification windows
+ // Hide all tooltips and notification windows
{
Window rootWindow = RootWindow(x11Display(), x11Screen());
Window parent;
@@ -974,7 +976,10 @@ void LockProcess::createSaverWindow()
for (unsigned int i=0; i<noOfChildren; i++) {
if (XGetWindowAttributes(x11Display(), children[i], &childAttr) && XGetTransientForHint(x11Display(), children[i], &childTransient)) {
if ((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
- XUnmapWindow(x11Display(), children[i]);
+ if (!trinity_desktop_lock_hidden_window_list.contains(children[i])) {
+ trinity_desktop_lock_hidden_window_list.append(children[i]);
+ }
+ XLowerWindow(x11Display(), children[i]);
}
}
}
diff --git a/kdesktop/lock/lockprocess.h b/kdesktop/lock/lockprocess.h
index 0dacc46..7fd4236 100644
--- a/kdesktop/lock/lockprocess.h
+++ b/kdesktop/lock/lockprocess.h
@@ -38,6 +38,8 @@ struct GreeterPluginHandle {
#define FIFO_FILE_OUT "/tmp/ksocket-global/kdesktoplockcontrol_out"
#define PIPE_CHECK_INTERVAL 50
+typedef TQValueList<Window> TQXLibWindowList;
+
//===========================================================================
//
// Screen saver handling process. Handles screensaver window,
diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
index e74d9f9..a95747e 100644
--- a/kdesktop/lock/main.cc
+++ b/kdesktop/lock/main.cc
@@ -47,6 +47,8 @@ else { \
} \
tdmconfig->setGroup("X-*-Greeter");
+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;
@@ -78,16 +80,43 @@ bool MyApp::x11EventFilter( XEvent *ev )
}
else if (ev->type == MapNotify) {
// HACK
- // Close all tooltips and notification windows
+ // Hide all tooltips and notification windows
XMapEvent map_event = ev->xmap;
XWindowAttributes childAttr;
Window childTransient;
if (XGetWindowAttributes(map_event.display, map_event.window, &childAttr) && XGetTransientForHint(map_event.display, map_event.window, &childTransient)) {
if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
- XUnmapWindow(map_event.display, map_event.window);
+ if (!trinity_desktop_lock_hidden_window_list.contains(map_event.window)) {
+ trinity_desktop_lock_hidden_window_list.append(map_event.window);
+ }
+ XLowerWindow(map_event.display, map_event.window);
}
}
}
+ else if (ev->type == VisibilityNotify) {
+ // HACK
+ // Hide all tooltips and notification windows
+ XVisibilityEvent visibility_event = ev->xvisibility;
+ XWindowAttributes childAttr;
+ Window childTransient;
+ if ((visibility_event.state == VisibilityUnobscured) || (visibility_event.state == VisibilityPartiallyObscured)) {
+ if (XGetWindowAttributes(visibility_event.display, visibility_event.window, &childAttr) && XGetTransientForHint(visibility_event.display, visibility_event.window, &childTransient)) {
+ if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
+ if (!trinity_desktop_lock_hidden_window_list.contains(visibility_event.window)) {
+ trinity_desktop_lock_hidden_window_list.append(visibility_event.window);
+ }
+ XLowerWindow(visibility_event.display, visibility_event.window);
+ }
+ }
+ }
+ }
+ else if (ev->type == DestroyNotify) {
+ XDestroyWindowEvent destroy_event = ev->xdestroywindow;
+ if (trinity_desktop_lock_hidden_window_list.contains(destroy_event.window)) {
+ trinity_desktop_lock_hidden_window_list.remove(destroy_event.window);
+ }
+ }
+#if 0
else if (ev->type == CreateNotify) {
// HACK
// Close all tooltips and notification windows
@@ -100,6 +129,7 @@ bool MyApp::x11EventFilter( XEvent *ev )
}
}
}
+#endif
return KApplication::x11EventFilter( ev );
}
@@ -114,6 +144,14 @@ static KCmdLineOptions options[] =
KCmdLineLastOption
};
+void restore_hidden_override_redirect_windows() {
+ TQXLibWindowList::iterator it;
+ for (it = trinity_desktop_lock_hidden_window_list.begin(); it != trinity_desktop_lock_hidden_window_list.end(); ++it) {
+ Window win = *it;
+ XRaiseWindow(qt_xdisplay(), win);
+ }
+}
+
static void sigusr1_handler(int)
{
signalled_forcelock = TRUE;
@@ -356,7 +394,10 @@ int main( int argc, char **argv )
}
if (in_internal_mode == FALSE) {
- return app.exec();
+ trinity_desktop_lock_hidden_window_list.clear();
+ int ret = app.exec();
+ restore_hidden_override_redirect_windows();
+ return ret;
}
else {
pid_t kdesktop_pid = atoi(args->getOption( "internal" ));
@@ -364,7 +405,9 @@ int main( int argc, char **argv )
// The controlling kdesktop process probably died. Commit suicide...
return 12;
}
+ trinity_desktop_lock_hidden_window_list.clear();
app.exec();
+ restore_hidden_override_redirect_windows();
if (kill(kdesktop_pid, SIGUSR1) < 0) {
// The controlling kdesktop process probably died. Commit suicide...
return 12;

@ -1,58 +0,0 @@
commit 1f33dc8fd2fc14c2abb74be4e27ef08fdda784d6
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1348374670 -0500
Attempt to minimize the time in which new notifications are displayed before being hidden
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
index 7191346..db92c00 100644
--- a/kdesktop/lock/lockprocess.cc
+++ b/kdesktop/lock/lockprocess.cc
@@ -980,6 +980,7 @@ void LockProcess::createSaverWindow()
trinity_desktop_lock_hidden_window_list.append(children[i]);
}
XLowerWindow(x11Display(), children[i]);
+ XFlush(x11Display());
}
}
}
diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
index a95747e..7235776 100644
--- a/kdesktop/lock/main.cc
+++ b/kdesktop/lock/main.cc
@@ -90,6 +90,7 @@ bool MyApp::x11EventFilter( XEvent *ev )
trinity_desktop_lock_hidden_window_list.append(map_event.window);
}
XLowerWindow(map_event.display, map_event.window);
+ XFlush(map_event.display);
}
}
}
@@ -106,10 +107,27 @@ bool MyApp::x11EventFilter( XEvent *ev )
trinity_desktop_lock_hidden_window_list.append(visibility_event.window);
}
XLowerWindow(visibility_event.display, visibility_event.window);
+ XFlush(visibility_event.display);
}
}
}
}
+ else if (ev->type == CreateNotify) {
+ // HACK
+ // Close all tooltips and notification windows
+ XCreateWindowEvent create_event = ev->xcreatewindow;
+ XWindowAttributes childAttr;
+ Window childTransient;
+ if (XGetWindowAttributes(create_event.display, create_event.window, &childAttr) && XGetTransientForHint(create_event.display, create_event.window, &childTransient)) {
+ if ((childAttr.override_redirect) && (childTransient)) {
+ if (!trinity_desktop_lock_hidden_window_list.contains(create_event.window)) {
+ trinity_desktop_lock_hidden_window_list.append(create_event.window);
+ }
+ XLowerWindow(create_event.display, create_event.window);
+ XFlush(create_event.display);
+ }
+ }
+ }
else if (ev->type == DestroyNotify) {
XDestroyWindowEvent destroy_event = ev->xdestroywindow;
if (trinity_desktop_lock_hidden_window_list.contains(destroy_event.window)) {

@ -1,29 +0,0 @@
Index: kdebase/kdesktop/init/My_Documents
===================================================================
--- kdebase/kdesktop/init/My_Documents (revision 1182807)
+++ kdebase/kdesktop/init/My_Documents (revision 1182808)
@@ -1,10 +1,6 @@
[Desktop Entry]
Encoding=UTF-8
-Comment=
-Comment[en_US]=
-Exec=kxdglauncher --xdgname DOCUMENTS
Icon=folder_wordprocessing
-MimeType=
Name=My Documents
Name[af]=Dokument Gids
Name[ar]=مستنداتي
@@ -70,10 +66,12 @@
Name[wa]=Ridant documints
Name[zh_CN]=文档文件夹
Name[zh_TW]=文件目錄
+URL=$( kxdglauncher --getpath --xdgname DOCUMENTS )
+Type=Link
StartupNotify=true
+MimeType=
Terminal=false
TerminalOptions=
-Type=Application
X-DCOP-ServiceType=
X-KDE-SubstituteUID=false
X-KDE-Username=

@ -1,31 +0,0 @@
Index: kdebase/kcontrol/crypto/crypto.cpp
===================================================================
--- kdebase/kcontrol/crypto/crypto.cpp (revision 1201522)
+++ kdebase/kcontrol/crypto/crypto.cpp (revision 1201523)
@@ -2321,7 +2321,7 @@
unsigned int i;
SSL_CTX *ctx;
SSL *ssl;
-SSL_METHOD *meth;
+const SSL_METHOD *meth;
SSLv2Box->clear();
SSLv3Box->clear();
@@ -2337,7 +2337,7 @@
CipherItem *item;
for (i=0; ; i++) {
int j, k;
- SSL_CIPHER *sc;
+ const SSL_CIPHER *sc;
sc = (meth->get_cipher)(i);
if (!sc)
break;
@@ -2365,7 +2365,7 @@
for (i=0; ; i++) {
int j, k;
- SSL_CIPHER *sc;
+ const SSL_CIPHER *sc;
sc = (meth->get_cipher)(i);
if (!sc)
break;

@ -1,43 +0,0 @@
Index: kdebase/kcontrol/crypto/crypto.cpp
===================================================================
--- kdebase/kcontrol/crypto/crypto.cpp (revision 1201704)
+++ kdebase/kcontrol/crypto/crypto.cpp (revision 1201705)
@@ -2316,12 +2316,19 @@
#ifdef HAVE_SSL
+
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+#define SSL_CONST const
+#else
+#define SSL_CONST
+#endif
+
// This gets all the available ciphers from OpenSSL
bool KCryptoConfig::loadCiphers() {
unsigned int i;
SSL_CTX *ctx;
SSL *ssl;
-const SSL_METHOD *meth;
+SSL_CONST SSL_METHOD *meth;
SSLv2Box->clear();
SSLv3Box->clear();
@@ -2337,7 +2344,7 @@
CipherItem *item;
for (i=0; ; i++) {
int j, k;
- const SSL_CIPHER *sc;
+ SSL_CONST SSL_CIPHER *sc;
sc = (meth->get_cipher)(i);
if (!sc)
break;
@@ -2365,7 +2372,7 @@
for (i=0; ; i++) {
int j, k;
- const SSL_CIPHER *sc;
+ SSL_CONST SSL_CIPHER *sc;
sc = (meth->get_cipher)(i);
if (!sc)
break;

@ -1,13 +0,0 @@
Index: kdebase/kcontrol/randr/krandrbindings.cpp
===================================================================
--- kdebase/kcontrol/randr/krandrbindings.cpp (revision 1221325)
+++ kdebase/kcontrol/randr/krandrbindings.cpp (revision 1221326)
@@ -28,7 +28,7 @@
keys->insert( "Program:krandrtray", i18n("Display Control") );
- DEF( I18N_NOOP("Switch Displays"), KShortcut::KShortcut(TQString("XF86Display")), KShortcut::KShortcut(TQString("XF86Display")), slotCycleDisplays() );
+ DEF( I18N_NOOP("Switch Displays"), KShortcut(TQString("XF86Display")), KShortcut(TQString("XF86Display")), slotCycleDisplays() );
#undef DEF
#undef WIN

@ -1,10 +0,0 @@
--- kdebase/khotkeys/arts/CMakeLists.txt.ORI 2012-08-07 21:21:45.840401244 +0200
+++ kdebase/khotkeys/arts/CMakeLists.txt 2012-08-07 21:22:06.260974727 +0200
@@ -25,6 +25,7 @@
${CMAKE_SOURCE_DIR}/khotkeys/kcontrol
${TDE_INCLUDE_DIR}
${TQT_INCLUDE_DIRS}
+ ${ARTS_INCLUDE_DIRS}
)
link_directories(

@ -1,27 +0,0 @@
--- ./libkonq/konqbookmarkmanager.h.ori 2013-05-08 23:26:03.558587419 +0200
+++ ./libkonq/konqbookmarkmanager.h 2013-05-08 23:29:25.317517880 +0200
@@ -3,6 +3,8 @@
#include <kbookmarkmanager.h>
#include <kstandarddirs.h>
+#include <kurl.h>
+#include <kio/job.h>
#include <libkonq_export.h>
class LIBKONQ_EXPORT KonqBookmarkManager
@@ -11,7 +13,14 @@
static KBookmarkManager * self() {
if ( !s_bookmarkManager )
{
- TQString bookmarksFile = locateLocal("data", TQString::fromLatin1("konqueror/bookmarks.xml"));
+ TQString globalBookmarkFile = locate( "data", TQString::fromLatin1( "konqueror/bookmarks.xml" ) );
+ TQString bookmarksFile = locateLocal( "data", TQString::fromLatin1("konqueror/bookmarks.xml" ), true);
+ if ( globalBookmarkFile != TQString::null && bookmarksFile == TQString::null ) {
+ KIO::file_copy(
+ KURL::fromPathOrURL( globalBookmarkFile ),
+ KURL::fromPathOrURL( bookmarksFile ), -1, false, false
+ );
+ }
s_bookmarkManager = KBookmarkManager::managerForFile( bookmarksFile );
}
return s_bookmarkManager;

@ -1,37 +0,0 @@
--- trinity-tdebase-3.5.13.2~pre100+073a32f9/kcontrol/displayconfig/displayconfig.desktop.ORI 2013-05-11 14:53:30.914170537 +0200
+++ trinity-tdebase-3.5.13.2~pre100+073a32f9/kcontrol/displayconfig/displayconfig.desktop 2013-05-11 14:53:59.495582944 +0200
@@ -2,6 +2,7 @@
Categories=Qt;KDE;X-KDE-settings-system;
Comment=Configure display
Comment[en_US]=Configure display
+Comment[fr]=Configuration de l'affichage
DocPath=kcontrol/displayconfig.html
Exec=kcmshell displayconfig
GenericName=
@@ -11,6 +12,7 @@
MimeType=
Name=Monitor & Display
Name[en_US]=Monitor & Display
+Name[fr]=Moniteurs & Affichage
NoDisplay=false
Path=
StartupNotify=true
--- trinity-tdebase-3.5.13.2~pre100+073a32f9/kcontrol/iccconfig/iccconfig.desktop.ORI 2013-05-11 21:21:04.241337141 +0200
+++ trinity-tdebase-3.5.13.2~pre100+073a32f9/kcontrol/iccconfig/iccconfig.desktop 2013-05-11 21:21:44.782537929 +0200
@@ -12,6 +12,7 @@
Categories=Qt;KDE;X-KDE-settings-hardware;
Comment=Configure display ICC profile
Comment[en_US]=Configure display ICC profile
+Comment[fr]=Configurer les profils de couleurs ICC
DocPath=kcontrol/iccconfig.html
GenericName=
GenericName[en_US]=
@@ -19,5 +20,6 @@
MimeType=
Name=ICC Color Profile
Name[en_US]=ICC Color Profile
+Name[fr]=Profils de couleurs ICC
-NoDisplay=false
\ Pas de fin de ligne à la fin du fichier
+NoDisplay=false

@ -1,13 +0,0 @@
--- trinity-tdebase-3.5.13.2/kioslave/media/mediamanager/halbackend.cpp.slash 2013-08-15 18:24:06.092882626 +0200
+++ trinity-tdebase-3.5.13.2/kioslave/media/mediamanager/halbackend.cpp 2013-08-15 18:32:20.535855050 +0200
@@ -554,6 +554,10 @@
media_name.replace(pattern, i18n(pattern.utf8()));
medium->setLabel(media_name);
} else {
+ // If media_name begins with '%', it is likely to be a directory path.
+ if( media_name.at(0) == '%') {
+ media_name.replace(QChar('%'), "/");
+ }
medium->setLabel(i18n(media_name.utf8()));
}

@ -1,51 +0,0 @@
commit c383da9dc680e5e79e75b84003eca7bfa08dd991
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: 1400559462 -0500
Forward port KDE SVN r803253 to fix potential security hole
diff --git a/config.h.cmake b/config.h.cmake
index f5ebeeb..cacb97c 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -182,6 +182,7 @@
// ksmserver
#cmakedefine DBUS_SYSTEM_BUS "@DBUS_SYSTEM_BUS@"
+#cmakedefine HAVE__ICETRANSNOLISTEN 1
// ksplashml
#cmakedefine HAVE_XINERAMA 1
diff --git a/ksmserver/CMakeLists.txt b/ksmserver/CMakeLists.txt
index fdd521b..8578b01 100644
--- a/ksmserver/CMakeLists.txt
+++ b/ksmserver/CMakeLists.txt
@@ -9,6 +9,8 @@
#
#################################################
+include( ConfigureChecks.cmake )
+
if( NOT DBUS_SYSTEM_BUS )
set( DBUS_SYSTEM_BUS "unix:path=/var/run/dbus/system_bus_socket" CACHE INTERNAL "" FORCE )
endif()
diff --git a/ksmserver/ConfigureChecks.cmake b/ksmserver/ConfigureChecks.cmake
new file mode 100644
index 0000000..4f8cf79
--- /dev/null
+++ b/ksmserver/ConfigureChecks.cmake
@@ -0,0 +1,12 @@
+#################################################
+#
+# (C) 2014 Timothy Pearson
+# kb9vqf (AT) pearsoncomputing (DOT) net
+#
+# Improvements and feedback are welcome
+#
+# This file is released under GPL >= 2
+#
+#################################################
+
+check_library_exists( ICE _IceTransNoListen "" HAVE__ICETRANSNOLISTEN )
\ No newline at end of file

@ -1,10 +0,0 @@
diff -Naur kdebase-3.5.10/kioslave/media/services/media_safelyremove.desktop kdebase-3.5.10.yeni/kioslave/media/services/media_safelyremove.desktop
--- kdebase-3.5.10/kioslave/media/services/media_safelyremove.desktop 2008-08-19 21:16:59.000000000 +0300
+++ kdebase-3.5.10.yeni/kioslave/media/services/media_safelyremove.desktop 2009-12-22 00:51:57.122282682 +0200
@@ -71,5 +71,5 @@
Name[wa]=Ositer e såvrité
Name[zh_CN]=安全删除
Name[zh_TW]=安全的移除
-Exec=kio_media_mounthelper -s %u
+Exec=kio_media_mounthelper -u %u

@ -1,16 +0,0 @@
--- trinity-tdebase-3.5.13.2/kdm/config.def.ori 2013-09-07 19:18:58.424732176 +0200
+++ trinity-tdebase-3.5.13.2/kdm/config.def 2013-09-07 19:20:24.310872875 +0200
@@ -48,10 +48,10 @@
#endif
#if defined(BSD) || defined(__linux__)
-# define DEF_USER_PATH "/usr/local/bin:/opt/trinity/bin:/usr/bin:/bin:/opt/trinity/games:/usr/games"
-# define DEF_SYSTEM_PATH "/usr/local/sbin:/usr/local/bin:/opt/trinity/sbin:/usr/sbin:/opt/trinity/bin:/usr/bin:/sbin:/bin"
+# define DEF_USER_PATH "/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games"
+# define DEF_SYSTEM_PATH "/usr/local/sbin:/usr/local/bin:/opt/trinity/sbin:/usr/sbin:/opt/trinity/bin:/usr/bin:/sbin:/bin:/usr/X11R6/bin"
#else
-# define DEF_USER_PATH "/usr/local/bin:/opt/trinity/bin:/usr/bin:/bin:/opt/trinity/games:/usr/games:/usr/ucb"
+# define DEF_USER_PATH "/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/ucb"
# define DEF_SYSTEM_PATH "/usr/local/sbin:/usr/local/bin:/opt/trinity/sbin:/usr/sbin:/opt/trinity/bin:/usr/bin:/sbin:/bin:/etc:/usr/ucb"
#endif

File diff suppressed because it is too large Load Diff

@ -1,701 +0,0 @@
--- ./kcontrol/background/bgadvanced.cpp.ORI 2013-05-09 14:42:39.036269356 +0200
+++ ./kcontrol/background/bgadvanced.cpp 2013-05-09 14:43:12.485581123 +0200
@@ -44,6 +44,7 @@
#include "bgadvanced.h"
#include "bgadvanced_ui.h"
+#include "KCrossBGRender.h"
#include <X11/Xlib.h>
/**** BGAdvancedDialog ****/
@@ -63,7 +64,7 @@
}
-BGAdvancedDialog::BGAdvancedDialog(KBackgroundRenderer *_r,
+BGAdvancedDialog::BGAdvancedDialog(KCrossBGRender *_r,
TQWidget *parent,
bool m_multidesktop)
: KDialogBase(parent, "BGAdvancedDialog",
--- ./kcontrol/background/bgdialog.cpp.ORI 2013-05-09 14:46:43.556237673 +0200
+++ ./kcontrol/background/bgdialog.cpp 2013-05-09 14:47:33.054218951 +0200
@@ -63,6 +63,7 @@
#include "bgwallpaper.h"
#include "bgadvanced.h"
#include "bgdialog.h"
+#include "KCrossBGRender.h"
#define NR_PREDEF_PATTERNS 6
@@ -194,19 +195,19 @@
int eDesk = i>0 ? i-1 : 0;
// Setup the merged-screen renderer
- KBackgroundRenderer * r = new KBackgroundRenderer(eDesk, 0, false, _config);
+ KCrossBGRender * r = new KCrossBGRender(eDesk, 0, false, _config);
m_renderer[i].insert( 0, r );
connect( r, TQT_SIGNAL(imageDone(int,int)), TQT_SLOT(slotPreviewDone(int,int)) );
// Setup the common-screen renderer
- r = new KBackgroundRenderer(eDesk, 0, true, _config);
+ r = new KCrossBGRender(eDesk, 0, true, _config);
m_renderer[i].insert( 1, r );
connect( r, TQT_SIGNAL(imageDone(int,int)), TQT_SLOT(slotPreviewDone(int,int)) );
// Setup the remaining renderers for each screen
for (unsigned j=0; j < m_numScreens; ++j )
{
- r = new KBackgroundRenderer(eDesk, j, true, _config);
+ r = new KCrossBGRender(eDesk, j, true, _config);
m_renderer[i].insert( j+2, r );
connect( r, TQT_SIGNAL(imageDone(int,int)), TQT_SLOT(slotPreviewDone(int,int)) );
}
@@ -221,14 +222,14 @@
}
// set up the common desktop renderer
- KBackgroundRenderer * r = new KBackgroundRenderer(0, 0, false, _config);
+ KCrossBGRender * r = new KCrossBGRender(0, 0, false, _config);
m_renderer[0].insert(0, r);
connect(r, TQT_SIGNAL(imageDone(int,int)), TQT_SLOT(slotPreviewDone(int,int)));
// set up all the other desktop renderers
for (unsigned i = 0; i < m_numDesks; ++i)
{
- r = new KBackgroundRenderer(i, 0, false, _config);
+ r = new KCrossBGRender(i, 0, false, _config);
m_renderer[i+1].insert(0, r);
connect(r, TQT_SIGNAL(imageDone(int,int)), TQT_SLOT(slotPreviewDone(int,int)));
}
@@ -266,7 +267,7 @@
delete m_pGlobals;
}
-KBackgroundRenderer * BGDialog::eRenderer()
+KCrossBGRender * BGDialog::eRenderer()
{
return m_renderer[m_eDesk][m_eScreen];
}
@@ -681,7 +682,7 @@
void BGDialog::updateUI()
{
- KBackgroundRenderer *r = eRenderer();
+ KCrossBGRender *r = eRenderer();
m_comboDesktop->setCurrentItem(m_eDesk);
m_comboScreen->setCurrentItem(m_eScreen);
@@ -819,7 +820,7 @@
if (!m_previewUpdates)
return;
- KBackgroundRenderer * r = m_renderer[m_eDesk][(m_eScreen>1) ? (screen_done+2) : m_eScreen];
+ KCrossBGRender * r = m_renderer[m_eDesk][(m_eScreen>1) ? (screen_done+2) : m_eScreen];
if (r->image().isNull())
return;
@@ -858,7 +859,7 @@
void BGDialog::slotWallpaperTypeChanged(int i)
{
- KBackgroundRenderer *r = eRenderer();
+ KCrossBGRender *r = eRenderer();
r->stop();
// No picture
@@ -984,7 +985,7 @@
void BGDialog::slotWallpaperPos(int mode)
{
- KBackgroundRenderer *r = eRenderer();
+ KCrossBGRender *r = eRenderer();
mode++;
m_wallpaperPos = mode;
@@ -1002,7 +1003,7 @@
void BGDialog::slotSetupMulti()
{
- KBackgroundRenderer *r = eRenderer();
+ KCrossBGRender *r = eRenderer();
BGMultiWallpaperDialog dlg(r, topLevelWidget());
if (dlg.exec() == TQDialog::Accepted) {
@@ -1018,7 +1019,7 @@
void BGDialog::slotPrimaryColor(const TQColor &color)
{
- KBackgroundRenderer *r = eRenderer();
+ KCrossBGRender *r = eRenderer();
if (color == r->colorA())
return;
@@ -1033,7 +1034,7 @@
void BGDialog::slotSecondaryColor(const TQColor &color)
{
- KBackgroundRenderer *r = eRenderer();
+ KCrossBGRender *r = eRenderer();
if (color == r->colorB())
return;
@@ -1048,7 +1049,7 @@
void BGDialog::slotPattern(int pattern)
{
- KBackgroundRenderer *r = eRenderer();
+ KCrossBGRender *r = eRenderer();
r->stop();
bool bSecondaryEnabled = true;
if (pattern < NR_PREDEF_PATTERNS)
@@ -1085,7 +1086,7 @@
// Copy stuff
for (unsigned desk = 0; desk < m_numDesks+1; ++desk )
{
- KBackgroundRenderer *master = m_renderer[desk][1];
+ KCrossBGRender *master = m_renderer[desk][1];
for (unsigned screen = 0; screen < m_numScreens; ++screen)
{
m_renderer[desk][screen+2]->copyConfig(master);
@@ -1140,7 +1141,7 @@
// Copy stuff
for (unsigned screen = 0; screen < m_renderer[0].size(); ++screen )
{
- KBackgroundRenderer *master = m_renderer[0][screen];
+ KCrossBGRender *master = m_renderer[0][screen];
for (unsigned desk = 0; desk < m_numDesks; ++desk )
{
m_renderer[desk+1][screen]->copyConfig(master);
@@ -1179,7 +1180,7 @@
void BGDialog::slotAdvanced()
{
- KBackgroundRenderer *r = eRenderer();
+ KCrossBGRender *r = eRenderer();
m_previewUpdates = false;
BGAdvancedDialog dlg(r, topLevelWidget(), m_multidesktop);
@@ -1301,7 +1302,7 @@
{
for (unsigned j = 0; j < m_renderer[i].size(); ++j )
{
- KBackgroundRenderer * r = m_renderer[i][j];
+ KCrossBGRender * r = m_renderer[i][j];
if( r->isActive())
r->stop();
r->desktopResized();
--- ./kcontrol/background/bgadvanced.h.ori 2013-05-09 14:49:18.551047531 +0200
+++ ./kcontrol/background/bgadvanced.h 2013-05-09 14:49:23.509945456 +0200
@@ -33,14 +33,14 @@
class TQSpinBox;
class BGAdvancedBase;
-class KBackgroundRenderer;
+class KCrossBGRender;
class KBackgroundProgram;
class BGAdvancedDialog : public KDialogBase
{
Q_OBJECT
public:
- BGAdvancedDialog(KBackgroundRenderer *_r, TQWidget *parent, bool m_multidesktop);
+ BGAdvancedDialog(KCrossBGRender *_r, TQWidget *parent, bool m_multidesktop);
void setCacheSize(int s);
int cacheSize();
@@ -79,7 +79,7 @@
void slotEnableProgram(bool b);
private:
- KBackgroundRenderer *r;
+ KCrossBGRender *r;
BGAdvancedBase *dlg;
--- ./kcontrol/background/bgdialog.h.ORI 2013-05-09 14:49:59.223210319 +0200
+++ ./kcontrol/background/bgdialog.h 2013-05-09 14:50:40.215366483 +0200
@@ -28,6 +28,7 @@
#include "bgrender.h"
#include "bgsettings.h"
#include "bgdefaults.h"
+#include "KCrossBGRender.h"
class BGMonitorArrangement;
class KStandardDirs;
@@ -53,7 +54,7 @@
protected:
void initUI();
void updateUI();
- KBackgroundRenderer * eRenderer();
+ KCrossBGRender * eRenderer();
void setWallpaper(const TQString &);
@@ -95,7 +96,7 @@
int m_screen;
int m_eDesk;
int m_eScreen;
- TQValueVector< TQPtrVector<KBackgroundRenderer> > m_renderer; // m_renderer[desk][screen]
+ TQValueVector< TQPtrVector<KCrossBGRender> > m_renderer; // m_renderer[desk][screen]
TQMap<TQString,int> m_wallpaper;
TQStringList m_patterns;
int m_slideShowRandom; // Remembers last Slide Show setting
--- ./kcontrol/background/bgwallpaper.h.ORI 2013-05-09 14:51:55.150823830 +0200
+++ ./kcontrol/background/bgwallpaper.h 2013-05-09 14:52:37.513949453 +0200
@@ -27,6 +27,7 @@
#include <tqstringlist.h>
#include <kdialogbase.h>
+#include <kdebug.h>
class BGMultiWallpaperBase;
class KBackgroundSettings;
@@ -55,12 +56,16 @@
void slotMoveDown();
void slotOk();
void slotItemSelected( TQListBoxItem * );
+ void slotCheckScheduled(bool);
+ void slotChangedXML(const TQString&);
+
private:
void setEnabledMoveButtons();
KBackgroundSettings *m_pSettings;
BGMultiWallpaperBase *dlg;
+ TQString lastXml;
};
#endif
--- ./kcontrol/background/bgwallpaper.cpp.ORI 2013-05-09 14:53:01.461452198 +0200
+++ ./kcontrol/background/bgwallpaper.cpp 2013-05-09 14:57:27.712924157 +0200
@@ -26,12 +26,14 @@
#include <tqevent.h>
#include <tqpushbutton.h>
#include <tqspinbox.h>
+#include <tqgroupbox.h>
#include <kfiledialog.h>
#include <kimageio.h>
#include <klocale.h>
#include <kstandarddirs.h>
#include <kurldrag.h>
+#include <kurlrequester.h>
#include "bgsettings.h"
#include "bgwallpaper.h"
@@ -119,10 +121,41 @@
connect(dlg->m_buttonMoveUp, TQT_SIGNAL(clicked()), TQT_SLOT(slotMoveUp()));
connect(dlg->m_buttonMoveDown, TQT_SIGNAL(clicked()), TQT_SLOT(slotMoveDown()));
connect(dlg->m_listImages, TQT_SIGNAL(clicked ( TQListBoxItem * )), TQT_SLOT(slotItemSelected( TQListBoxItem *)));
+ connect(dlg->chkScheduled, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotCheckScheduled(bool)));
+ connect(dlg->kurlXmlFile, TQT_SIGNAL(textChanged(const TQString&)), TQT_SLOT(slotChangedXML(const TQString &)));
+
dlg->m_buttonRemove->setEnabled( false );
dlg->m_buttonMoveUp->setEnabled( false );
dlg->m_buttonMoveDown->setEnabled( false );
+ // XML Stuffs
+ dlg->kurlXmlFile->setFilter("*.xml");
+ if (m_pSettings->wallpaperList()[0].endsWith("xml",false)) {
+ dlg->kurlXmlFile->setURL(m_pSettings->wallpaperList()[0]);
+ dlg->chkScheduled->setChecked(true);
+ dlg->m_listImages->removeItem(0);
+ lastXml = m_pSettings->wallpaperList()[0];
+ } else {
+ dlg->kurlXmlFile->setURL("/usr/share/mdk/backgrounds/Mandriva.xml");
+ dlg->chkScheduled->setChecked(false);
+ slotCheckScheduled(false);
+ }
+}
+
+void BGMultiWallpaperDialog::slotCheckScheduled(bool state)
+{
+ if ( state == true ) {
+ dlg->grpNormalShow->setEnabled(false);
+ dlg->kurlXmlFile->setEnabled(true);
+ } else {
+ dlg->grpNormalShow->setEnabled(true);
+ dlg->kurlXmlFile->setEnabled(false);
+ }
+}
+
+void BGMultiWallpaperDialog::slotChangedXML(const TQString & file)
+{
+ lastXml = file;
}
void BGMultiWallpaperDialog::slotItemSelected( TQListBoxItem * )
@@ -222,15 +255,38 @@
void BGMultiWallpaperDialog::slotOk()
{
+ bool useXml = false;
+ // Looking to XML
+ if (dlg->chkScheduled->isChecked() && lastXml.endsWith("xml",false)) {
+ useXml = true;
+ kdDebug() << "Adding XML" << lastXml;
+ dlg->m_listImages->insertItem(lastXml,0);
+ }
+
+ kdDebug() << dlg->m_listImages << endl;
+
TQStringList lst;
- for (unsigned i=0; i < dlg->m_listImages->count(); i++)
+ for (unsigned i=0; i < dlg->m_listImages->count(); i++) {
- lst.append(dlg->m_listImages->text(i));
+ lst.append(dlg->m_listImages->text(i));
+ }
m_pSettings->setWallpaperList(lst);
m_pSettings->setWallpaperChangeInterval(dlg->m_spinInterval->value());
- if (dlg->m_cbRandom->isChecked())
+ if (dlg->m_cbRandom->isChecked()) {
m_pSettings->setMultiWallpaperMode(KBackgroundSettings::Random);
- else
+ } else {
m_pSettings->setMultiWallpaperMode(KBackgroundSettings::InOrder);
+ }
+
+ if(useXml) {
+ m_pSettings->changeWallpaper();
+ m_pSettings->setWallpaper(lastXml);
+ m_pSettings->changeWallpaper();
+ } else {
+ m_pSettings->changeWallpaper();
+ m_pSettings->setWallpaper(lst[0]);
+ m_pSettings->changeWallpaper();
+ }
+
accept();
}
--- kdebase-3.5.9/kcontrol/background/bgwallpaper_ui.ui.kbg_trans 2008-03-17 11:06:49.000000000 -0300
+++ kdebase-3.5.9/kcontrol/background/bgwallpaper_ui.ui 2008-03-17 11:07:13.000000000 -0300
@@ -1,4 +1,4 @@
-<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
<class>BGMultiWallpaperBase</class>
<widget class="TQWidget">
<property name="name">
@@ -8,155 +8,209 @@
<rect>
<x>0</x>
<y>0</y>
- <width>410</width>
- <height>196</height>
+ <width>499</width>
+ <height>526</height>
</rect>
</property>
- <grid>
+ <property name="caption">
+ <string>BGMultiWallPaperBase</string>
+ </property>
+ <vbox>
<property name="name">
<cstring>unnamed</cstring>
</property>
<property name="margin">
<number>0</number>
</property>
- <widget class="TQLabel" row="2" column="0">
- <property name="name">
- <cstring>textLabel2</cstring>
- </property>
- <property name="text">
- <string>Show the following pictures:</string>
- </property>
- </widget>
- <widget class="TQCheckBox" row="1" column="0">
- <property name="name">
- <cstring>m_cbRandom</cstring>
- </property>
- <property name="text">
- <string>&amp;Show pictures in random order</string>
- </property>
- </widget>
- <widget class="TQLayoutWidget" row="0" column="0">
+ <widget class="TQLayoutWidget">
<property name="name">
- <cstring>layout3</cstring>
+ <cstring>layout8</cstring>
</property>
<hbox>
<property name="name">
<cstring>unnamed</cstring>
</property>
- <widget class="TQLabel">
+ <widget class="TQCheckBox">
<property name="name">
- <cstring>textLabel1</cstring>
+ <cstring>chkScheduled</cstring>
</property>
<property name="text">
- <string>Change &amp;picture after:</string>
- </property>
- <property name="buddy" stdset="0">
- <cstring>m_spinInterval</cstring>
+ <string>Scheduled Slide Show</string>
</property>
</widget>
- <widget class="TQSpinBox">
+ <widget class="KURLRequester">
<property name="name">
- <cstring>m_spinInterval</cstring>
+ <cstring>kurlXmlFile</cstring>
</property>
</widget>
- <spacer>
- <property name="name">
- <cstring>spacer4</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
</hbox>
</widget>
- <widget class="TQLayoutWidget" row="3" column="0">
+ <widget class="QGroupBox">
<property name="name">
- <cstring>layout4</cstring>
+ <cstring>grpNormalShow</cstring>
</property>
- <grid>
+ <property name="title">
+ <string></string>
+ </property>
+ <vbox>
<property name="name">
<cstring>unnamed</cstring>
</property>
- <widget class="BGMultiWallpaperList" row="0" column="0" rowspan="5" colspan="1">
+ <widget class="TQLayoutWidget">
<property name="name">
- <cstring>m_listImages</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>3</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>300</width>
- <height>100</height>
- </size>
+ <cstring>layout3</cstring>
</property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="TQLabel">
+ <property name="name">
+ <cstring>textLabel1_2</cstring>
+ </property>
+ <property name="text">
+ <string>Change &amp;picture after:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>m_spinInterval</cstring>
+ </property>
+ </widget>
+ <widget class="TQSpinBox">
+ <property name="name">
+ <cstring>m_spinInterval</cstring>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer4</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
</widget>
- <widget class="TQPushButton" row="0" column="1">
+ <widget class="TQCheckBox">
<property name="name">
- <cstring>m_buttonAdd</cstring>
+ <cstring>m_cbRandom</cstring>
</property>
<property name="text">
- <string>&amp;Add...</string>
- </property>
- </widget>
- <spacer row="4" column="1">
- <property name="name">
- <cstring>spacer5</cstring>
- </property>
- <property name="orientation">
- <enum>Vertical</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
+ <string>&amp;Show pictures in random order</string>
</property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- <widget class="TQPushButton" row="1" column="1">
- <property name="name">
- <cstring>m_buttonRemove</cstring>
- </property>
- <property name="text">
- <string>&amp;Remove</string>
+ <property name="accel">
+ <string>Alt+S</string>
</property>
</widget>
- <widget class="TQPushButton" row="3" column="1">
+ <widget class="TQLabel">
<property name="name">
- <cstring>m_buttonMoveDown</cstring>
+ <cstring>textLabel2</cstring>
</property>
<property name="text">
- <string>Move &amp;Down</string>
+ <string>Show the following pictures:</string>
</property>
</widget>
- <widget class="TQPushButton" row="2" column="1">
+ <widget class="TQLayoutWidget">
<property name="name">
- <cstring>m_buttonMoveUp</cstring>
- </property>
- <property name="text">
- <string>Move &amp;Up</string>
+ <cstring>layout4</cstring>
</property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="BGMultiWallpaperList" row="0" column="0" rowspan="5" colspan="1">
+ <property name="name">
+ <cstring>m_listImages</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>3</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>100</height>
+ </size>
+ </property>
+ </widget>
+ <widget class="TQPushButton" row="0" column="1">
+ <property name="name">
+ <cstring>m_buttonAdd</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Add...</string>
+ </property>
+ <property name="accel">
+ <string>Alt+A</string>
+ </property>
+ </widget>
+ <spacer row="4" column="1">
+ <property name="name">
+ <cstring>spacer5</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="TQPushButton" row="1" column="1">
+ <property name="name">
+ <cstring>m_buttonRemove</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Remove</string>
+ </property>
+ <property name="accel">
+ <string>Alt+R</string>
+ </property>
+ </widget>
+ <widget class="TQPushButton" row="3" column="1">
+ <property name="name">
+ <cstring>m_buttonMoveDown</cstring>
+ </property>
+ <property name="text">
+ <string>Move &amp;Down</string>
+ </property>
+ <property name="accel">
+ <string>Alt+D</string>
+ </property>
+ </widget>
+ <widget class="TQPushButton" row="2" column="1">
+ <property name="name">
+ <cstring>m_buttonMoveUp</cstring>
+ </property>
+ <property name="text">
+ <string>Move &amp;Up</string>
+ </property>
+ <property name="accel">
+ <string>Alt+U</string>
+ </property>
+ </widget>
+ </grid>
</widget>
- </grid>
+ </vbox>
</widget>
- </grid>
+ </vbox>
</widget>
<includes>
<include location="local" impldecl="in declaration">bgwallpaper.h</include>
@@ -164,4 +218,9 @@
</includes>
<layoutdefaults spacing="3" margin="6"/>
<layoutfunctions spacing="KDialog::spacingHint" margin="KDialog::marginHint"/>
+<includehints>
+ <includehint>kurlrequester.h</includehint>
+ <includehint>klineedit.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+</includehints>
</UI>

@ -1,136 +0,0 @@
--- tdebase/kcontrol/input/xcursor/themepage.cpp.ORI 2013-07-22 19:33:45.153674930 +0200
+++ tdebase/kcontrol/input/xcursor/themepage.cpp 2013-07-23 15:24:01.664497762 +0200
@@ -33,6 +33,8 @@
#include <kio/netaccess.h>
#include <ktar.h>
+#include "../../krdb/krdb.h"
+
#include <tqlayout.h>
#include <tqdir.h>
#include <tqpixmap.h>
@@ -42,6 +44,7 @@
#include <tqpainter.h>
#include <tqfileinfo.h>
#include <tqpushbutton.h>
+#include <dcopref.h>
#include <cstdlib> // for getenv()
@@ -53,6 +56,10 @@
#include <X11/Xlib.h>
#include <X11/Xcursor/Xcursor.h>
+#ifdef HAVE_XFIXES
+# include <X11/extensions/Xfixes.h>
+#endif
+
// Check for older version
#if !defined(XCURSOR_LIB_MAJOR) && defined(XCURSOR_MAJOR)
# define XCURSOR_LIB_MAJOR XCURSOR_MAJOR
@@ -133,6 +140,65 @@
{
}
+bool ThemePage::applyTheme(TQString theme, TQString size)
+{
+#ifdef HAVE_XCURSOR
+ if (theme.isEmpty()) {
+ return false;
+ }
+
+ // Apply the TDE cursor theme to ourselves
+ XcursorSetTheme(qt_xdisplay(), theme.latin1());
+
+ // Tell klauncher to set the XCURSOR_THEME and XCURSOR_SIZE environment
+ // variables when launching applications.
+ DCOPRef klauncher("klauncher");
+ klauncher.send("setLaunchEnv", TQCString("XCURSOR_THEME"), theme);
+ if( !size.isEmpty()) {
+ klauncher.send("setLaunchEnv", TQCString("XCURSOR_SIZE"), size);
+ }
+
+ // Update the Xcursor X resources
+ runRdb(0);
+
+ // Apply the TDE cursor size to ourselves
+ if (!size.isEmpty()) {
+ XcursorSetDefaultSize(qt_xdisplay(), size.toUInt());
+ }
+
+ // Reload the standard cursors
+ TQStringList names;
+
+ // Qt cursors
+ names << "left_ptr" << "up_arrow" << "cross" << "wait"
+ << "left_ptr_watch" << "ibeam" << "size_ver" << "size_hor"
+ << "size_bdiag" << "size_fdiag" << "size_all" << "split_v"
+ << "split_h" << "pointing_hand" << "openhand"
+ << "closedhand" << "forbidden" << "whats_this" << "copy" << "move" << "link";
+
+ // X core cursors
+ names << "X_cursor" << "right_ptr" << "hand1"
+ << "hand2" << "watch" << "xterm"
+ << "crosshair" << "left_ptr_watch" << "center_ptr"
+ << "sb_h_double_arrow" << "sb_v_double_arrow" << "fleur"
+ << "top_left_corner" << "top_side" << "top_right_corner"
+ << "right_side" << "bottom_right_corner" << "bottom_side"
+ << "bottom_left_corner" << "left_side" << "question_arrow"
+ << "pirate";
+
+ for (int i = 0; i < names.size(); ++i)
+ {
+ const char* name = (*(names.at(i))).ascii();
+ Cursor handle = XcursorLibraryLoadCursor(qt_xdisplay(), name);
+ XFixesChangeCursorByName(qt_xdisplay(), handle, TQFile::encodeName(name));
+ XFreeCursor(qt_xdisplay(), handle); // Don't leak the cursor
+ }
+
+ return true;
+#else // HAVE_XCURSOR
+ return false;
+#endif
+}
void ThemePage::save()
{
@@ -145,10 +209,17 @@
c.setGroup( "Mouse" );
c.writeEntry( "cursorTheme", selectedTheme != "system" ? selectedTheme : TQString::null );
- KMessageBox::information( this, i18n("You have to restart KDE for these "
+ // The Kcontrol panel does not allow to set cursor size for now.
+ // So we keep the same size as written in config file.
+ TQCString size = c.readEntry("cursorSize", TQString()).local8Bit();
+
+ if (!applyTheme(selectedTheme, size))
+ {
+ KMessageBox::information( this, i18n("You have to restart KDE for these "
"changes to take effect."), i18n("Cursor Settings Changed"),
"CursorSettingsChanged" );
-
+ }
+
currentTheme = selectedTheme;
}
--- tdebase/kcontrol/input/xcursor/themepage.h.ORI 2013-07-22 19:49:33.467191658 +0200
+++ tdebase/kcontrol/input/xcursor/themepage.h 2013-07-22 19:56:03.990484896 +0200
@@ -45,6 +45,7 @@
void load();
void load( bool useDefaults );
void defaults();
+ bool applyTheme(TQString theme, TQString size);
signals:
void changed( bool );
--- tdebase/kcontrol/input/xcursor/CMakeLists.txt.ORI 2013-07-23 15:24:41.178064068 +0200
+++ tdebase/kcontrol/input/xcursor/CMakeLists.txt 2013-07-23 15:27:31.694851294 +0200
@@ -21,5 +21,6 @@
tde_add_library( themepage STATIC_PIC AUTOMOC
SOURCES
- themepage.cpp previewwidget.cpp
+ themepage.cpp previewwidget.cpp ../../krdb/krdb.cpp
+ LINK Xfixes
)

@ -1,20 +0,0 @@
--- ./kcontrol/kcontrol/KControl.desktop~ 2013-01-09 02:12:13.000000000 +0100
+++ ./kcontrol/kcontrol/KControl.desktop 2013-05-08 17:55:54.250733219 +0200
@@ -5,7 +5,7 @@
DocPath=kcontrol/index.html
X-KDE-StartupNotify=true
-Name=Control Center
+Name=Trinity Control Center
Name[af]=Beheer Sentrum
Name[ar]=مركز التحكم
Name[az]=İdarə Mərkəzi
@@ -28,7 +28,7 @@
Name[eu]=Kontrol gunea
Name[fa]=مرکز کنترل
Name[fi]=Ohjauskeskus
-Name[fr]=Centre de configuration de KDE
+Name[fr]=Centre de configuration de Trinity
Name[fy]=Konfiguraasjesintrum
Name[ga]=Lárionad Rialaithe
Name[gl]=Centro de Control

File diff suppressed because it is too large Load Diff

@ -1,26 +0,0 @@
--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kdesu/kdesu/sudlg.cpp.kdesu_no_ignore 2013-05-16 22:59:53.633425236 +0200
+++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kdesu/kdesu/sudlg.cpp 2013-05-16 23:00:04.685200151 +0200
@@ -15,7 +15,7 @@
#include "sudlg.h"
KDEsuDialog::KDEsuDialog(TQCString user, TQCString auth_user, bool enableKeep,const TQString& icon, bool withIgnoreButton, int timeout)
- : KPasswordDialog(Password, enableKeep, (withIgnoreButton ? User1:NoDefault), icon)
+ : KPasswordDialog(Password, enableKeep, 0, icon)
{
KConfig* config = KGlobal::config();
config->setGroup("super-user-command");
@@ -34,12 +34,10 @@
} else {
if (m_User == "root") {
prompt = i18n("The action you requested needs root privileges. "
- "Please enter root's password below or click "
- "Ignore to continue with your current privileges.");
+ "Please enter root's password below.");
} else {
prompt = i18n("The action you requested needs additional privileges. "
- "Please enter the password for \"%1\" below or click "
- "Ignore to continue with your current privileges.").arg(static_cast<const char *>(m_User));
+ "Please enter the password for \"%1\" below.").arg(static_cast<const char *>(m_User));
}
}
setPrompt(prompt);

@ -1,229 +0,0 @@
--- trinity-tdebase-3.5.13.2~pre86+807a5445/kcontrol/kdm/kdm-appear.h.kdm_theme_selector 2013-01-09 02:12:13.000000000 +0100
+++ trinity-tdebase-3.5.13.2~pre86+807a5445/kcontrol/kdm/kdm-appear.h 2013-05-09 12:58:14.535347383 +0200
@@ -26,6 +26,7 @@
#include <tqimage.h>
#include <tqfileinfo.h>
#include <tqpushbutton.h>
+#include <tqgroupbox.h>
#include <kcolorbutton.h>
#include <kurl.h>
@@ -57,6 +58,7 @@
void loadColorSchemes(KBackedComboBox *combo);
void loadGuiStyles(KBackedComboBox *combo);
+ void loadThemes(KBackedComboBox *combo);
void loadLanguageList(KLanguageButton *combo);
bool eventFilter(TQObject *, TQEvent *);
@@ -72,6 +74,7 @@
private slots:
void slotAreaRadioClicked(int id);
void slotLogoButtonClicked();
+ void slotUsethemeChanged(bool state);
void changed();
private:
@@ -85,14 +88,19 @@
TQRadioButton *logoRadio;
TQLineEdit *xLineEdit;
TQLineEdit *yLineEdit;
+ TQCheckBox * themecheck;
KBackedComboBox *compositorcombo;
KBackedComboBox *guicombo;
+ KBackedComboBox *themecombo;
KBackedComboBox *colcombo;
KBackedComboBox *echocombo;
+ TQLabel * themeimagelabel;
KLanguageButton *langcombo;
TQCheckBox *sakbox;
TQLabel *sakwarning;
+ //TQHBoxLayout * themehlay;
+ TQGroupBox *themegroup;
};
#endif
--- trinity-tdebase-3.5.13.2~pre86+807a5445/kcontrol/kdm/kdm-appear.cpp.kdm_theme_selector 2013-01-09 02:12:13.000000000 +0100
+++ trinity-tdebase-3.5.13.2~pre86+807a5445/kcontrol/kdm/kdm-appear.cpp 2013-05-09 13:00:34.428413714 +0200
@@ -28,6 +28,7 @@
#include <tqbuttongroup.h>
#include <tqlabel.h>
#include <tqlayout.h>
+#include <tqcheckbox.h>
#include <tqradiobutton.h>
#include <tqwhatsthis.h>
#include <tqvalidator.h>
@@ -35,6 +36,7 @@
#include <tqcheckbox.h>
#include <tqstyle.h>
+#include <kdesktopfile.h>
#include <klocale.h>
#include <klineedit.h>
#include <kimageio.h>
@@ -62,10 +64,43 @@
TQVBoxLayout *vbox = new TQVBoxLayout(this, KDialog::marginHint(),
KDialog::spacingHint(), "vbox");
- TQGroupBox *group = new TQGroupBox(i18n("Appearance"), this);
+
+ // ThemeBox Starts here
+
+ themecheck = new TQCheckBox( i18n("Use Theme"), this );
+ vbox->addWidget(themecheck);
+ connect(themecheck, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
+ connect(themecheck, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotUsethemeChanged(bool)));
+
+ themegroup = new TQGroupBox(0, Vertical, i18n("Theme"), this);
+ vbox->addWidget(themegroup);
+
+ TQGridLayout * grid = new TQGridLayout( themegroup->layout(), 4, 3, KDialog::spacingHint() );
+
+ grid->setColStretch(1, 1);
+ grid->setColStretch(2, 1);
+
+ themecombo = new KBackedComboBox(themegroup);
+ loadThemes(themecombo);
+
+ TQLabel * label1 = new TQLabel(themecombo, i18n("KDM Theme:"),themegroup);
+ grid->addWidget(label1,1,0);
+ grid->addWidget(themecombo,1,1);
+ connect(themecombo, TQT_SIGNAL(activated(int)), TQT_SLOT(changed()));
+ connect(themecombo, TQT_SIGNAL(activated(int)), TQT_SLOT(slotThemeChanged(int)));
+
+ themeimagelabel = new TQLabel(themecombo,"",themegroup);
+
+ grid->addMultiCellWidget(themeimagelabel,1,3,2,2,TQt::AlignRight);
+
+ vbox->addStretch(1);
+ // ENDS HERE
+
+ TQGroupBox * group = new TQGroupBox(i18n("Appearance"), this);
+
vbox->addWidget(group);
- TQGridLayout *grid = new TQGridLayout( group, 5, 2, KDialog::marginHint(),
+ grid = new TQGridLayout( group, 5, 2, KDialog::marginHint(),
KDialog::spacingHint(), "grid");
grid->addRowSpacing(0, group->fontMetrics().height());
grid->setColStretch(0, 1);
@@ -267,10 +302,25 @@
}
+
+void KDMAppearanceWidget::slotUsethemeChanged(bool state)
+{
+ //themehlay->setEnabled(state);
+ //themecombo->setEnabled(state);
+ //themeimagelabel->setEnabled(state);
+ themegroup->setEnabled(state);
+}
+
+
void KDMAppearanceWidget::makeReadOnly()
{
disconnect( logobutton, TQT_SIGNAL(clicked()),
this, TQT_SLOT(slotLogoButtonClicked()) );
+
+ themecheck->setEnabled(false);
+ //themegroup->setEnabled(false);
+ themecombo->setEnabled(false);
+ themeimagelabel->setEnabled(false);
logobutton->setAcceptDrops(false);
greetstr_lined->setReadOnly(true);
noneRadio->setEnabled(false);
@@ -352,6 +402,40 @@
}
}
+void KDMAppearanceWidget::loadThemes(KBackedComboBox *combo)
+{
+ // Gets current Theme in kdmrc
+ TQString current;
+ config->setGroup("X-*-Greeter");
+ TQFileInfo Theme = config->readEntry("Theme");
+ if(Theme.exists()) {
+ current = Theme.fileName();
+ }
+
+ // List directories under "themes" directory
+ TQDir d(locate("data", TQString::fromLatin1("kdm/themes/")), "", TQDir::Name, TQDir::Dirs|TQDir::NoSymLinks|TQDir::Readable|TQDir::Executable);
+ TQStringList list = d.entryList();
+
+ combo->clear();
+ for (TQStringList::ConstIterator it = list.begin(); it != list.end(); ++it) {
+ TQString name = (*it);
+
+ if(name == "." || name == ".." ) {
+ continue;
+ }
+
+ if (name.isEmpty()) {
+ name = "default";
+ }
+
+ combo->insertItem( *it, name);
+
+ if (name == current) {
+ combo->setCurrentItem(combo->count()-1);
+ }
+ }
+}
+
bool KDMAppearanceWidget::setLogo(TQString logo)
{
TQString flogo = logo.isEmpty() ?
@@ -468,6 +552,10 @@
config->writeEntry("GUIStyle", guicombo->currentId());
+ TQString Theme = locate("data", TQString::fromLatin1("kdm/themes/"));
+ Theme.append(themecombo->currentId());
+ config->writeEntry("Theme", Theme);
+
config->writeEntry("ColorScheme", colcombo->currentId());
config->writeEntry("EchoMode", echocombo->currentId());
@@ -476,6 +564,8 @@
config->writeEntry("Language", langcombo->current());
+ config->writeEntry("UseTheme", themecheck->isChecked());
+
if (!sakwarning) {
config->writeEntry("UseSAK", sakbox->isChecked());
}
@@ -523,6 +613,8 @@
// Check the current compositor type
compositorcombo->setCurrentId(config->readEntry("Compositor"));
+ loadThemes(themecombo);
+
// Check the GUI type
guicombo->setCurrentId(config->readEntry("GUIStyle"));
@@ -544,6 +636,9 @@
// get the language
langcombo->setCurrentItem(config->readEntry("Language", "C"));
+ themecheck->setChecked(config->readBoolEntry("UseTheme",true));
+ slotUsethemeChanged(config->readBoolEntry("UseTheme",true));
+
// See if the SAK is enabled
if (!sakwarning) {
sakbox->setChecked(config->readBoolEntry("UseSAK", true));
@@ -556,10 +651,12 @@
void KDMAppearanceWidget::defaults()
{
+ themecheck->setChecked(true);
greetstr_lined->setText( i18n("Welcome to %n") );
logoRadio->setChecked( true );
slotAreaRadioClicked( KdmLogo );
setLogo( "" );
+ themecombo->setCurrentId("");
compositorcombo->setCurrentId( "" );
guicombo->setCurrentId( "" );
colcombo->setCurrentId( "" );

@ -1,297 +0,0 @@
--- ./kdmlib/kgreet_classic.cpp.ORI 2013-05-09 17:43:03.148552793 +0200
+++ ./kdmlib/kgreet_classic.cpp 2013-05-09 17:51:09.129324589 +0200
@@ -26,21 +26,30 @@
#include "themer/kdmthemer.h"
#include "themer/kdmitem.h"
+#include <kglobal.h>
#include <klocale.h>
#include <klineedit.h>
-#include <kpassdlg.h>
#include <kuser.h>
#include <tqregexp.h>
#include <tqlayout.h>
#include <tqlabel.h>
-class KDMPasswordEdit : public KPasswordEdit {
+class KDMPasswordEdit : public KLineEdit {
public:
- KDMPasswordEdit( TQWidget *parent ) : KPasswordEdit( parent, 0 ) {}
- KDMPasswordEdit( KPasswordEdit::EchoModes echoMode, TQWidget *parent ) : KPasswordEdit( echoMode, parent, 0 ) {}
+ KDMPasswordEdit( TQWidget *parent ) : KLineEdit( parent )
+ {
+ setEchoMode(TQLineEdit::Password);
+ }
+
+ KDMPasswordEdit( TQLineEdit::EchoMode echoMode, TQWidget *parent ) : KLineEdit( parent )
+ {
+ setEchoMode(echoMode);
+ }
+
+
protected:
- virtual void contextMenuEvent( TQContextMenuEvent * ) {}
+ virtual void contextMenuEvent( TQContextMenuEvent * ) {}
};
static int echoMode;
@@ -104,11 +113,11 @@
grid->addWidget( loginLabel, line, 0 );
grid->addWidget( new TQLabel( fixedUser, parent ), line++, 1 );
}
- if (echoMode == -1)
+ if (echoMode == -1) {
passwdEdit = new KDMPasswordEdit( parent );
- else
- passwdEdit = new KDMPasswordEdit( (KPasswordEdit::EchoModes)echoMode,
- parent );
+ } else {
+ passwdEdit = new KDMPasswordEdit( (TQLineEdit::EchoMode)echoMode, parent );
+ }
connect( passwdEdit, TQT_SIGNAL(textChanged( const TQString & )),
TQT_SLOT(slotActivity()) );
connect( passwdEdit, TQT_SIGNAL(lostFocus()), TQT_SLOT(slotActivity()) );
@@ -135,8 +144,8 @@
}
if (func != Authenticate) {
if (echoMode == -1) {
- passwd1Edit = new KDMPasswordEdit( (KPasswordEdit::EchoModes)echoMode, parent );
- passwd2Edit = new KDMPasswordEdit( (KPasswordEdit::EchoModes)echoMode, parent );
+ passwd1Edit = new KDMPasswordEdit( (TQLineEdit::EchoMode)echoMode, parent );
+ passwd2Edit = new KDMPasswordEdit( (TQLineEdit::EchoMode)echoMode, parent );
} else {
passwd1Edit = new KDMPasswordEdit( parent );
passwd2Edit = new KDMPasswordEdit( parent );
@@ -247,16 +256,16 @@
KGreeterPluginHandler::IsUser );
break;
case 1:
- handler->gplugReturnText( passwdEdit->password(),
+ handler->gplugReturnText( passwdEdit->text().utf8(),
KGreeterPluginHandler::IsPassword |
KGreeterPluginHandler::IsSecret );
break;
case 2:
- handler->gplugReturnText( passwd1Edit->password(),
+ handler->gplugReturnText( passwd1Edit->text().utf8(),
KGreeterPluginHandler::IsSecret );
break;
default: // case 3:
- handler->gplugReturnText( passwd2Edit->password(),
+ handler->gplugReturnText( passwd2Edit->text().utf8(),
KGreeterPluginHandler::IsNewPassword |
KGreeterPluginHandler::IsSecret );
break;
@@ -405,11 +414,11 @@
// assert( !running );
setActive2( true );
if (authTok) {
- passwd1Edit->erase();
- passwd2Edit->erase();
+ passwd1Edit->clear();
+ passwd2Edit->clear();
passwd1Edit->setFocus();
} else {
- passwdEdit->erase();
+ passwdEdit->clear();
if (loginEdit && loginEdit->isEnabled())
passwdEdit->setEnabled( true );
else {
@@ -426,7 +435,7 @@
KClassicGreeter::clear()
{
// assert( !running && !passwd1Edit );
- passwdEdit->erase();
+ passwdEdit->clear();
if (loginEdit) {
loginEdit->clear();
loginEdit->setFocus();
@@ -484,9 +493,24 @@
TQVariant (*getConf)( void *, const char *, const TQVariant & ),
void *ctx )
{
- echoMode = getConf( ctx, "EchoMode", TQVariant( -1 ) ).toInt();
- KGlobal::locale()->insertCatalogue( "kgreet_classic" );
- return true;
+ echoMode = getConf( ctx, "EchoMode", TQVariant( -1 ) ).toInt();
+ switch (echoMode)
+ {
+ case (0):
+ case (1):
+ echoMode = TQLineEdit::Password;
+ break;
+
+ case (2):
+ echoMode = TQLineEdit::NoEcho;
+ break;
+
+ default:
+ echoMode = TQLineEdit::Password;
+ }
+
+ KGlobal::locale()->insertCatalogue( "kgreet_classic" );
+ return true;
}
static void done( void )
--- ./kdmlib/kgreet_classic.h.ORI 2013-05-09 17:53:03.266961035 +0200
+++ ./kdmlib/kgreet_classic.h 2013-05-09 17:53:49.235008948 +0200
@@ -31,7 +31,6 @@
#include <tqobject.h>
class KLineEdit;
-class KPasswordEdit;
class KSimpleConfig;
class TQGridLayout;
class TQLabel;
@@ -76,7 +75,7 @@
TQLabel *loginLabel, *passwdLabel, *passwd1Label, *passwd2Label;
KLineEdit *loginEdit;
- KPasswordEdit *passwdEdit, *passwd1Edit, *passwd2Edit;
+ KLineEdit *passwdEdit, *passwd1Edit, *passwd2Edit;
KSimpleConfig *stsFile;
TQString fixedUser, curUser;
Function func;
--- ./kdmlib/kgreet_winbind.cpp.ORI 2013-05-09 17:54:36.906021481 +0200
+++ ./kdmlib/kgreet_winbind.cpp 2013-05-09 18:00:23.089847329 +0200
@@ -26,11 +26,11 @@
#include "themer/kdmthemer.h"
#include "themer/kdmitem.h"
+#include <kglobal.h>
#include <klocale.h>
#include <kdebug.h>
#include <kcombobox.h>
#include <klineedit.h>
-#include <kpassdlg.h>
#include <kuser.h>
#include <kprocio.h>
@@ -40,10 +40,17 @@
#include <stdlib.h>
-class KDMPasswordEdit : public KPasswordEdit {
+class KDMPasswordEdit : public KLineEdit {
public:
- KDMPasswordEdit( TQWidget *parent ) : KPasswordEdit( parent, 0 ) {}
- KDMPasswordEdit( KPasswordEdit::EchoModes echoMode, TQWidget *parent ) : KPasswordEdit( echoMode, parent, 0 ) {}
+ KDMPasswordEdit( TQWidget *parent ) : KLineEdit( parent )
+ {
+ setEchoMode(TQLineEdit::Password);
+ }
+ KDMPasswordEdit( TQLineEdit::EchoMode echoMode, TQWidget *parent ) : KLineEdit( parent )
+ {
+ setEchoMode(echoMode);
+ }
+
protected:
virtual void contextMenuEvent( TQContextMenuEvent * ) {}
};
@@ -150,7 +157,7 @@
if (echoMode == -1)
passwdEdit = new KDMPasswordEdit( parent );
else
- passwdEdit = new KDMPasswordEdit( (KPasswordEdit::EchoModes)echoMode,
+ passwdEdit = new KDMPasswordEdit( (TQLineEdit::EchoMode)echoMode,
parent );
connect( passwdEdit, TQT_SIGNAL(textChanged( const TQString & )),
TQT_SLOT(slotActivity()) );
@@ -180,8 +187,8 @@
}
if (func != Authenticate) {
if (echoMode == -1) {
- passwd1Edit = new KDMPasswordEdit( (KPasswordEdit::EchoModes)echoMode, parent );
- passwd2Edit = new KDMPasswordEdit( (KPasswordEdit::EchoModes)echoMode, parent );
+ passwd1Edit = new KDMPasswordEdit( (TQLineEdit::EchoMode)echoMode, parent );
+ passwd2Edit = new KDMPasswordEdit( (TQLineEdit::EchoMode)echoMode, parent );
} else {
passwd1Edit = new KDMPasswordEdit( parent );
passwd2Edit = new KDMPasswordEdit( parent );
@@ -328,16 +335,16 @@
KGreeterPluginHandler::IsUser );
break;
case 1:
- handler->gplugReturnText( passwdEdit->password(),
+ handler->gplugReturnText( passwdEdit->text().utf8(),
KGreeterPluginHandler::IsPassword |
KGreeterPluginHandler::IsSecret );
break;
case 2:
- handler->gplugReturnText( passwd1Edit->password(),
+ handler->gplugReturnText( passwd1Edit->text().utf8(),
KGreeterPluginHandler::IsSecret );
break;
default: // case 3:
- handler->gplugReturnText( passwd2Edit->password(),
+ handler->gplugReturnText( passwd2Edit->text().utf8(),
KGreeterPluginHandler::IsNewPassword |
KGreeterPluginHandler::IsSecret );
break;
@@ -486,11 +493,11 @@
// assert( !running );
setActive2( true );
if (authTok) {
- passwd1Edit->erase();
- passwd2Edit->erase();
+ passwd1Edit->clear();
+ passwd2Edit->clear();
passwd1Edit->setFocus();
} else {
- passwdEdit->erase();
+ passwdEdit->clear();
if (loginEdit && loginEdit->isEnabled())
passwdEdit->setEnabled( true );
else {
@@ -507,7 +514,7 @@
KWinbindGreeter::clear()
{
// assert( !running && !passwd1Edit );
- passwdEdit->erase();
+ passwdEdit->clear();
if (loginEdit) {
domainCombo->setCurrentItem( defaultDomain );
slotChangedDomain( defaultDomain );
@@ -632,6 +639,21 @@
void *ctx )
{
echoMode = getConf( ctx, "EchoMode", TQVariant( -1 ) ).toInt();
+ switch (echoMode)
+ {
+ case (0):
+ case (1):
+ echoMode = TQLineEdit::Password;
+ break;
+
+ case (2):
+ echoMode = TQLineEdit::NoEcho;
+ break;
+
+ default:
+ echoMode = TQLineEdit::Password;
+ }
+
staticDomains = TQStringList::split( ':', getConf( ctx, "winbind.Domains", TQVariant( "" ) ).toString() );
if (!staticDomains.contains("<local>"))
staticDomains << "<local>";
--- ./kdmlib/kgreet_winbind.h.ORI 2013-05-09 18:00:46.495362083 +0200
+++ ./kdmlib/kgreet_winbind.h 2013-05-09 18:01:22.960606033 +0200
@@ -33,7 +33,6 @@
class KComboBox;
class KLineEdit;
-class KPasswordEdit;
class KSimpleConfig;
class TQGridLayout;
class TQLabel;
@@ -85,7 +84,7 @@
TQLabel *domainLabel, *loginLabel, *passwdLabel, *passwd1Label, *passwd2Label;
KComboBox *domainCombo;
KLineEdit *loginEdit;
- KPasswordEdit *passwdEdit, *passwd1Edit, *passwd2Edit;
+ KLineEdit *passwdEdit, *passwd1Edit, *passwd2Edit;
KSimpleConfig *stsFile;
TQString fixedDomain, fixedUser, curUser;
TQStringList allUsers, mDomainListing;

@ -1,12 +0,0 @@
--- trinity-tdebase-3.5.13.2~pre100+073a32f9/CMakeLists.txt.ORI 2013-05-10 19:40:45.930287816 +0200
+++ trinity-tdebase-3.5.13.2~pre100+073a32f9/CMakeLists.txt 2013-05-10 19:40:57.593049243 +0200
@@ -244,6 +244,9 @@
endif()
##### Checks for a distribution-specific 2nd menu item, generally a shortcut to graphical package manager
+if(EXISTS "/usr/share/applications/gpk-application.desktop")
+ set( KICKOFF_DIST_CONFIG_SHORTCUT2 "/usr/share/applications/gpk-application.desktop" )
+endif()
if(EXISTS "/usr/share/applications/package-manager.desktop")
set( KICKOFF_DIST_CONFIG_SHORTCUT2 "/usr/share/applications/package-manager.desktop" )
endif()

@ -1,16 +0,0 @@
--- trinity-tdebase-3.5.13.2~pre86+807a5445/kicker/kicker/ui/default-favs.ORI 2013-05-09 22:50:36.607264087 +0200
+++ trinity-tdebase-3.5.13.2~pre86+807a5445/kicker/kicker/ui/default-favs 2013-05-09 22:50:46.935039753 +0200
@@ -1,9 +1,7 @@
-MozillaFirefox.desktop
-kde-Kontact.desktop
-writer.desktop
-kde-amarok.desktop
-kde-digikam.desktop
kde-Home.desktop
+kde-konqbrowser.desktop
+kde-Kfind.desktop
+kde-kate.desktop
+kde-konsole.desktop
kde-KControl.desktop
kde-Help.desktop
-kde-konsole.desktop

@ -1,45 +0,0 @@
--- ./kicker/kicker/ui/k_new_mnu.cpp.ori 2013-05-08 21:56:01.084691260 +0200
+++ ./kicker/kicker/ui/k_new_mnu.cpp 2013-05-08 21:58:02.086130445 +0200
@@ -1428,6 +1428,42 @@
m_systemView->insertItem( "folder_man", i18n( "My Documents" ), documentPath, documentPath, nId++, index++ );
}
+ if ( KStandardDirs::exists( KGlobalSettings::picturesPath() + "/" ) )
+ {
+ TQString picturesPath = KGlobalSettings::picturesPath();
+ if ( picturesPath.endsWith( "/" ) )
+ picturesPath = picturesPath.left( picturesPath.length() - 1 );
+ if (picturesPath!=TQDir::homeDirPath())
+ m_systemView->insertItem( "folder_image", i18n( "My Images" ), picturesPath, picturesPath, nId++, index++ );
+ }
+
+ if ( KStandardDirs::exists( KGlobalSettings::musicPath() + "/" ) )
+ {
+ TQString musicPath = KGlobalSettings::musicPath();
+ if ( musicPath.endsWith( "/" ) )
+ musicPath = musicPath.left( musicPath.length() - 1 );
+ if (musicPath!=TQDir::homeDirPath())
+ m_systemView->insertItem( "folder_sound", i18n( "My Music" ), musicPath, musicPath, nId++, index++ );
+ }
+
+ if ( KStandardDirs::exists( KGlobalSettings::videosPath() + "/" ) )
+ {
+ TQString videosPath = KGlobalSettings::videosPath();
+ if ( videosPath.endsWith( "/" ) )
+ videosPath = videosPath.left( videosPath.length() - 1 );
+ if (videosPath!=TQDir::homeDirPath())
+ m_systemView->insertItem( "folder_video", i18n( "My Videos" ), videosPath, videosPath, nId++, index++ );
+ }
+
+ if ( KStandardDirs::exists( KGlobalSettings::downloadPath() + "/" ) )
+ {
+ TQString downloadPath = KGlobalSettings::downloadPath();
+ if ( downloadPath.endsWith( "/" ) )
+ downloadPath = downloadPath.left( downloadPath.length() - 1 );
+ if (downloadPath!=TQDir::homeDirPath())
+ m_systemView->insertItem( "folder_inbox", i18n( "My Downloads" ), downloadPath, downloadPath, nId++, index++ );
+ }
+
m_systemView->insertItem( "network", i18n( "Network Folders" ),
"remote:/", "remote:/", nId++, index++ );

@ -1,639 +0,0 @@
--- ./ksmserver/startup.cpp.ori 2013-05-08 20:04:32.138717187 +0200
+++ ./ksmserver/startup.cpp 2013-05-08 20:14:12.550305958 +0200
@@ -115,43 +115,40 @@
int count = config->readNumEntry( "count" );
appsToStart = count;
- TQValueList<TQStringList> wmCommands;
- if ( !wm.isEmpty() ) {
- for ( int i = 1; i <= count; i++ ) {
- TQString n = TQString::number(i);
- if ( wm == config->readEntry( TQString("program")+n ) ) {
- wmCommands << config->readListEntry( TQString("restartCommand")+n );
- }
- }
- }
- if ( wmCommands.isEmpty() )
- wmCommands << ( TQStringList() << wm );
-
publishProgress( appsToStart, true );
connectDCOPSignal( launcher, launcher, "autoStart0Done()",
"autoStart0Done()", true);
connectDCOPSignal( launcher, launcher, "autoStart1Done()",
"autoStart1Done()", true);
connectDCOPSignal( launcher, launcher, "autoStart2Done()",
"autoStart2Done()", true);
upAndRunning( "ksmserver" );
- if ( !wmCommands.isEmpty() ) {
- // when we have a window manager, we start it first and give
- // it some time before launching other processes. Results in a
- // visually more appealing startup.
- for (uint i = 0; i < wmCommands.count(); i++)
- startApplication( wmCommands[i] );
- if ((showFancyLogin) && (!startupNotifierIPDlg)) {
- startupNotifierIPDlg = KSMStartupIPDlg::showStartupIP();
- }
- TQTimer::singleShot( 4000, this, TQT_SLOT( autoStart0() ) );
- } else {
- if ((showFancyLogin) && (!startupNotifierIPDlg)) {
- startupNotifierIPDlg = KSMStartupIPDlg::showStartupIP();
+ // find all commands to launch the wm in the session
+ TQValueList<QStringList> wmStartCommands;
+ if ( !wm.isEmpty() ) {
+ for ( int i = 1; i <= count; i++ ) {
+ TQString n = TQString::number(i);
+ // special hack for it, both kde3(=native) and kde4 kwin have the same program,
+ // but the command for kde4 kwin starts with the kde4 wrapper
+ if( config->readEntry( TQString("program")+n ) == "kwin" ) {
+ TQStringList command = config->readListEntry( TQString("restartCommand")+n );
+ if( wmCommands.count() > 1 && wmCommands[ 0 ].endsWith( "kde4" )
+ && command.count() > 1 && command[ 0 ].endsWith( "kde4" )) {
+ wmStartCommands << command; // kde4 wanted, kde4 found
+ } else if(!( wmCommands.count() > 1 && wmCommands[ 0 ].endsWith( "kde4" ))
+ && !( command.count() > 1 && command[ 0 ].endsWith( "kde4" ))) {
+ wmStartCommands << command; // native wanted, native found
+ }
+ } else if ( wm == config->readEntry( TQString("program")+n ) ) {
+ wmStartCommands << config->readListEntry( TQString("restartCommand")+n );
+ }
}
- autoStart0();
+ }
+ if( wmStartCommands.isEmpty()) { // otherwise use the configured default
+ wmStartCommands << wmCommands;
}
+ launchWM( wmStartCommands );
}
/*!
@@ -180,18 +177,57 @@
"autoStart1Done()", true);
connectDCOPSignal( launcher, launcher, "autoStart2Done()",
"autoStart2Done()", true);
- startApplication( wm );
+ launchWM( TQValueList< TQStringList >() << wmCommands );
if ((showFancyLogin) && (!startupNotifierIPDlg)) {
startupNotifierIPDlg = KSMStartupIPDlg::showStartupIP();
}
+}
+
+void KSMServer::launchWM( const QValueList< QStringList >& wmStartCommands )
+{
+ assert( state == LaunchingWM );
+
+ // when we have a window manager, we start it first and give
+ // it some time before launching other processes. Results in a
+ // visually more appealing startup.
+ wmProcess = startApplication( wmStartCommands[ 0 ] );
+ connect( wmProcess, TQT_SIGNAL( processExited( KProcess* )), TQT_SLOT( wmProcessChange()));
+ // there can be possibly more wm's (because of forking for multihead),
+ // but in such case care only about the process of the first one
+ for (unsigned int i = 1; i < wmStartCommands.count(); i++) {
+ startApplication( wmStartCommands[i] );
+ }
TQTimer::singleShot( 4000, this, TQT_SLOT( autoStart0() ) );
}
void KSMServer::clientSetProgram( KSMClient* client )
{
- if ( !wm.isEmpty() && client->program() == wm )
+ if ( client->program() == wm ) {
autoStart0();
+ }
+}
+
+void KSMServer::wmProcessChange()
+{
+ if( state != LaunchingWM )
+ { // don't care about the process when not in the wm-launching state anymore
+ wmProcess = NULL;
+ return;
+ }
+ if( !wmProcess->isRunning())
+ { // wm failed to launch for some reason, go with kwin instead
+ kdWarning( 1218 ) << "Window manager '" << wm << "' failed to launch" << endl;
+ if( wm == "kwin" ) {
+ return; // uhoh, kwin itself failed
+ }
+ kdDebug( 1218 ) << "Launching KWin" << endl;
+ wm = "kwin";
+ wmCommands = ( TQStringList() << "kwin" );
+ // launch it
+ launchWM( TQValueList< TQStringList >() << wmCommands );
+ return;
+ }
}
void KSMServer::autoStart0()
--- ./ksmserver/server.h.ORI 2013-05-08 20:16:35.950487652 +0200
+++ ./ksmserver/server.h 2013-05-08 20:19:49.069692796 +0200
@@ -30,6 +30,8 @@
#define SESSION_PREVIOUS_LOGOUT "saved at previous logout"
#define SESSION_BY_USER "saved by user"
+class KProcess;
+
typedef TQValueList<TQCString> QCStringList;
class KSMListener;
class KSMConnection;
@@ -98,6 +100,8 @@
KApplication::ShutdownType sdtype,
KApplication::ShutdownMode sdmode );
+ void launchWM( const TQValueList< TQStringList >& wmStartCommands );
+
public slots:
void cleanUp();
@@ -120,6 +124,7 @@
void autoStart2();
void tryRestoreNext();
void startupSuspendTimeout();
+ void wmProcessChange();
private:
void handlePendingInteractions();
@@ -138,7 +143,7 @@
void startProtection();
void endProtection();
- void startApplication( TQStringList command,
+ KProcess* startApplication( TQStringList command,
const TQString& clientMachine = TQString::null,
const TQString& userId = TQString::null );
void executeCommand( const TQStringList& command );
@@ -149,6 +154,7 @@
bool isCM( const TQString& program ) const;
bool isNotifier( const KSMClient* client ) const;
bool isNotifier( const TQString& program ) const;
+ void selectWm( const TQString& kdewm );
bool defaultSession() const; // empty session
void setupXIOErrorHandler();
@@ -231,6 +237,8 @@
TQString lastIdStarted;
TQStringList excludeApps;
+ TQStringList wmCommands;
+ KProcess* wmProcess;
WindowMap legacyWindows;
int initialClientCount;
--- ./ksmserver/CMakeLists.txt.ORI 2013-05-08 20:21:11.420074784 +0200
+++ ./ksmserver/CMakeLists.txt 2013-05-08 20:22:16.602794164 +0200
@@ -28,6 +28,8 @@
${DBUS_TQT_LIBRARY_DIRS}
)
+add_subdirectory( windowmanagers )
+
##### other data ################################
--- ./ksmserver/main.cpp.ori 2013-05-08 20:22:52.841082235 +0200
+++ ./ksmserver/main.cpp 2013-05-08 20:23:11.717711399 +0200
@@ -203,8 +203,6 @@
}
TQCString wm = args->getOption("windowmanager");
- if ( wm.isEmpty() )
- wm = "kwin";
bool only_local = args->isSet("local");
#ifndef HAVE__ICETRANSNOLISTEN
--- ./ksmserver/server.cpp.ori 2013-05-08 20:24:02.870706512 +0200
+++ ./ksmserver/server.cpp 2013-05-08 20:35:02.808745909 +0200
@@ -77,6 +77,8 @@
#include <kprocess.h>
#include <dcopclient.h>
#include <dcopref.h>
+#include <kdesktopfile.h>
+#include <kshell.h>
#include "server.h"
#include "global.h"
@@ -98,11 +100,11 @@
/*! Utility function to execute a command on the local machine. Used
* to restart applications.
*/
-void KSMServer::startApplication( TQStringList command, const TQString& clientMachine,
+KProcess* KSMServer::startApplication( TQStringList command, const TQString& clientMachine,
const TQString& userId )
{
if ( command.isEmpty() )
- return;
+ return NULL;
if ( !userId.isEmpty()) {
struct passwd* pw = getpwuid( getuid());
if( pw != NULL && userId != TQString::fromLocal8Bit( pw->pw_name )) {
@@ -116,12 +118,13 @@
command.prepend( clientMachine );
command.prepend( xonCommand ); // "xon" by default
}
- int n = command.count();
- TQCString app = command[0].latin1();
- TQValueList<TQCString> argList;
- for ( int i=1; i < n; i++)
- argList.append( TQCString(command[i].latin1()));
- DCOPRef( launcher ).send( "exec_blind", app, DCOPArg( argList, "TQValueList<TQCString>" ) );
+ KProcess* process = new KProcess( this );
+ *process << command;
+ // make it auto-delete
+ connect( process, TQT_SIGNAL( processExited( KProcess* )), process, TQT_SLOT( deleteLater()));
+ process->start();
+ return process;
+
}
/*! Utility function to execute a command on the local machine. Used
@@ -579,7 +582,7 @@
#endif
KSMServer::KSMServer( const TQString& windowManager, bool _only_local )
- : DCOPObject("ksmserver"), sessionGroup( "" ), startupNotifierIPDlg(0), shutdownNotifierIPDlg(0)
+ : DCOPObject("ksmserver"), sessionGroup( "" ), startupNotifierIPDlg(0), shutdownNotifierIPDlg(0), wmProcess( NULL )
{
the_server = this;
clean = false;
@@ -595,7 +598,10 @@
config->setGroup("General" );
clientInteracting = 0;
xonCommand = config->readEntry( "xonCommand", "xon" );
-
+
+ KGlobal::dirs()->addResourceType( "windowmanagers", "share/apps/ksmserver/windowmanagers" );
+ selectWm( windowManager );
+
connect( &knotifyTimeoutTimer, TQT_SIGNAL( timeout()), TQT_SLOT( knotifyTimeout()));
connect( &startupSuspendTimeoutTimer, TQT_SIGNAL( timeout()), TQT_SLOT( startupSuspendTimeout()));
connect( &pendingShutdown, TQT_SIGNAL( timeout()), TQT_SLOT( pendingShutdownTimeout()));
@@ -851,15 +857,15 @@
config->setGroup( sessionGroup );
count = 0;
- if ( !wm.isEmpty() ) {
- // put the wm first
- for ( KSMClient* c = clients.first(); c; c = clients.next() )
- if ( c->program() == wm ) {
- clients.prepend( clients.take() );
- break;
- }
+ // put the wm first
+ for ( KSMClient* c = clients.first(); c; c = clients.next() ) {
+ if ( c->program() == wm ) {
+ clients.prepend( clients.take() );
+ break;
+ }
}
+
for ( KSMClient* c = clients.first(); c; c = clients.next() ) {
int restartHint = c->restartStyleHint();
if (restartHint == SmRestartNever)
@@ -909,11 +915,7 @@
bool KSMServer::isWM( const TQString& program ) const
{
- // KWin relies on ksmserver's special treatment in phase1,
- // therefore make sure it's recognized even if ksmserver
- // was initially started with different WM, and kwin replaced
- // it later
- return ((program == wm) || (program == "kwin"));
+ return program == wm;
}
bool KSMServer::isCM( const KSMClient* client ) const
@@ -941,3 +943,62 @@
{
return sessionGroup.isEmpty();
}
+
+static bool noDisplay( KDesktopFile& f )
+{
+ KConfigGroup gr( &f, "Desktop Entry" );
+ if (gr.readBoolEntry("NoDisplay", false)) {
+ return true;
+ }
+ if (gr.hasKey("OnlyShowIn")) {
+ if (!gr.readListEntry("OnlyShowIn", ';').contains("KDE"))
+ return true;
+ }
+ if (gr.hasKey("NotShowIn")) {
+ if (gr.readListEntry("NotShowIn", ';').contains("KDE"))
+ return true;
+ }
+ return false;
+}
+
+// selection logic:
+// - $KDEWM is set - use that
+// - a wm is selected using the kcm - use that
+// - if that fails, just use KWin
+void KSMServer::selectWm( const TQString& kdewm )
+{
+ wm = "kwin"; // defaults
+ wmCommands = ( TQStringList() << "kwin" );
+ if( !kdewm.isEmpty())
+ {
+ wmCommands = ( TQStringList() << kdewm );
+ wm = kdewm;
+ return;
+ }
+ KConfigGroup config(KGlobal::config(), "General");
+ TQString cfgwm = config.readEntry( "windowManager", "kwin" );
+ KDesktopFile file( cfgwm + ".desktop", true, "windowmanagers" );
+ if( noDisplay( file )) {
+ return;
+ }
+ if( !file.tryExec()) {
+ return;
+ }
+ file.setDesktopGroup();
+ TQString testexec = file.readEntry( "X-KDE-WindowManagerTestExec" );
+ if( !testexec.isEmpty())
+ {
+ int ret = system( TQFile::encodeName( testexec ));
+ if( !WIFEXITED( ret ) || WEXITSTATUS( ret ) != 0 ) {
+ return;
+ }
+ }
+ TQStringList cfgWmCommands = KShell::splitArgs( file.readEntry( "Exec" ));
+ if( cfgWmCommands.isEmpty()) {
+ return;
+ }
+ TQString smname = file.readEntry( "X-KDE-WindowManagerId" );
+ // ok
+ wm = smname.isEmpty() ? cfgwm : smname;
+ wmCommands = cfgWmCommands;
+}
Index: ksmserver/windowmanagers/CMakeLists.txt
===================================================================
--- /dev/null
+++ ./ksmserver/windowmanagers/CMakeLists.txt
@@ -0,0 +1,4 @@
+install(
+ FILES compiz-custom.desktop compiz.desktop kwin4.desktop metacity.desktop openbox.desktop
+ DESTINATION ${DATA_INSTALL_DIR}/ksmserver/windowmanagers
+)
Index: ksmserver/windowmanagers/openbox.desktop
===================================================================
--- /dev/null
+++ ./ksmserver/windowmanagers/openbox.desktop
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Name=Openbox
+Exec=openbox
+TryExec=openbox
+
Index: ksmserver/windowmanagers/compiz.desktop
===================================================================
--- /dev/null
+++ ./ksmserver/windowmanagers/compiz.desktop
@@ -0,0 +1,4 @@
+[Desktop Entry]
+Name=Compiz
+Exec=compiz ccp
+TryExec=compiz
Index: ksmserver/windowmanagers/compiz-custom.desktop
===================================================================
--- /dev/null
+++ ./ksmserver/windowmanagers/compiz-custom.desktop
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Name=Compiz custom (create wrapper script 'compiz-kde-launcher' to launch it)
+Exec=compiz-kde-launcher
+TryExec=compiz
+X-KDE-WindowManagerId=compiz
Index: ksmserver/windowmanagers/kwin4.desktop
===================================================================
--- /dev/null
+++ ./ksmserver/windowmanagers/kwin4.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Name=KWin (KDE4)
+Exec=kde4 /usr/bin/kwin
+TryExec=/usr/bin/kwin
+X-KDE-WindowManagerId=kwin
+
Index: ksmserver/windowmanagers/metacity.desktop
===================================================================
--- /dev/null
+++ ./ksmserver/windowmanagers/metacity.desktop
@@ -0,0 +1,4 @@
+[Desktop Entry]
+Name=Metacity (GNOME)
+Exec=metacity
+TryExec=metacity
--- ./kcontrol/smserver/smserverconfigdlg.ui.ori 2013-05-08 20:42:59.226232919 +0200
+++ ./kcontrol/smserver/smserverconfigdlg.ui 2013-05-08 20:45:53.648749758 +0200
@@ -1,4 +1,4 @@
-<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
<class>SMServerConfigDlg</class>
<widget class="TQWidget">
<property name="name">
@@ -8,8 +8,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>325</width>
- <height>366</height>
+ <width>334</width>
+ <height>476</height>
</rect>
</property>
<property name="caption">
@@ -173,6 +173,24 @@
</widget>
</vbox>
</widget>
+ <widget class="TQGroupBox">
+ <property name="name">
+ <cstring>windowManagerGroup</cstring>
+ </property>
+ <property name="title">
+ <string>Window Manager</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="TQComboBox">
+ <property name="name">
+ <cstring>windowManagerCombo</cstring>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
<widget class="TQButtonGroup">
<property name="name">
<cstring>advancedGroup</cstring>
@@ -279,6 +297,12 @@
<receiver>SMServerConfigDlg</receiver>
<slot>configChanged()</slot>
</connection>
+ <connection>
+ <sender>windowManagerCombo</sender>
+ <signal>activated(int)</signal>
+ <receiver>SMServerConfigDlg</receiver>
+ <slot>configChanged()</slot>
+ </connection>
</connections>
<includes>
<include location="global" impldecl="in implementation">kdialog.h</include>
--- ./kcontrol/smserver/kcmsmserver.cpp.ORI 2013-05-08 20:47:16.855088794 +0200
+++ ./kcontrol/smserver/kcmsmserver.cpp 2013-05-08 20:57:27.009783724 +0200
@@ -22,6 +22,8 @@
#include <tqcheckbox.h>
#include <tqlayout.h>
#include <tqradiobutton.h>
+#include <tqcombobox.h>
+#include <tqfile.h>
#include <dcopclient.h>
@@ -29,6 +31,12 @@
#include <kconfig.h>
#include <kgenericfactory.h>
#include <klineedit.h>
+#include <kstandarddirs.h>
+#include <tqregexp.h>
+#include <kdesktopfile.h>
+#include <kdebug.h>
+#include <kprocess.h>
+#include <kmessagebox.h>
#include "kcmsmserver.h"
#include "smserverconfigimpl.h"
@@ -52,6 +60,7 @@
dialog->show();
topLayout->add(dialog);
+ KGlobal::dirs()->addResourceType( "windowmanagers", "share/apps/ksmserver/windowmanagers" );
load();
}
@@ -90,6 +99,7 @@
dialog->logoutRadio->setChecked(true);
break;
}
+ loadWMs(c->readEntry("windowManager", "kwin"));
dialog->excludeLineedit->setText( c->readEntry("excludeApps"));
c->setGroup("Logout");
@@ -121,6 +131,7 @@
dialog->rebootRadio->isChecked() ?
int(KApplication::ShutdownTypeReboot) :
int(KApplication::ShutdownTypeNone));
+ c->writeEntry("windowManager", currentWM());
c->writeEntry("excludeApps", dialog->excludeLineedit->text());
c->setGroup("Logout");
c->writeEntry( "showLogoutStatusDlg", dialog->showLogoutStatusDialog->isChecked());
@@ -131,6 +142,12 @@
// update the k menu if necessary
TQByteArray data;
kapp->dcopClient()->send( "kicker", "kicker", "configure()", data );
+ if( oldwm != currentWM())
+ { // TODO switch it already in the session instead and tell ksmserver
+ KMessageBox::information( this,
+ i18n( "The new window manager will be used when TDE is started the next time." ),
+ i18n( "Window manager change" ), "windowmanagerchange" );
+ }
}
void SMServerConfig::defaults()
@@ -138,5 +155,79 @@
load( true );
}
+static bool noDisplay( KDesktopFile& f )
+{
+ KConfigGroup gr( &f, "Desktop Entry" );
+ if (gr.readBoolEntry("NoDisplay", false)) {
+ return true;
+ }
+ if (gr.hasKey("OnlyShowIn")) {
+ if (!gr.readListEntry("OnlyShowIn", ';').contains("KDE"))
+ return true;
+ }
+ if (gr.hasKey("NotShowIn")) {
+ if (gr.readListEntry("NotShowIn", ';').contains("KDE"))
+ return true;
+ }
+ return false;
+}
+
+void SMServerConfig::loadWMs( const TQString& current )
+{
+ TQString kwinname = i18n( "KWin (KDE default)" );
+ dialog->windowManagerCombo->insertItem( kwinname );
+ dialog->windowManagerCombo->setCurrentItem( 0 );
+ wms[ kwinname ] = "kwin";
+ oldwm = "kwin";
+ TQStringList list = KGlobal::dirs()->findAllResources( "windowmanagers", TQString(), false, true );
+ TQRegExp reg( ".*/([^/\\.]*)\\.[^/\\.]*" );
+ for( TQStringList::ConstIterator it = list.begin();
+ it != list.end();
+ ++it )
+ {
+ TQString wmfile = *it;
+ KDesktopFile file( wmfile );
+ if( noDisplay( file )) {
+ continue;
+ }
+ if( !file.tryExec()) {
+ continue;
+ }
+ file.setDesktopGroup();
+ TQString testexec = file.readEntry( "X-KDE-WindowManagerTestExec" );
+ if( !testexec.isEmpty())
+ {
+ int ret = system( TQFile::encodeName( testexec ));
+ if( !WIFEXITED( ret ) || WEXITSTATUS( ret ) != 0 ) {
+ continue;
+ }
+ }
+ TQString name = file.readName();
+ if( name.isEmpty()) {
+ continue;
+ }
+ if( !reg.exactMatch( wmfile )) {
+ continue;
+ }
+ TQString wm = reg.cap( 1 );
+ if( wms.values().contains( wm )) {
+ continue;
+ }
+ wms[ name ] = wm;
+ dialog->windowManagerCombo->insertItem( name );
+ if( wms[ name ] == current ) // make it selected
+ {
+ dialog->windowManagerCombo->setCurrentItem( dialog->windowManagerCombo->count() - 1 );
+ oldwm = wm;
+ }
+ }
+}
+
+TQString SMServerConfig::currentWM() const
+{
+ return wms[ dialog->windowManagerCombo->currentText() ];
+}
+
+
#include "kcmsmserver.moc"
--- ./kcontrol/smserver/kcmsmserver.h.ORI 2013-05-08 20:58:45.880171397 +0200
+++ ./kcontrol/smserver/kcmsmserver.h 2013-05-08 20:59:21.030453176 +0200
@@ -40,6 +40,10 @@
private:
SMServerConfigImpl* dialog;
+ void loadWMs( const TQString& current );
+ TQString currentWM() const;
+ TQMap< TQString, TQString > wms; // i18n text -> internal name
+ TQString oldwm; // the original value
};

@ -1,152 +0,0 @@
--- ./kioslave/media/libmediacommon/medium.cpp.ori 2013-05-08 22:57:09.317384423 +0200
+++ ./kioslave/media/libmediacommon/medium.cpp 2013-05-08 22:57:36.730837358 +0200
@@ -44,6 +44,7 @@
loadUserLabel();
m_halmounted = false;
+ m_isHotplug = false;
}
Medium::Medium()
@@ -65,6 +66,7 @@
m_properties+= TQString::null; /* CLEAR_DEVICE_UDI */
m_halmounted = false;
+ m_isHotplug = false;
}
const Medium Medium::create(const TQStringList &properties)
--- ./kioslave/media/libmediacommon/medium.h.ORI 2013-05-08 22:59:10.772959829 +0200
+++ ./kioslave/media/libmediacommon/medium.h 2013-05-08 22:59:56.602044404 +0200
@@ -92,6 +92,9 @@
void setHalMounted(bool flag) const { m_halmounted = flag; }
bool halMounted() const { return m_halmounted; }
+ void setIsHotplug( bool state ) { m_isHotplug = state; }
+ bool isHotplug() const { return m_isHotplug; }
+
//private:
Medium();
@@ -100,6 +103,8 @@
TQStringList m_properties;
mutable bool m_halmounted;
+
+ bool m_isHotplug;
friend class TQValueListNode<const Medium>;
};
--- ./kioslave/media/mediamanager/mediamanager.cpp.ori 2013-05-08 23:00:39.673183801 +0200
+++ ./kioslave/media/mediamanager/mediamanager.cpp 2013-05-08 23:04:47.639224260 +0200
@@ -354,6 +354,57 @@
emit mediumChanged(name);
}
+TQString MediaManager::unmountAllSuspend()
+{
+ TQPtrList<Medium> list = m_mediaList.list();
+
+ TQPtrList<Medium>::const_iterator it = list.begin();
+ TQPtrList<Medium>::const_iterator end = list.end();
+
+ TQString result;
+
+ for (; it!=end; ++it)
+ {
+ if ( (*it)->isMounted() && (*it)->isHotplug() )
+ {
+ TQString tmp = unmount( (*it)->id() );
+ if ( !tmp.isEmpty() ) { // umount failed
+ result = tmp;
+ } else {
+ m_suspendResumeMountList.append( (*it)->id() );
+ }
+ }
+ }
+
+ // return last error
+ return result;
+}
+
+TQString MediaManager::remountAllResume()
+{
+ TQString result;
+
+ for (TQStringList::const_iterator it = m_suspendResumeMountList.begin();
+ it != m_suspendResumeMountList.end();
+ ++it)
+ {
+ const Medium *m = m_mediaList.findById(*it);
+
+ if ( m && m->needMounting() )
+ {
+ TQString tmp = mount( *it );
+ if ( !tmp.isEmpty() ) { // mount failed
+ result = tmp;
+ }
+ }
+ }
+
+ m_suspendResumeMountList.clear();
+
+ // return last error
+ return result;
+}
+
extern "C" {
KDE_EXPORT KDEDModule *create_mediamanager(const TQCString &obj)
--- ./kioslave/media/mediamanager/mediamanager.h.ORI 2013-05-08 23:05:36.250251036 +0200
+++ ./kioslave/media/mediamanager/mediamanager.h 2013-05-08 23:07:27.650019601 +0200
@@ -60,6 +60,20 @@
bool removableUnplug(const TQString &devNode);
bool removableCamera(const TQString &devNode);
+ /**
+ * Unmount manually all partitions when going to suspend
+ *
+ * @return last error if any
+ */
+ TQString unmountAllSuspend();
+
+ /**
+ * Remount previously unmounted partitions in unmountAllSuspend()
+ *
+ * @return last error if any
+ */
+ TQString remountAllResume();
+
k_dcop_signals:
void mediumAdded(const TQString &name, bool allowNotification);
void mediumRemoved(const TQString &name, bool allowNotification);
@@ -87,6 +101,8 @@
HALBackend *m_halbackend;
MediaDirNotify m_dirNotify;
FstabBackend *m_fstabbackend;
+ TQStringList m_suspendResumeMountList;
+
};
#endif
--- ./kioslave/media/mediamanager/halbackend.cpp.ori 2013-05-08 23:08:12.196126863 +0200
+++ ./kioslave/media/mediamanager/halbackend.cpp 2013-05-08 23:08:51.096347073 +0200
@@ -541,6 +541,7 @@
libhal_volume_is_mounted(halVolume) ); /* Mounted ? */
}
+ medium->setIsHotplug( libhal_drive_is_hotpluggable(halDrive) );
char* name = libhal_volume_policy_compute_display_name(halDrive, halVolume, m_halStoragePolicy);
TQString volume_name = TQString::fromUtf8(name);
--- ./kioslave/media/mediamanager/halbackend.h.ORI 2013-05-08 23:09:35.761451488 +0200
+++ ./kioslave/media/mediamanager/halbackend.h 2013-05-08 23:10:21.608531952 +0200
@@ -89,6 +89,8 @@
TQString decrypt(const TQString &id, const TQString &password);
TQString undecrypt(const TQString &id);
+ static bool isHotplug( const TQString & id );
+
private:
/**
* Append a device in the media list. This function will check if the device

@ -1,186 +0,0 @@
--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/screensaver/scrnsave.h.ORI 2013-05-14 22:12:18.159235590 +0200
+++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/screensaver/scrnsave.h 2013-05-14 22:12:56.657422259 +0200
@@ -58,6 +58,7 @@
void slotLock( bool );
void slotDelaySaverStart( bool );
void slotUseTSAK( bool );
+ void slotVibrateUnlock( bool );
void slotUseUnmanagedLockWindows( bool );
void slotHideActiveWindowsFromSaver( bool );
void processLockouts();
@@ -101,6 +102,7 @@
TQGroupBox *mSettingsGroup;
TQCheckBox *mDelaySaverStartCheckBox;
TQCheckBox *mUseTSAKCheckBox;
+ TQCheckBox *mVibrateUnlockCheckBox;
TQCheckBox *mUseUnmanagedLockWindowsCheckBox;
TQCheckBox *mHideActiveWindowsFromSaverCheckBox;
@@ -119,6 +121,7 @@
bool mImmutable;
bool mDelaySaverStart;
bool mUseTSAK;
+ bool mVibrateUnlock;
bool mUseUnmanagedLockWindows;
bool mHideActiveWindowsFromSaver;
--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/screensaver/scrnsave.cpp.vibrate_dialog 2013-04-26 22:15:23.000000000 +0200
+++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kcontrol/screensaver/scrnsave.cpp 2013-05-14 22:24:37.354375502 +0200
@@ -270,6 +270,13 @@
settingsGroupLayout->addWidget(mHideActiveWindowsFromSaverCheckBox, 3, 1);
TQWhatsThis::add( mHideActiveWindowsFromSaverCheckBox, i18n("Hide all active windows from the screen saver and use the desktop background as the screen saver input.") );
+ mVibrateUnlockCheckBox = new TQCheckBox( i18n("&Vibrate unlock dialog box on failure"), mSettingsGroup );
+ mVibrateUnlockCheckBox->setEnabled( true );
+ mVibrateUnlockCheckBox->setChecked( mVibrateUnlock );
+ connect( mVibrateUnlockCheckBox, TQT_SIGNAL( toggled( bool ) ), this, TQT_SLOT( slotVibrateUnlock( bool ) ) );
+ settingsGroupLayout->addWidget(mVibrateUnlockCheckBox, 4, 1);
+ TQWhatsThis::add( mVibrateUnlockCheckBox, i18n("Makes the unlock dialog box vibrate when entering an incorrect password.") );
+
// right column
TQBoxLayout* rightColumnLayout = new TQVBoxLayout(topLayout, KDialog::spacingHint());
@@ -429,6 +436,7 @@
mLock = config->readBoolEntry("Lock", false);
mDelaySaverStart = config->readBoolEntry("DelaySaverStart", true);
mUseTSAK = config->readBoolEntry("UseTDESAK", true);
+ mVibrateUnlock = config->readBoolEntry("VibrateUnlock", true);
mUseUnmanagedLockWindows = config->readBoolEntry("UseUnmanagedLockWindows", false);
mHideActiveWindowsFromSaver = config->readBoolEntry("HideActiveWindowsFromSaver", true);
mSaver = config->readEntry("Saver");
@@ -481,6 +489,7 @@
config->writeEntry("Lock", mLock);
config->writeEntry("DelaySaverStart", mDelaySaverStart);
config->writeEntry("UseTDESAK", mUseTSAK);
+ config->writeEntry("VibrateUnlock", mVibrateUnlock);
config->writeEntry("UseUnmanagedLockWindows", mUseUnmanagedLockWindows);
config->writeEntry("HideActiveWindowsFromSaver", mHideActiveWindowsFromSaver);
@@ -688,10 +697,14 @@
mUseTSAKCheckBox->setChecked( false );
}
if (!mUseUnmanagedLockWindows) {
+ mVibrateUnlockCheckBox->setEnabled( true );
+ mVibrateUnlockCheckBox->setChecked( mVibrateUnlock );
mHideActiveWindowsFromSaverCheckBox->setEnabled( true );
mHideActiveWindowsFromSaverCheckBox->setChecked( mHideActiveWindowsFromSaver );
}
else {
+ mVibrateUnlockCheckBox->setEnabled( false );
+ mVibrateUnlockCheckBox->setChecked( false );
mHideActiveWindowsFromSaverCheckBox->setEnabled( false );
mHideActiveWindowsFromSaverCheckBox->setChecked( false );
}
@@ -936,6 +949,16 @@
processLockouts();
mChanged = true;
emit changed(true);
+}
+
+//---------------------------------------------------------------------------
+//
+void KScreenSaver::slotVibrateUnlock( bool u )
+{
+ if (mVibrateUnlockCheckBox->isEnabled()) mVibrateUnlock = u;
+ processLockouts();
+ mChanged = true;
+ emit changed(true);
}
//---------------------------------------------------------------------------
--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kdesktop/lock/lockdlg.h.vibrate_dialog 2013-01-09 02:12:13.000000000 +0100
+++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kdesktop/lock/lockdlg.h 2013-05-14 22:42:50.562878532 +0200
@@ -60,6 +60,7 @@
void slotOK();
void layoutClicked();
void slotActivity();
+ void moveTimerDone();
protected slots:
virtual void reject();
@@ -79,6 +80,8 @@
void handleVerify();
void reapVerify();
void cantCheck();
+ void movedialog( int _move );
+ void badPasswordLogin();
GreeterPluginHandle *mPlugin;
KGreeterPlugin *greet;
TQFrame *frame;
@@ -95,6 +98,8 @@
int sPid, sFd;
TQListView *lv;
TQDateTime m_lockStartDT;
+ bool waitMoveDialog;
+ bool VibrateUnlock;
};
#endif
--- trinity-tdebase-3.5.13.2~pre102+43d29f86/kdesktop/lock/lockdlg.cc.vibrate_dialog 2013-01-09 02:12:13.000000000 +0100
+++ trinity-tdebase-3.5.13.2~pre102+43d29f86/kdesktop/lock/lockdlg.cc 2013-05-14 22:42:12.809621715 +0200
@@ -55,6 +55,7 @@
#include <X11/keysym.h>
#include <X11/Xatom.h>
#include <fixx11h.h>
+#include <kapplication.h>
#ifndef AF_LOCAL
# define AF_LOCAL AF_UNIX
@@ -246,6 +247,11 @@
mLayoutButton->hide(); // no kxkb running
}
capsLocked();
+
+ KConfig* config = new KConfig("kdesktoprc");
+ config->setGroup("ScreenSaver");
+ VibrateUnlock = config->readBoolEntry("VibrateUnlock", true);
+ delete config;
}
PasswordDlg::~PasswordDlg()
@@ -302,6 +308,37 @@
}
}
+void PasswordDlg::movedialog( int _move )
+{
+ waitMoveDialog = true;
+ this->move(pos().x()+_move, pos().y());
+ TQTimer::singleShot( 50, this, TQT_SLOT(moveTimerDone()) );
+ while (waitMoveDialog) {
+ kapp->processEvents();
+ }
+}
+
+void PasswordDlg::moveTimerDone()
+{
+ waitMoveDialog = false;
+}
+
+void PasswordDlg::badPasswordLogin()
+{
+ if ( VibrateUnlock && mUnlockingFailed )
+ {
+ for ( int i = 0 ; i<2 ; i++)
+ {
+ movedialog( 10 );
+ movedialog( -20 );
+ movedialog( 20 );
+ movedialog( -20 );
+ movedialog( 20 );
+ movedialog( -10 );
+ }
+ }
+}
+
//---------------------------------------------------------------------------
//
// Handle timer events.
@@ -437,6 +474,7 @@
ok->setEnabled(false);
cancel->setEnabled(false);
mNewSessButton->setEnabled( false );
+ badPasswordLogin();
return;
case AuthAbort:
return;

@ -90,56 +90,6 @@ Source8: tdm%{?dist}.pp
Source9: mgabutton.svg
%endif
# Patch party !
# Permanent patches, all TDE versions
## [tdebase/kdesktop] Modifies 'open terminal here' on desktop [RHEL/Fedora]
Patch1: kdebase-3.5.12-desktop-openterminalhere.patch
## [tdebase] Sets default Start Icon in 'kickerrc' [RHEL/Fedora]
Patch2: kdebase-3.5.13.1-startkde_icon.patch
## [tdebase/kcontrol] Adds FR translation for KCM ICC
Patch3: tdebase-3.5.13.2-displayconfig_translation.patch
## [tdebase/kicker] Adds default entries for Kickoff menu
Patch4: tdebase-3.5.13.2-kickoff_default_favs.patch
## [tdebase] Changes konsole default word separator
Patch5: tdebase-14.0.0-konsole_wordseps.patch
## [tdebase] Fix '%' caracter in hal volumes
Patch6: tdebase-3.5.13.2-fix_halbackend_slash.patch
# Permanent patches, this TDE version only
## [tdebase/kdm] Fix PID file is 'tdm.pid' instead of 'kdm.pid' (needed for openSUSE)
Patch11: kdebase-3.5.13.1-fix_tdm_pid_file.patch
## [kdebase/kdesu] Remove 'ignore' button on 'kdesu' dialog box [RHEL/Fedora]
Patch12: tdebase-3.5.13.2-kdesu-noignorebutton.patch
## [kdebase/applnk] Fix XDG menu to avoid KDE4 conflict
Patch13: tdebase-3.5.13.2-fix_xdg_menu.patch
## [kdebase/tdm] Fix USER_PATH variable in TDM
Patch14: tdebase-3.5.13.2-fix_tdm_user_path.patch
## [kdebase/Ksmserver] orward port KDE SVN r803253 to fix potential security hole [Commit #c383da9d]
Patch15: tdebase-3.5.13.2-fix_ice_security_hole.patch
# Patches from Mandriva
Patch101: tdebase-3.5.13.2-vibrate_dialog.patch
Patch102: tdebase-3.5.13.2-kcontrol_menu_entry.patch
Patch103: tdebase-3.5.13.2-kdesktop_crossfade.patch
Patch104: tdebase-3.5.13.2-kickoff_xdg_dirs.patch
Patch105: tdebase-3.5.13.2-suspend_unmount.patch
Patch106: tdebase-3.5.13.2-bookmark_global_copy.patch
### Specific patches for RHEL4 (should not go upstream)
## [tdebase] Fix build on RHEL4, detect old libraries without pkg file
Patch301: kdebase-3.5.13-fix_lib_detection.patch
## [tdebase] Do not build against DBUS-TQT, only DBUS and DBUS-QT
Patch302: kdebase-3.5.13.2-build_without_dbustqt.patch
## [tdebase] Do not build against ConsoleKit
Patch303: kdebase-3.5.13-build_without_consolekit.patch
## [tdebase] Add WITH_COMPOSITE option to CMakeLists.txt
Patch304: kdebase-3.5.13.2-add_disable_composite_option.patch
## [tdebase] Downgrade halbackend to support Hal 0.4
Patch305: kdebase-3.5.13-support_hal_04.patch
## [tdebase] Other(s) FTBFS ...
Patch306: kdebase-3.5.13-fix_rhel4_compilation.patch
### Distribution-specific settings ###
@ -3366,7 +3316,7 @@ Windows and Samba shares.
##########
%if 0%{?suse_version} || 0%{?pclinuxos}
%if 0%{?pclinuxos}
%debug_package
%endif
@ -3374,35 +3324,6 @@ Windows and Samba shares.
%prep
%setup -q -n %{name}-%{version}%{?preversion:~%{preversion}}
%patch1 -p1 -b .openterminalhere
%patch2 -p1 -b .startmenuicon
%patch3 -p1 -b .displayconfigtranslation
%patch4 -p1 -b .kickoffdefaultsfav
%patch5 -p1 -b .konsolewordseps
%patch6 -p1 -b .halbackend
%patch11 -p1 -b .tdmpid
%patch12 -p1 -b .kdesunoignorebutton
%patch13 -p1 -b .xdgmenu
%patch14 -p1 -b .tdmuserpath
%patch15 -p1 -b .iceauth
%patch101 -p1 -b .vibrate_dialog
%patch102 -p1 -b .kcontrol_menu_entry
%patch103 -p1 -b .kdesktop_crossfade
%patch104 -p1 -b .kickoff_xdg
%patch105 -p1 -b .suspend_unmount
%patch106 -p1 -b .bookmark_global_copy
%if 0%{?rhel} == 4
%patch301 -p1 -b .libdetect
%patch302 -p1 -b .dbustqt
%patch303 -p1 -b .consolekit
%patch304 -p1 -b .composite
#patch305 -p1 -b .hal04
%patch306 -p1 -b .rhel4
%endif
# Applies an optional distro-specific graphical theme
%if "%{?tde_bg}" != ""

Loading…
Cancel
Save