parent
d5d98e581c
commit
c5be5e13a1
@ -0,0 +1,139 @@
|
|||||||
|
commit 3c75231601fb35f0c91022abeee5117c81f70a62
|
||||||
|
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
Date: 1339293731 -0500
|
||||||
|
|
||||||
|
Add dynamic label support to kpassworddialog
|
||||||
|
|
||||||
|
diff --git a/kdeui/kpassdlg.cpp b/kdeui/kpassdlg.cpp
|
||||||
|
index a9625b8..489e14d 100644
|
||||||
|
--- ./kdeui/kpassdlg.cpp.orig 2011-08-11 04:30:26.000000000 +0200
|
||||||
|
+++ ./kdeui/kpassdlg.cpp 2012-06-19 20:10:16.766136524 +0200
|
||||||
|
@@ -32,6 +32,7 @@
|
||||||
|
#include <tqhbox.h>
|
||||||
|
#include <tqwhatsthis.h>
|
||||||
|
#include <tqptrdict.h>
|
||||||
|
+#include <tqtimer.h>
|
||||||
|
|
||||||
|
#include <kglobal.h>
|
||||||
|
#include <kdebug.h>
|
||||||
|
@@ -305,7 +306,7 @@
|
||||||
|
KPasswordDialog::KPasswordDialog(Types type, bool enableKeep, int extraBttn,
|
||||||
|
TQWidget *parent, const char *name)
|
||||||
|
: KDialogBase(parent, name, true, "", Ok|Cancel|extraBttn,
|
||||||
|
- Ok, true), m_Keep(enableKeep? 1 : 0), m_Type(type), d(new KPasswordDialogPrivate)
|
||||||
|
+ Ok, true), m_Keep(enableKeep? 1 : 0), m_keepWarnLbl(0), m_Type(type), d(new KPasswordDialogPrivate)
|
||||||
|
{
|
||||||
|
d->iconName = "password";
|
||||||
|
init();
|
||||||
|
@@ -314,7 +315,7 @@
|
||||||
|
KPasswordDialog::KPasswordDialog(Types type, bool enableKeep, int extraBttn, const TQString& icon,
|
||||||
|
TQWidget *parent, const char *name )
|
||||||
|
: KDialogBase(parent, name, true, "", Ok|Cancel|extraBttn,
|
||||||
|
- Ok, true), m_Keep(enableKeep? 1 : 0), m_Type(type), d(new KPasswordDialogPrivate)
|
||||||
|
+ Ok, true), m_Keep(enableKeep? 1 : 0), m_keepWarnLbl(0), m_Type(type), d(new KPasswordDialogPrivate)
|
||||||
|
{
|
||||||
|
if ( icon.stripWhiteSpace().isEmpty() )
|
||||||
|
d->iconName = "password";
|
||||||
|
@@ -326,7 +327,7 @@
|
||||||
|
KPasswordDialog::KPasswordDialog(int type, TQString prompt, bool enableKeep,
|
||||||
|
int extraBttn)
|
||||||
|
: KDialogBase(0L, "Password Dialog", true, "", Ok|Cancel|extraBttn,
|
||||||
|
- Ok, true), m_Keep(enableKeep? 1 : 0), m_Type(type), d(new KPasswordDialogPrivate)
|
||||||
|
+ Ok, true), m_Keep(enableKeep? 1 : 0), m_keepWarnLbl(0), m_Type(type), d(new KPasswordDialogPrivate)
|
||||||
|
{
|
||||||
|
d->iconName = "password";
|
||||||
|
init();
|
||||||
|
@@ -393,12 +394,20 @@
|
||||||
|
m_pGrid->setRowStretch(8, 12);
|
||||||
|
TQCheckBox* const cb = new TQCheckBox(i18n("&Keep password"), m_pMain);
|
||||||
|
cb->setFixedSize(cb->tqsizeHint());
|
||||||
|
- if (m_Keep > 1)
|
||||||
|
+ m_keepWarnLbl = new TQLabel(m_pMain);
|
||||||
|
+ m_keepWarnLbl->setAlignment(AlignLeft|AlignVCenter|WordBreak);
|
||||||
|
+ if (m_Keep > 1) {
|
||||||
|
cb->setChecked(true);
|
||||||
|
- else
|
||||||
|
+ m_keepWarnLbl->show();
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
m_Keep = 0;
|
||||||
|
+ m_keepWarnLbl->hide();
|
||||||
|
+ }
|
||||||
|
connect(cb, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotKeep(bool)));
|
||||||
|
m_pGrid->addWidget(cb, 9, 2, (TQ_Alignment)(AlignLeft|AlignVCenter));
|
||||||
|
+// m_pGrid->addWidget(m_keepWarnLbl, 13, 2, (TQ_Alignment)(AlignLeft|AlignVCenter));
|
||||||
|
+ m_pGrid->addMultiCellWidget(m_keepWarnLbl, 13, 13, 0, 3);
|
||||||
|
} else if (m_Type == NewPassword) {
|
||||||
|
m_pGrid->addRowSpacing(8, 10);
|
||||||
|
lbl = new TQLabel(m_pMain);
|
||||||
|
@@ -475,6 +484,13 @@
|
||||||
|
m_pHelpLbl->setFixedSize(275, m_pHelpLbl->heightForWidth(275));
|
||||||
|
}
|
||||||
|
|
||||||
|
+void KPasswordDialog::setKeepWarning(TQString warn)
|
||||||
|
+{
|
||||||
|
+ if (m_keepWarnLbl) {
|
||||||
|
+ m_keepWarnLbl->setText(warn);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
|
||||||
|
TQString KPasswordDialog::prompt() const
|
||||||
|
|
||||||
|
@@ -550,9 +566,24 @@
|
||||||
|
|
||||||
|
void KPasswordDialog::slotKeep(bool keep)
|
||||||
|
{
|
||||||
|
+ if (m_keepWarnLbl->text() != "") {
|
||||||
|
+ if (keep) {
|
||||||
|
+ m_keepWarnLbl->show();
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ m_keepWarnLbl->hide();
|
||||||
|
+ }
|
||||||
|
+ TQTimer::singleShot(0, this, SLOT(slotLayout()));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
m_Keep = keep;
|
||||||
|
}
|
||||||
|
|
||||||
|
+void KPasswordDialog::slotLayout()
|
||||||
|
+{
|
||||||
|
+ resize(sizeHint());
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
|
||||||
|
// static . antlarr: KDE 4: Make it const TQString & prompt
|
||||||
|
int KPasswordDialog::getPassword(TQCString &password, TQString prompt,
|
||||||
|
diff --git a/kdeui/kpassdlg.h b/kdeui/kpassdlg.h
|
||||||
|
index de83bb3..2d124b0 100644
|
||||||
|
--- a/kdeui/kpassdlg.h
|
||||||
|
+++ b/kdeui/kpassdlg.h
|
||||||
|
@@ -246,6 +246,11 @@ public:
|
||||||
|
TQString prompt() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
+ * Sets the text to be dynamically displayed when the keep checkbox is checked
|
||||||
|
+ */
|
||||||
|
+ void setKeepWarning(TQString warn);
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
* Adds a line of information to the dialog.
|
||||||
|
*/
|
||||||
|
void addLine(TQString key, TQString value);
|
||||||
|
@@ -380,6 +385,7 @@ protected slots:
|
||||||
|
void slotOk();
|
||||||
|
void slotCancel();
|
||||||
|
void slotKeep(bool);
|
||||||
|
+ void slotLayout();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
@@ -399,6 +405,7 @@ private:
|
||||||
|
|
||||||
|
int m_Keep, m_Type, m_Row;
|
||||||
|
TQLabel *m_pHelpLbl;
|
||||||
|
+ TQLabel *m_keepWarnLbl;
|
||||||
|
TQGridLayout *m_pGrid;
|
||||||
|
TQWidget *m_pMain;
|
||||||
|
KPasswordEdit *m_pEdit, *m_pEdit2;
|
@ -0,0 +1,248 @@
|
|||||||
|
commit d3a9d56143cf668c7d29b26a324a424d02036371
|
||||||
|
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
Date: 1337109016 -0500
|
||||||
|
|
||||||
|
Add the ability to force read-only configuration file access in a TDE application
|
||||||
|
Force kde-config to use read-only access
|
||||||
|
This closes Bug 293
|
||||||
|
|
||||||
|
diff --git a/kdecore/kconfigbackend.cpp b/kdecore/kconfigbackend.cpp
|
||||||
|
index 9ee9dd6..4ad0e5f 100644
|
||||||
|
--- a/kdecore/kconfigbackend.cpp
|
||||||
|
+++ b/kdecore/kconfigbackend.cpp
|
||||||
|
@@ -247,17 +247,22 @@ void KConfigBackEnd::changeFileName(const TQString &_fileName,
|
||||||
|
mfileName = _fileName;
|
||||||
|
resType = _resType;
|
||||||
|
useKDEGlobals = _useKDEGlobals;
|
||||||
|
- if (mfileName.isEmpty())
|
||||||
|
+ if (mfileName.isEmpty()) {
|
||||||
|
mLocalFileName = TQString::null;
|
||||||
|
- else if (!TQDir::isRelativePath(mfileName))
|
||||||
|
+ }
|
||||||
|
+ else if (!TQDir::isRelativePath(mfileName)) {
|
||||||
|
mLocalFileName = mfileName;
|
||||||
|
- else
|
||||||
|
- mLocalFileName = KGlobal::dirs()->saveLocation(resType) + mfileName;
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ mLocalFileName = KGlobal::dirs()->saveLocation(resType, TQString(), false) + mfileName;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- if (useKDEGlobals)
|
||||||
|
+ if (useKDEGlobals) {
|
||||||
|
mGlobalFileName = KGlobal::dirs()->saveLocation("config", TQString(), false) + TQString::fromLatin1("kdeglobals");
|
||||||
|
- else
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
mGlobalFileName = TQString::null;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
d->localLastModified = TQDateTime();
|
||||||
|
d->localLastSize = 0;
|
||||||
|
diff --git a/kdecore/kconfigbase.cpp b/kdecore/kconfigbase.cpp
|
||||||
|
index 9ad6600..c5c0a4e 100644
|
||||||
|
--- a/kdecore/kconfigbase.cpp
|
||||||
|
+++ b/kdecore/kconfigbase.cpp
|
||||||
|
@@ -1139,16 +1139,18 @@ static TQString translatePath( TQString path )
|
||||||
|
|
||||||
|
// return original path, if it refers to another type of URL (e.g. http:/), or
|
||||||
|
// if the path is already relative to another directory
|
||||||
|
- if (!startsWithFile && path[0] != '/' ||
|
||||||
|
- startsWithFile && path[5] != '/')
|
||||||
|
+ if (((!startsWithFile) && (path[0] != '/')) || (startsWithFile && (path[5] != '/'))) {
|
||||||
|
return path;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- if (startsWithFile)
|
||||||
|
+ if (startsWithFile) {
|
||||||
|
path.remove(0,5); // strip leading "file:/" off the string
|
||||||
|
+ }
|
||||||
|
|
||||||
|
// keep only one single '/' at the beginning - needed for cleanHomeDirPath()
|
||||||
|
- while (path[0] == '/' && path[1] == '/')
|
||||||
|
+ while (path[0] == '/' && path[1] == '/') {
|
||||||
|
path.remove(0,1);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
// we can not use KGlobal::dirs()->relativeLocation("home", path) here,
|
||||||
|
// since it would not recognize paths without a trailing '/'.
|
||||||
|
diff --git a/kdecore/kinstance.cpp b/kdecore/kinstance.cpp
|
||||||
|
index fe0a515..5b3aa86 100644
|
||||||
|
--- ./kdecore/kinstance.cpp.orig 2011-08-11 04:30:15.000000000 +0200
|
||||||
|
+++ ./kdecore/kinstance.cpp 2012-06-19 21:14:21.569741870 +0200
|
||||||
|
@@ -70,7 +70,7 @@
|
||||||
|
: _dirs (0L),
|
||||||
|
_config (0L),
|
||||||
|
_iconLoader (0L),
|
||||||
|
- _name( name ), _aboutData( new KAboutData( name, "", 0 ) )
|
||||||
|
+ _name( name ), _aboutData( new KAboutData( name, "", 0 ) ), m_configReadOnly(false)
|
||||||
|
{
|
||||||
|
DEBUG_ADD
|
||||||
|
Q_ASSERT(!name.isEmpty());
|
||||||
|
@@ -88,7 +88,7 @@
|
||||||
|
: _dirs (0L),
|
||||||
|
_config (0L),
|
||||||
|
_iconLoader (0L),
|
||||||
|
- _name( aboutData->appName() ), _aboutData( aboutData )
|
||||||
|
+ _name( aboutData->appName() ), _aboutData( aboutData ), m_configReadOnly(false)
|
||||||
|
{
|
||||||
|
DEBUG_ADD
|
||||||
|
Q_ASSERT(!_name.isEmpty());
|
||||||
|
@@ -107,7 +107,7 @@
|
||||||
|
: _dirs ( src->_dirs ),
|
||||||
|
_config ( src->_config ),
|
||||||
|
_iconLoader ( src->_iconLoader ),
|
||||||
|
- _name( src->_name ), _aboutData( src->_aboutData )
|
||||||
|
+ _name( src->_name ), _aboutData( src->_aboutData ), m_configReadOnly(false)
|
||||||
|
{
|
||||||
|
DEBUG_ADD
|
||||||
|
Q_ASSERT(!_name.isEmpty());
|
||||||
|
@@ -174,6 +174,11 @@
|
||||||
|
extern bool kde_kiosk_exception;
|
||||||
|
extern bool kde_kiosk_admin;
|
||||||
|
|
||||||
|
+void KInstance::setConfigReadOnly(bool ro)
|
||||||
|
+{
|
||||||
|
+ m_configReadOnly = ro;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
KConfig *KInstance::config() const
|
||||||
|
{
|
||||||
|
DEBUG_CHECK_ALIVE
|
||||||
|
@@ -198,10 +203,12 @@
|
||||||
|
|
||||||
|
if ( d->sharedConfig == 0 )
|
||||||
|
{
|
||||||
|
- if ( !_name.isEmpty() )
|
||||||
|
- d->sharedConfig = KSharedConfig::openConfig( _name + "rc");
|
||||||
|
- else
|
||||||
|
+ if ( !_name.isEmpty() ) {
|
||||||
|
+ d->sharedConfig = KSharedConfig::openConfig( _name + "rc", m_configReadOnly );
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
d->sharedConfig = KSharedConfig::openConfig( TQString::null );
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if we are excempt from kiosk restrictions
|
||||||
|
@@ -211,7 +218,7 @@
|
||||||
|
d->sharedConfig = 0;
|
||||||
|
return config(); // Reread...
|
||||||
|
}
|
||||||
|
-
|
||||||
|
+
|
||||||
|
_config = d->sharedConfig;
|
||||||
|
if (_dirs)
|
||||||
|
if (_dirs->addCustomized(_config))
|
||||||
|
diff --git a/kdecore/kinstance.h b/kdecore/kinstance.h
|
||||||
|
index 75cc4b4..444a2d8 100644
|
||||||
|
--- a/kdecore/kinstance.h
|
||||||
|
+++ b/kdecore/kinstance.h
|
||||||
|
@@ -69,7 +69,7 @@ class kdecore_EXPORT KInstance
|
||||||
|
* Only for K(Unique)Application
|
||||||
|
* Initialize from src and delete it.
|
||||||
|
*/
|
||||||
|
-
|
||||||
|
+
|
||||||
|
KInstance( KInstance* src );
|
||||||
|
|
||||||
|
/**
|
||||||
|
@@ -96,6 +96,14 @@ class kdecore_EXPORT KInstance
|
||||||
|
KSharedConfig *sharedConfig() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
+ * Set a read-only flag on the configuration files
|
||||||
|
+ * This must be called before config() or dirs() to have any effect
|
||||||
|
+ * Defaults to FALSE
|
||||||
|
+ * @param ro read only if TRUE
|
||||||
|
+ */
|
||||||
|
+ void setConfigReadOnly(bool ro);
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
* Returns an iconloader object.
|
||||||
|
* @return the iconloader object.
|
||||||
|
*/
|
||||||
|
@@ -162,6 +170,7 @@ protected:
|
||||||
|
virtual void virtual_hook( int id, void* data );
|
||||||
|
private:
|
||||||
|
KInstancePrivate *d;
|
||||||
|
+ bool m_configReadOnly;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
diff --git a/kdecore/kstandarddirs.cpp b/kdecore/kstandarddirs.cpp
|
||||||
|
index bce4bf4..bb8ae97 100644
|
||||||
|
--- a/kdecore/kstandarddirs.cpp.orig 2011-08-21 06:15:32.000000000 +0200
|
||||||
|
+++ b/kdecore/kstandarddirs.cpp 2012-06-19 21:17:34.550007910 +0200
|
||||||
|
@@ -451,13 +450,17 @@
|
||||||
|
bool KStandardDirs::exists(const TQString &fullPath)
|
||||||
|
{
|
||||||
|
KDE_struct_stat buff;
|
||||||
|
- if (access(TQFile::encodeName(fullPath), R_OK) == 0 && KDE_stat( TQFile::encodeName(fullPath), &buff ) == 0)
|
||||||
|
+ if ((access(TQFile::encodeName(fullPath), R_OK) == 0) && (KDE_stat( TQFile::encodeName(fullPath), &buff ) == 0)) {
|
||||||
|
if (fullPath.tqat(fullPath.length() - 1) != QChar('/')) {
|
||||||
|
if (S_ISREG( buff.st_mode ))
|
||||||
|
return true;
|
||||||
|
- } else
|
||||||
|
- if (S_ISDIR( buff.st_mode ))
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ if (S_ISDIR( buff.st_mode )) {
|
||||||
|
return true;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -767,17 +770,23 @@
|
||||||
|
srv = findExe(TQString::tqfromLatin1("lnusertemp"));
|
||||||
|
if (!srv.isEmpty())
|
||||||
|
{
|
||||||
|
- system(TQFile::encodeName(srv)+" "+type);
|
||||||
|
- result = readlink(TQFile::encodeName(dir).data(), link, 1023);
|
||||||
|
+ if (system(TQFile::encodeName(srv)+" "+type) < 0 ) {
|
||||||
|
+ result = readlink(TQFile::encodeName(dir).data(), link, 1023);
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ result = -1;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (result > 0)
|
||||||
|
{
|
||||||
|
link[result] = 0;
|
||||||
|
- if (link[0] == TQChar('/').latin1())
|
||||||
|
+ if (link[0] == TQChar('/').latin1()) {
|
||||||
|
dir = TQFile::decodeName(link);
|
||||||
|
- else
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
dir = TQDir::cleanDirPath(dir+TQFile::decodeName(link));
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
addResourceDir(type, dir+QChar('/'));
|
||||||
|
@@ -1139,8 +1148,9 @@
|
||||||
|
}
|
||||||
|
dircache.remove(type);
|
||||||
|
}
|
||||||
|
- if (!fullPath.endsWith("/"))
|
||||||
|
+ if (!fullPath.endsWith("/")) {
|
||||||
|
fullPath += "/";
|
||||||
|
+ }
|
||||||
|
return fullPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/kdecore/kde-config.cpp.in b/kdecore/kde-config.cpp.in
|
||||||
|
index 90c5dae..c988b00 100644
|
||||||
|
--- a/kdecore/kde-config.cpp.in
|
||||||
|
+++ b/kdecore/kde-config.cpp.in
|
||||||
|
@@ -120,6 +120,7 @@ int main(int argc, char **argv)
|
||||||
|
KCmdLineArgs::addCmdLineOptions( options ); // Add my own options.
|
||||||
|
|
||||||
|
KInstance a("kde-config");
|
||||||
|
+ a.setConfigReadOnly(TRUE);
|
||||||
|
(void)KGlobal::dirs(); // trigger the creation
|
||||||
|
(void)KGlobal::config();
|
||||||
|
|
@ -0,0 +1,27 @@
|
|||||||
|
commit 3e284fadb9110cdd2a2dcf9c2e960c74f15e0360
|
||||||
|
Author: Slávek Banko <slavek.banko@axis.cz>
|
||||||
|
Date: 1339570958 +0200
|
||||||
|
|
||||||
|
Fix FTBFS - incomplete build kspell2
|
||||||
|
This closes Bug 657
|
||||||
|
|
||||||
|
diff --git a/kspell2/ui/CMakeLists.txt b/kspell2/ui/CMakeLists.txt
|
||||||
|
index 65ea158..a83774d 100644
|
||||||
|
--- a/kspell2/ui/CMakeLists.txt
|
||||||
|
+++ b/kspell2/ui/CMakeLists.txt
|
||||||
|
@@ -54,12 +54,14 @@ tde_add_library( ${target} STATIC_PIC AUTOMOC
|
||||||
|
set( target kspell2 )
|
||||||
|
|
||||||
|
set( ${target}_SRCS
|
||||||
|
+ configwidget.cpp highlighter.cpp configdialog.cpp
|
||||||
|
+ kspell2ui.ui configui.ui
|
||||||
|
dialog.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
tde_add_library( ${target} SHARED AUTOMOC
|
||||||
|
SOURCES ${${target}_SRCS}
|
||||||
|
VERSION 1.0.0
|
||||||
|
- LINK kspell2-static kspell2base-static kutils-shared
|
||||||
|
+ LINK kspell2base-static kutils-shared
|
||||||
|
DESTINATION ${LIB_INSTALL_DIR}
|
||||||
|
)
|
@ -0,0 +1,159 @@
|
|||||||
|
commit 41ea89f79d28c456b296e8ddcce0a12c21e13f94
|
||||||
|
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
Date: 1337872714 -0500
|
||||||
|
|
||||||
|
Fix composition extension detection
|
||||||
|
|
||||||
|
diff --git a/kdecore/kapplication.cpp b/kdecore/kapplication.cpp
|
||||||
|
index 5c60e6f..b4caefc 100644
|
||||||
|
--- a/kdecore/kapplication.cpp
|
||||||
|
+++ b/kdecore/kapplication.cpp
|
||||||
|
@@ -1804,9 +1804,7 @@ bool KApplication::isCompositionManagerAvailable() {
|
||||||
|
|
||||||
|
// Now that we did all that by way of introduction...read the file!
|
||||||
|
FILE *pFile;
|
||||||
|
- char buffer[255];
|
||||||
|
pFile = fopen(filename, "r");
|
||||||
|
- int kompmgrpid = 0;
|
||||||
|
if (pFile) {
|
||||||
|
have_manager = true;
|
||||||
|
fclose(pFile);
|
||||||
|
@@ -1840,18 +1838,23 @@ bool KApplication::detectCompositionManagerAvailable(bool force_available, bool
|
||||||
|
compositing_manager_available = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
- Window root_window = XDefaultRootWindow(dpy);
|
||||||
|
- XCompositeRedirectSubwindows(dpy, root_window, CompositeRedirectManual);
|
||||||
|
- XSync(dpy, false);
|
||||||
|
- if (x11_composite_error_generated == true) {
|
||||||
|
- compositing_manager_available = true;
|
||||||
|
+ if (available) { // FIXME This variable does double duty to avoid breaking the ABI for R14.0. In reality it should be called perform_deep_check
|
||||||
|
+ Window root_window = XDefaultRootWindow(dpy);
|
||||||
|
+ XCompositeRedirectSubwindows(dpy, root_window, CompositeRedirectManual);
|
||||||
|
+ XSync(dpy, false);
|
||||||
|
+ if (x11_composite_error_generated == true) {
|
||||||
|
+ compositing_manager_available = true;
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ XCompositeUnredirectSubwindows(dpy, root_window, CompositeRedirectManual);
|
||||||
|
+ compositing_manager_available = false;
|
||||||
|
+ }
|
||||||
|
+ XSetErrorHandler(NULL);
|
||||||
|
+ XCloseDisplay(dpy);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
- XCompositeUnredirectSubwindows(dpy, root_window, CompositeRedirectManual);
|
||||||
|
- compositing_manager_available = false;
|
||||||
|
+ compositing_manager_available = true;
|
||||||
|
}
|
||||||
|
- XSetErrorHandler(NULL);
|
||||||
|
- XCloseDisplay(dpy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1913,7 +1916,7 @@ Qt::HANDLE KApplication::getX11RGBAVisual(Display *dpy) {
|
||||||
|
return argb_x11_visual;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
- return NULL;
|
||||||
|
+ return (Qt::HANDLE)NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1923,7 +1926,7 @@ Qt::HANDLE KApplication::getX11RGBAColormap(Display *dpy) {
|
||||||
|
return argb_x11_colormap;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
- return NULL;
|
||||||
|
+ return (Qt::HANDLE)NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1997,8 +2000,20 @@ bool KApplication::detectCompositionManagerAvailable(bool force_available) {
|
||||||
|
strcat(filename, home);
|
||||||
|
strcat(filename, configfile);
|
||||||
|
|
||||||
|
- /* now that we did all that by way of introduction...remove the file! */
|
||||||
|
- unlink(filename);
|
||||||
|
+ /* now that we did all that by way of introduction...create or remove the file! */
|
||||||
|
+ if (force_available) {
|
||||||
|
+ FILE *pFile;
|
||||||
|
+ char buffer[255];
|
||||||
|
+ sprintf(buffer, "available");
|
||||||
|
+ pFile = fopen(filename, "w");
|
||||||
|
+ if (pFile) {
|
||||||
|
+ fwrite(buffer,1,strlen(buffer), pFile);
|
||||||
|
+ fclose(pFile);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ unlink(filename);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
free(filename);
|
||||||
|
filename = NULL;
|
||||||
|
@@ -2886,12 +2901,15 @@ void KApplication::invokeMailer(const TQString &_to, const TQString &_cc, const
|
||||||
|
TQString error;
|
||||||
|
// TODO this should check if cmd has a .desktop file, and use data from it, together
|
||||||
|
// with sending more ASN data
|
||||||
|
- if (kdeinitExec(cmd, cmdTokens, &error, NULL, startup_id ))
|
||||||
|
- if (Tty != kapp->type())
|
||||||
|
+ if (kdeinitExec(cmd, cmdTokens, &error, NULL, startup_id )) {
|
||||||
|
+ if (Tty != kapp->type()) {
|
||||||
|
TQMessageBox::critical(kapp->mainWidget(), i18n("Could not Launch Mail Client"),
|
||||||
|
i18n("Could not launch the mail client:\n\n%1").arg(error), i18n("&OK"));
|
||||||
|
- else
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
kdWarning() << "Could not launch mail client:\n" << error << endl;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -3597,7 +3615,9 @@ void KApplication::sigpipeHandler(int)
|
||||||
|
#ifndef NDEBUG
|
||||||
|
char msg[1000];
|
||||||
|
sprintf(msg, "*** SIGPIPE *** (ignored, pid = %ld)\n", (long) getpid());
|
||||||
|
- write(2, msg, strlen(msg));
|
||||||
|
+ if (write(2, msg, strlen(msg)) < 0) {
|
||||||
|
+ // ERROR
|
||||||
|
+ }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Do nothing.
|
||||||
|
diff --git a/kdecore/kdetcompmgr.cpp b/kdecore/kdetcompmgr.cpp
|
||||||
|
index bfc3ac6..8b9b480 100644
|
||||||
|
--- a/kdecore/kdetcompmgr.cpp
|
||||||
|
+++ b/kdecore/kdetcompmgr.cpp
|
||||||
|
@@ -84,7 +84,6 @@ int main(int argc, char **argv)
|
||||||
|
if (lSize > 254)
|
||||||
|
lSize = 254;
|
||||||
|
rewind (pFile);
|
||||||
|
- size_t result = fread (buffer, 1, lSize, pFile);
|
||||||
|
fclose(pFile);
|
||||||
|
kompmgrpid = atoi(buffer);
|
||||||
|
}
|
||||||
|
@@ -97,9 +96,7 @@ int main(int argc, char **argv)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-// app.detectCompositionManagerAvailable();
|
||||||
|
-
|
||||||
|
-// if (!app.isCompositionManagerAvailable()) {
|
||||||
|
+ if (app.detectCompositionManagerAvailable(false, false)) { // Perform a shallow check for the composite extension (a deep check would cause noticeable flicker)
|
||||||
|
KConfig config2("kwinrc", true);
|
||||||
|
config2.setGroup( "Notification Messages" );
|
||||||
|
if (config2.readBoolEntry("UseTranslucency",false)) {
|
||||||
|
@@ -110,6 +107,10 @@ int main(int argc, char **argv)
|
||||||
|
app.detectCompositionManagerAvailable(true, false);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
-// }
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ app.detectCompositionManagerAvailable(true, false);
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
|||||||
|
--- ./kdecore/kconfigbackend.cpp.orig 2011-08-11 04:30:15.000000000 +0200
|
||||||
|
+++ ./kdecore/kconfigbackend.cpp 2012-06-18 23:27:20.034671093 +0200
|
||||||
|
@@ -255,8 +255,7 @@
|
||||||
|
mLocalFileName = KGlobal::dirs()->saveLocation(resType) + mfileName;
|
||||||
|
|
||||||
|
if (useKDEGlobals)
|
||||||
|
- mGlobalFileName = KGlobal::dirs()->saveLocation("config") +
|
||||||
|
- TQString::tqfromLatin1("kdeglobals");
|
||||||
|
+ mGlobalFileName = KGlobal::dirs()->saveLocation("config", TQString(), false) + TQString::fromLatin1("kdeglobals");
|
||||||
|
else
|
||||||
|
mGlobalFileName = TQString::null;
|
||||||
|
|
@ -0,0 +1,83 @@
|
|||||||
|
commit 06b514847fffb79985e4bcde9f8dcc685c5d9ac5
|
||||||
|
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
Date: 1328040359 -0600
|
||||||
|
|
||||||
|
Fix konq filter in list view mode
|
||||||
|
Select all now only selects shown (filtered) items
|
||||||
|
|
||||||
|
diff --git a/tdeui/klistview.cpp b/tdeui/klistview.cpp
|
||||||
|
index e1c5811..b52fe68 100644
|
||||||
|
--- a/kdeui/klistview.cpp
|
||||||
|
+++ b/kdeui/klistview.cpp
|
||||||
|
@@ -2356,6 +2356,52 @@ void KListViewItem::paintCell(TQPainter *p, const TQColorGroup &cg, int column,
|
||||||
|
TQListViewItem::paintCell(p, _cg, column, width, tqalignment);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/*!
|
||||||
|
+ If \a select is TRUE, all the items get selected; otherwise all
|
||||||
|
+ the items get unselected. This only works in the selection modes \c
|
||||||
|
+ Multi and \c Extended. In \c Single and \c NoSelection mode the
|
||||||
|
+ selection of the current item is just set to \a select.
|
||||||
|
+*/
|
||||||
|
+
|
||||||
|
+void KListView::selectAll( bool select )
|
||||||
|
+{
|
||||||
|
+ if ( selectionMode() == Multi || selectionMode() == Extended ) {
|
||||||
|
+ bool b = signalsBlocked();
|
||||||
|
+ blockSignals( TRUE );
|
||||||
|
+ bool anything = FALSE;
|
||||||
|
+ TQListViewItemIterator it( this );
|
||||||
|
+ while ( it.current() ) {
|
||||||
|
+ TQListViewItem *i = it.current();
|
||||||
|
+ if ( select == TRUE ) {
|
||||||
|
+ if ( (bool)i->isVisible() == TRUE ) {
|
||||||
|
+ i->setSelected( TRUE );
|
||||||
|
+ anything = TRUE;
|
||||||
|
+ }
|
||||||
|
+ if ( (bool)i->isVisible() == FALSE ) {
|
||||||
|
+ i->setSelected( FALSE );
|
||||||
|
+ anything = TRUE;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ if ( (bool)i->isSelected() != select ) {
|
||||||
|
+ i->setSelected( select );
|
||||||
|
+ anything = TRUE;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ ++it;
|
||||||
|
+ }
|
||||||
|
+ blockSignals( b );
|
||||||
|
+ if ( anything ) {
|
||||||
|
+ emit selectionChanged();
|
||||||
|
+// d->useDoubleBuffer = TRUE;
|
||||||
|
+ triggerUpdate();
|
||||||
|
+ }
|
||||||
|
+ } else if ( currentItem() ) {
|
||||||
|
+ TQListViewItem * i = currentItem();
|
||||||
|
+ setSelected( i, select );
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void KListView::virtual_hook( int, void* )
|
||||||
|
{ /*BASE::virtual_hook( id, data );*/ }
|
||||||
|
|
||||||
|
diff --git a/tdeui/klistview.h b/tdeui/klistview.h
|
||||||
|
index ed10192..c8bb837 100644
|
||||||
|
--- a/kdeui/klistview.h
|
||||||
|
+++ b/kdeui/klistview.h
|
||||||
|
@@ -660,6 +660,14 @@ public slots:
|
||||||
|
*/
|
||||||
|
bool tabOrderedRenaming() const;
|
||||||
|
|
||||||
|
+ /**
|
||||||
|
+ * Override TQListView selectAll() so that filtered
|
||||||
|
+ * items are not selected
|
||||||
|
+ *
|
||||||
|
+ * @since 14.0
|
||||||
|
+ */
|
||||||
|
+ virtual void selectAll( bool select );
|
||||||
|
+
|
||||||
|
protected:
|
||||||
|
/**
|
||||||
|
* Determine whether a drop on position @p p would count as
|
@ -0,0 +1,27 @@
|
|||||||
|
commit 9068fffdf82dc9cf60e83639b3a9b397761304cd
|
||||||
|
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
Date: 1338002515 -0500
|
||||||
|
|
||||||
|
Fix KTempFile not obeying special bits on file creation
|
||||||
|
This closes Bug 349
|
||||||
|
Add modem category to TDE hardware manager
|
||||||
|
|
||||||
|
diff --git a/tdecore/ktempfile.cpp b/tdecore/ktempfile.cpp
|
||||||
|
index 2c7b56e..4632f00 100644
|
||||||
|
--- a/kdecore/ktempfile.cpp
|
||||||
|
+++ b/kdecore/ktempfile.cpp
|
||||||
|
@@ -117,8 +117,12 @@ KTempFile::create(const TQString &filePrefix, const TQString &fileExtension,
|
||||||
|
// Success!
|
||||||
|
bOpen = true;
|
||||||
|
|
||||||
|
- // Set uid/gid (necessary for SUID programs)
|
||||||
|
- fchown(mFd, getuid(), getgid());
|
||||||
|
+ uid_t uid = getuid();
|
||||||
|
+ uid_t euid = geteuid();
|
||||||
|
+ if (uid != euid) {
|
||||||
|
+ // Set uid/gid (necessary for SUID programs)
|
||||||
|
+ fchown(mFd, getuid(), getgid());
|
||||||
|
+ }
|
||||||
|
|
||||||
|
// Set close on exec
|
||||||
|
fcntl(mFd, F_SETFD, FD_CLOEXEC);
|
@ -0,0 +1,52 @@
|
|||||||
|
commit a1c30c142a7b631d6ff66f12d8b48c9aec07190f
|
||||||
|
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
Date: 1331881108 -0500
|
||||||
|
|
||||||
|
Fix slider drawing on external paint devices
|
||||||
|
|
||||||
|
diff --git a/tdefx/kstyle.cpp b/tdefx/kstyle.cpp
|
||||||
|
index d4cb9bd..0220840 100644
|
||||||
|
--- a/kdefx/kstyle.cpp
|
||||||
|
+++ b/kdefx/kstyle.cpp
|
||||||
|
@@ -1138,11 +1138,14 @@ void KStyle::drawComplexControl( TQ_ComplexControl control,
|
||||||
|
last = querySubControlMetrics(control, widget, SC_ScrollBarLast, opt);
|
||||||
|
subline2 = addline;
|
||||||
|
|
||||||
|
- if ( useThreeButtonScrollBar )
|
||||||
|
- if (horizontal)
|
||||||
|
+ if ( useThreeButtonScrollBar ) {
|
||||||
|
+ if (horizontal) {
|
||||||
|
subline2.moveBy(-addline.width(), 0);
|
||||||
|
- else
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
subline2.moveBy(0, -addline.height());
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
// Draw the up/left button set
|
||||||
|
if ((controls & SC_ScrollBarSubLine) && subline.isValid()) {
|
||||||
|
@@ -1238,7 +1241,14 @@ void KStyle::drawComplexControl( TQ_ComplexControl control,
|
||||||
|
}
|
||||||
|
|
||||||
|
p2.end();
|
||||||
|
- bitBlt((TQWidget*)widget, r.x(), r.y(), &pix);
|
||||||
|
+
|
||||||
|
+ TQPaintDevice* ppd = p->device();
|
||||||
|
+ if (ppd->isExtDev()) {
|
||||||
|
+ p->drawPixmap(0, 0, pix);
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ bitBlt((TQWidget*)widget, r.x(), r.y(), &pix);
|
||||||
|
+ }
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -2105,7 +2115,6 @@ TQImage TransparencyHandler::handleRealAlpha(TQImage img) {
|
||||||
|
for (int y = 0; y < h; ++y) {
|
||||||
|
TQRgb *ls = (TQRgb *)clearImage.scanLine( y );
|
||||||
|
for (int x = 0; x < w; ++x) {
|
||||||
|
- TQRgb l = ls[x];
|
||||||
|
ls[x] = tqRgba( 0, 0, 0, 0 );
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
commit e131f10b84dbec07ad49d36c192777a72189a39e
|
||||||
|
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
Date: 1329026747 -0600
|
||||||
|
|
||||||
|
Fix tdesu internal pathing
|
||||||
|
This closes Bug 766
|
||||||
|
|
||||||
|
diff --git a/tdesu/stub.cpp b/tdesu/stub.cpp
|
||||||
|
index 7f083d7..5b222f5 100644
|
||||||
|
--- a/kdesu/stub.cpp
|
||||||
|
+++ b/kdesu/stub.cpp
|
||||||
|
@@ -121,11 +121,16 @@ int StubProcess::ConverseStub(int check)
|
||||||
|
TQCString path = getenv("PATH");
|
||||||
|
if (!path.isEmpty() && path[0] == ':')
|
||||||
|
path = path.mid(1);
|
||||||
|
- if (m_User == "root")
|
||||||
|
- if (!path.isEmpty())
|
||||||
|
- path = "/sbin:/bin:/usr/sbin:/usr/bin:" + path;
|
||||||
|
- else
|
||||||
|
- path = "/sbin:/bin:/usr/sbin:/usr/bin";
|
||||||
|
+ if (m_User == "root")
|
||||||
|
+ if (!path.isEmpty())
|
||||||
|
+ path = "/usr/local/sbin:/usr/sbin:/sbin:" + path;
|
||||||
|
+ else
|
||||||
|
+ if (strcmp(__KDE_BINDIR, "/usr/bin") == 0) {
|
||||||
|
+ path = "/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin";
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ path = "/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:" __KDE_BINDIR ":/usr/bin:/bin";
|
||||||
|
+ }
|
||||||
|
writeLine(path);
|
||||||
|
} else if (line == "user") {
|
||||||
|
writeLine(m_User);
|
@ -0,0 +1,20 @@
|
|||||||
|
commit 6c806af1c99890adecb42abf52f4d6dc8ae72899
|
||||||
|
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
Date: 1337556266 -0500
|
||||||
|
|
||||||
|
Initialize X11 threading when kinit is used to launch a program
|
||||||
|
This closes Bug 812
|
||||||
|
Thanks to Slávek Banko for the patch!
|
||||||
|
|
||||||
|
diff --git a/kinit/kinit.cpp b/kinit/kinit.cpp
|
||||||
|
index 2a74368..191757d 100644
|
||||||
|
--- a/kinit/kinit.cpp
|
||||||
|
+++ b/kinit/kinit.cpp
|
||||||
|
@@ -1615,6 +1615,7 @@ int tdeinit_x_errhandler( Display *dpy, XErrorEvent *err )
|
||||||
|
// another X connection for startup notification purposes
|
||||||
|
static void setupX()
|
||||||
|
{
|
||||||
|
+ XInitThreads();
|
||||||
|
XSetIOErrorHandler(kdeinit_xio_errhandler);
|
||||||
|
XSetErrorHandler(kdeinit_x_errhandler);
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
commit 1c06ae32f64450c38f1294b8adda2fd9a6cc98b1
|
||||||
|
Author: Darrell Anderson <humanreadable@yahoo.com>
|
||||||
|
Date: 1331690106 -0500
|
||||||
|
|
||||||
|
Reduce "More Applications" and extra koffice items from TDE menu.
|
||||||
|
This partially resolves bug report 653.
|
||||||
|
|
||||||
|
diff --git a/kded/applications.menu b/kded/applications.menu
|
||||||
|
index 4b30a56..380196e 100644
|
||||||
|
--- a/kded/applications.menu
|
||||||
|
+++ b/kded/applications.menu
|
||||||
|
@@ -272,16 +272,6 @@
|
||||||
|
</And>
|
||||||
|
</Include>
|
||||||
|
<Menu>
|
||||||
|
- <Name>Email</Name>
|
||||||
|
- <Directory>kde-internet-email.directory</Directory>
|
||||||
|
- <Include>
|
||||||
|
- <And>
|
||||||
|
- <Category>Email</Category>
|
||||||
|
- <Not><Category>X-KDE-More</Category></Not>
|
||||||
|
- </And>
|
||||||
|
- </Include>
|
||||||
|
- </Menu>
|
||||||
|
- <Menu>
|
||||||
|
<Name>Terminal</Name>
|
||||||
|
<Directory>kde-internet-terminal.directory</Directory>
|
||||||
|
</Menu>
|
||||||
|
@@ -321,12 +311,6 @@
|
||||||
|
<Directory>kde-office.directory</Directory>
|
||||||
|
<Layout>
|
||||||
|
<Merge type="menus"/>
|
||||||
|
- <Filename>kde-koshell.desktop</Filename>
|
||||||
|
- <Filename>kde-Kontact.desktop</Filename>
|
||||||
|
- <Separator/>
|
||||||
|
- <Filename>kde-kword.desktop</Filename>
|
||||||
|
- <Filename>kde-kspread.desktop</Filename>
|
||||||
|
- <Filename>kde-kpresenter.desktop</Filename>
|
||||||
|
<Merge type="files"/>
|
||||||
|
<Separator/>
|
||||||
|
<Menuname>More</Menuname>
|
Loading…
Reference in new issue