* Sat Apr 24 2010 Rex Dieter <rdieter@fedoraproject.org> - 6:4.4.2-4
- fix kidletime (kde#231628,kde#227279,kde#218468) - kate part ignores japanese input from input method (#585242,kde#206455)
This commit is contained in:
parent
70455ce4be
commit
e04f4f7282
35
kdelibs-4.4.2-kate-inputmethod.patch
Normal file
35
kdelibs-4.4.2-kate-inputmethod.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
--- kate/view/kateviewinternal.cpp.orig 2010-03-21 20:57:09.000000000 +0900
|
||||||
|
+++ kate/view/kateviewinternal.cpp 2010-03-21 21:23:25.000000000 +0900
|
||||||
|
@@ -3778,13 +3778,6 @@
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- // if the input method event is text that should be inserted, call KateDocument::typeChars() with
|
||||||
|
- // the text. that method will handle the input and take care of overwrite mode, etc.
|
||||||
|
- if ( e->commitString().length() > 0 && doc()->typeChars( m_view, e->commitString() ) ) {
|
||||||
|
- e->accept();
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
//kDebug( 13030 ) << "Event: cursor" << m_cursor << "commit" << e->commitString() << "preedit" << e->preeditString() << "replacement start" << e->replacementStart() << "length" << e->replacementLength();
|
||||||
|
|
||||||
|
if ( m_view->selection() )
|
||||||
|
@@ -3812,7 +3805,9 @@
|
||||||
|
if (start != removeEnd)
|
||||||
|
doc()->removeText(KTextEditor::Range(start, removeEnd));
|
||||||
|
if (!e->commitString().isEmpty())
|
||||||
|
- doc()->insertText(start, e->commitString());
|
||||||
|
+ // if the input method event is text that should be inserted, call KateDocument::typeChars()
|
||||||
|
+ // with the text. that method will handle the input and take care of overwrite mode, etc.
|
||||||
|
+ doc()->typeChars(m_view, e->commitString());
|
||||||
|
doc()->editEnd();
|
||||||
|
|
||||||
|
// Revert to the same range as above
|
||||||
|
@@ -3838,6 +3833,7 @@
|
||||||
|
renderer()->setDrawCaret(false);
|
||||||
|
renderer()->setCaretOverrideColor(QColor());
|
||||||
|
|
||||||
|
+ e->accept();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
609
kdelibs-4.4.2-kidletime.patch
Normal file
609
kdelibs-4.4.2-kidletime.patch
Normal file
@ -0,0 +1,609 @@
|
|||||||
|
Index: widgetbasedpoller.cpp
|
||||||
|
===================================================================
|
||||||
|
--- widgetbasedpoller.cpp (.../tags/KDE/4.4.2/kdelibs/kutils/kidletime) (revision 1118483)
|
||||||
|
+++ widgetbasedpoller.cpp (.../branches/KDE/4.4/kdelibs/kutils/kidletime) (revision 1118483)
|
||||||
|
@@ -21,10 +21,11 @@
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QTimer>
|
||||||
|
#include <QEvent>
|
||||||
|
-#include <QDebug>
|
||||||
|
+
|
||||||
|
#ifndef WIN32
|
||||||
|
#include <fixx11h.h>
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
WidgetBasedPoller::WidgetBasedPoller(QWidget *parent)
|
||||||
|
: AbstractSystemPoller(parent)
|
||||||
|
{
|
||||||
|
Index: kidletime.cpp
|
||||||
|
===================================================================
|
||||||
|
--- kidletime.cpp (.../tags/KDE/4.4.2/kdelibs/kutils/kidletime) (revision 1118483)
|
||||||
|
+++ kidletime.cpp (.../branches/KDE/4.4/kdelibs/kutils/kidletime) (revision 1118483)
|
||||||
|
@@ -35,8 +35,10 @@
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#include <QWeakPointer>
|
||||||
|
+#include <QSet>
|
||||||
|
+
|
||||||
|
#include <kglobal.h>
|
||||||
|
-#include <QPointer>
|
||||||
|
|
||||||
|
class KIdleTimeHelper
|
||||||
|
{
|
||||||
|
@@ -61,18 +63,17 @@
|
||||||
|
|
||||||
|
class KIdleTimePrivate
|
||||||
|
{
|
||||||
|
+ Q_DECLARE_PUBLIC(KIdleTime)
|
||||||
|
+ KIdleTime *q_ptr;
|
||||||
|
public:
|
||||||
|
KIdleTimePrivate() : catchResume(false), currentId(0) {}
|
||||||
|
|
||||||
|
- Q_DECLARE_PUBLIC(KIdleTime)
|
||||||
|
- KIdleTime *q_ptr;
|
||||||
|
-
|
||||||
|
void loadSystem();
|
||||||
|
void unloadCurrentSystem();
|
||||||
|
void _k_resumingFromIdle();
|
||||||
|
void _k_timeoutReached(int msec);
|
||||||
|
|
||||||
|
- QPointer<AbstractSystemPoller> poller;
|
||||||
|
+ QWeakPointer<AbstractSystemPoller> poller;
|
||||||
|
bool catchResume;
|
||||||
|
|
||||||
|
int currentId;
|
||||||
|
@@ -87,16 +88,19 @@
|
||||||
|
s_globalKIdleTime->q = this;
|
||||||
|
|
||||||
|
d_ptr->q_ptr = this;
|
||||||
|
- d_ptr->loadSystem();
|
||||||
|
|
||||||
|
- connect(d_ptr->poller, SIGNAL(resumingFromIdle()), this, SLOT(_k_resumingFromIdle()));
|
||||||
|
- connect(d_ptr->poller, SIGNAL(timeoutReached(int)), this, SLOT(_k_timeoutReached(int)));
|
||||||
|
+ Q_D(KIdleTime);
|
||||||
|
+ d->loadSystem();
|
||||||
|
+
|
||||||
|
+ connect(d->poller.data(), SIGNAL(resumingFromIdle()), this, SLOT(_k_resumingFromIdle()));
|
||||||
|
+ connect(d->poller.data(), SIGNAL(timeoutReached(int)), this, SLOT(_k_timeoutReached(int)));
|
||||||
|
}
|
||||||
|
|
||||||
|
KIdleTime::~KIdleTime()
|
||||||
|
{
|
||||||
|
Q_D(KIdleTime);
|
||||||
|
d->unloadCurrentSystem();
|
||||||
|
+ delete d_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KIdleTime::catchNextResumeEvent()
|
||||||
|
@@ -105,7 +109,7 @@
|
||||||
|
|
||||||
|
if (!d->catchResume) {
|
||||||
|
d->catchResume = true;
|
||||||
|
- d->poller->catchIdleEvent();
|
||||||
|
+ d->poller.data()->catchIdleEvent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -115,7 +119,7 @@
|
||||||
|
|
||||||
|
if (d->catchResume) {
|
||||||
|
d->catchResume = false;
|
||||||
|
- d->poller->stopCatchingIdleEvents();
|
||||||
|
+ d->poller.data()->stopCatchingIdleEvents();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -123,7 +127,7 @@
|
||||||
|
{
|
||||||
|
Q_D(KIdleTime);
|
||||||
|
|
||||||
|
- d->poller->addTimeout(msec);
|
||||||
|
+ d->poller.data()->addTimeout(msec);
|
||||||
|
|
||||||
|
++d->currentId;
|
||||||
|
d->associations[d->currentId] = msec;
|
||||||
|
@@ -144,7 +148,7 @@
|
||||||
|
d->associations.remove(identifier);
|
||||||
|
|
||||||
|
if (!d->associations.values().contains(msec)) {
|
||||||
|
- d->poller->removeTimeout(msec);
|
||||||
|
+ d->poller.data()->removeTimeout(msec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -152,14 +156,25 @@
|
||||||
|
{
|
||||||
|
Q_D(KIdleTime);
|
||||||
|
|
||||||
|
- foreach(int i, d->poller->timeouts()) {
|
||||||
|
- removeIdleTimeout(i);
|
||||||
|
+ QHash< int, int >::iterator i = d->associations.begin();
|
||||||
|
+ QSet< int > removed;
|
||||||
|
+ removed.reserve(d->associations.size());
|
||||||
|
+
|
||||||
|
+ while (i != d->associations.end()) {
|
||||||
|
+ int msec = d->associations[i.key()];
|
||||||
|
+
|
||||||
|
+ i = d->associations.erase(i);
|
||||||
|
+
|
||||||
|
+ if (!removed.contains(msec)) {
|
||||||
|
+ d->poller.data()->removeTimeout(msec);
|
||||||
|
+ removed.insert(msec);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KIdleTimePrivate::loadSystem()
|
||||||
|
{
|
||||||
|
- if (poller) {
|
||||||
|
+ if (!poller.isNull()) {
|
||||||
|
unloadCurrentSystem();
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -169,41 +184,39 @@
|
||||||
|
#ifdef HAVE_XSYNC
|
||||||
|
#ifdef HAVE_XSCREENSAVER
|
||||||
|
if (XSyncBasedPoller::instance()->isAvailable()) {
|
||||||
|
- XSyncBasedPoller::instance()->setUpPoller();
|
||||||
|
poller = XSyncBasedPoller::instance();
|
||||||
|
} else {
|
||||||
|
poller = new XScreensaverBasedPoller();
|
||||||
|
- poller->setUpPoller();
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
- XSyncBasedPoller::instance()->setUpPoller();
|
||||||
|
poller = XSyncBasedPoller::instance();
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef HAVE_XSCREENSAVER
|
||||||
|
poller = new XScreensaverBasedPoller();
|
||||||
|
- poller->setUpPoller();
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef Q_WS_MAC
|
||||||
|
poller = new MacPoller();
|
||||||
|
- poller->setUpPoller();
|
||||||
|
#else
|
||||||
|
poller = new WindowsPoller();
|
||||||
|
- poller->setUpPoller();
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
+ if (!poller.isNull()) {
|
||||||
|
+ poller.data()->setUpPoller();
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
void KIdleTimePrivate::unloadCurrentSystem()
|
||||||
|
{
|
||||||
|
- if (poller) {
|
||||||
|
- poller->unloadPoller();
|
||||||
|
+ if (!poller.isNull()) {
|
||||||
|
+ poller.data()->unloadPoller();
|
||||||
|
#ifdef Q_WS_X11
|
||||||
|
- if (qobject_cast<XSyncBasedPoller*>(poller) == 0) {
|
||||||
|
+ if (qobject_cast<XSyncBasedPoller*>(poller.data()) == 0) {
|
||||||
|
#endif
|
||||||
|
- poller->deleteLater();
|
||||||
|
+ poller.data()->deleteLater();
|
||||||
|
#ifdef Q_WS_X11
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
@@ -216,7 +229,7 @@
|
||||||
|
|
||||||
|
if (catchResume) {
|
||||||
|
emit q->resumingFromIdle();
|
||||||
|
- catchResume = false;
|
||||||
|
+ q->stopCatchingResumeEvent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -236,14 +249,14 @@
|
||||||
|
{
|
||||||
|
Q_D(KIdleTime);
|
||||||
|
|
||||||
|
- d->poller->simulateUserActivity();
|
||||||
|
+ d->poller.data()->simulateUserActivity();
|
||||||
|
}
|
||||||
|
|
||||||
|
int KIdleTime::idleTime() const
|
||||||
|
{
|
||||||
|
Q_D(const KIdleTime);
|
||||||
|
|
||||||
|
- return d->poller->forcePollRequest();
|
||||||
|
+ return d->poller.data()->forcePollRequest();
|
||||||
|
}
|
||||||
|
|
||||||
|
QHash<int, int> KIdleTime::idleTimeouts() const
|
||||||
|
Index: kidletime.h
|
||||||
|
===================================================================
|
||||||
|
--- kidletime.h (.../tags/KDE/4.4.2/kdelibs/kutils/kidletime) (revision 1118483)
|
||||||
|
+++ kidletime.h (.../branches/KDE/4.4/kdelibs/kutils/kidletime) (revision 1118483)
|
||||||
|
@@ -99,7 +99,7 @@
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
int addIdleTimeout(int msec);
|
||||||
|
-
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Stops catching the idle timeout identified by the token \c identifier,
|
||||||
|
* if it was registered earlier with addIdleTimeout.
|
||||||
|
@@ -108,7 +108,7 @@
|
||||||
|
* @param identifier the token returned from addIdleTimeout of the timeout you want to stop listening to
|
||||||
|
*/
|
||||||
|
void removeIdleTimeout(int identifier);
|
||||||
|
-
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Stops catching every set timeout (if any). This means that after calling this method, the signal
|
||||||
|
* \link timeoutReached won't be called again until you will add another timeout
|
||||||
|
@@ -117,7 +117,7 @@
|
||||||
|
* @see addIdleTimeout
|
||||||
|
*/
|
||||||
|
void removeAllIdleTimeouts();
|
||||||
|
-
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Catches the next resume from idle event. This means that whenever user activity will be registered, or
|
||||||
|
* \link simulateUserActivity is called, the signal \link resumingFromIdle will be triggered.
|
||||||
|
@@ -156,7 +156,7 @@
|
||||||
|
* @see catchNextResumeEvent
|
||||||
|
*/
|
||||||
|
void resumingFromIdle();
|
||||||
|
-
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Triggered when the system has been idle for x milliseconds, identified by the previously set
|
||||||
|
* timeout.
|
||||||
|
Index: xsyncbasedpoller.cpp
|
||||||
|
===================================================================
|
||||||
|
--- xsyncbasedpoller.cpp (.../tags/KDE/4.4.2/kdelibs/kutils/kidletime) (revision 1118483)
|
||||||
|
+++ xsyncbasedpoller.cpp (.../branches/KDE/4.4/kdelibs/kutils/kidletime) (revision 1118483)
|
||||||
|
@@ -23,10 +23,6 @@
|
||||||
|
#include <klocalizedstring.h>
|
||||||
|
#include <kglobal.h>
|
||||||
|
|
||||||
|
-#ifdef HAVE_XTEST
|
||||||
|
-#include <X11/keysym.h>
|
||||||
|
-#include <X11/extensions/XTest.h>
|
||||||
|
-#endif // HAVE_XTEST
|
||||||
|
#include <fixx11h.h>
|
||||||
|
|
||||||
|
class XSyncBasedPollerHelper
|
||||||
|
@@ -52,19 +48,17 @@
|
||||||
|
|
||||||
|
XSyncBasedPoller::XSyncBasedPoller(QWidget *parent)
|
||||||
|
: AbstractSystemPoller(parent)
|
||||||
|
-#ifdef HAVE_XSYNC
|
||||||
|
, m_display(QX11Info::display())
|
||||||
|
, m_idleCounter(X::None)
|
||||||
|
, m_resetAlarm(X::None)
|
||||||
|
-#endif
|
||||||
|
, m_available(true)
|
||||||
|
{
|
||||||
|
Q_ASSERT(!s_globalXSyncBasedPoller->q);
|
||||||
|
s_globalXSyncBasedPoller->q = this;
|
||||||
|
|
||||||
|
-#ifdef HAVE_XSYNC
|
||||||
|
int sync_major, sync_minor;
|
||||||
|
int ncounters;
|
||||||
|
+ XSyncSystemCounter *counters;
|
||||||
|
|
||||||
|
if (!XSyncQueryExtension(m_display, &m_sync_event, &m_sync_error)) {
|
||||||
|
m_available = false;
|
||||||
|
@@ -78,33 +72,29 @@
|
||||||
|
|
||||||
|
kDebug() << sync_major << sync_minor;
|
||||||
|
|
||||||
|
- m_counters = XSyncListSystemCounters(m_display, &ncounters);
|
||||||
|
+ counters = XSyncListSystemCounters(m_display, &ncounters);
|
||||||
|
|
||||||
|
bool idleFound = false;
|
||||||
|
|
||||||
|
for (int i = 0; i < ncounters; ++i) {
|
||||||
|
- if (!strcmp(m_counters[i].name, "IDLETIME")) {
|
||||||
|
+ if (!strcmp(counters[i].name, "IDLETIME")) {
|
||||||
|
+ m_idleCounter = counters[i].counter;
|
||||||
|
idleFound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- XSyncFreeSystemCounterList(m_counters);
|
||||||
|
+ XSyncFreeSystemCounterList(counters);
|
||||||
|
|
||||||
|
if (!idleFound) {
|
||||||
|
m_available = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
-#else
|
||||||
|
- m_available = false;
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
if (m_available) {
|
||||||
|
kDebug() << "XSync seems available and ready";
|
||||||
|
} else {
|
||||||
|
kDebug() << "XSync seems not available";
|
||||||
|
}
|
||||||
|
-
|
||||||
|
}
|
||||||
|
|
||||||
|
XSyncBasedPoller::~XSyncBasedPoller()
|
||||||
|
@@ -118,43 +108,21 @@
|
||||||
|
|
||||||
|
bool XSyncBasedPoller::setUpPoller()
|
||||||
|
{
|
||||||
|
-#ifdef HAVE_XSYNC
|
||||||
|
- int ncounters;
|
||||||
|
-
|
||||||
|
if (!isAvailable()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
kDebug() << "XSync Inited";
|
||||||
|
|
||||||
|
- m_counters = XSyncListSystemCounters(m_display, &ncounters);
|
||||||
|
-
|
||||||
|
- bool idleFound = false;
|
||||||
|
-
|
||||||
|
- for (int i = 0; i < ncounters && !m_idleCounter; ++i) {
|
||||||
|
- if (!strcmp(m_counters[i].name, "IDLETIME")) {
|
||||||
|
- m_idleCounter = m_counters[i].counter;
|
||||||
|
- idleFound = true;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (!idleFound) {
|
||||||
|
- return false;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
KApplication::kApplication()->installX11EventFilter(this);
|
||||||
|
|
||||||
|
kDebug() << "Supported, init completed";
|
||||||
|
|
||||||
|
return true;
|
||||||
|
-#else
|
||||||
|
- return false;
|
||||||
|
-#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void XSyncBasedPoller::unloadPoller()
|
||||||
|
{
|
||||||
|
- //XSyncFreeSystemCounterList( m_counters );
|
||||||
|
}
|
||||||
|
|
||||||
|
void XSyncBasedPoller::addTimeout(int nextTimeout)
|
||||||
|
@@ -162,24 +130,21 @@
|
||||||
|
/* We need to set the counter to the idle time + the value
|
||||||
|
* requested for next timeout
|
||||||
|
*/
|
||||||
|
-#ifdef HAVE_XSYNC
|
||||||
|
+
|
||||||
|
+ // If there's already an alarm for the requested timeout, skip
|
||||||
|
+ if (m_timeoutAlarm.contains(nextTimeout)) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
XSyncValue timeout;
|
||||||
|
XSyncAlarm newalarm = X::None;
|
||||||
|
- /*XSyncValue idleTime;
|
||||||
|
- XSyncValue result;
|
||||||
|
- int overflow;*/
|
||||||
|
|
||||||
|
-// XSyncQueryCounter(m_display, m_idleCounter, &idleTime);
|
||||||
|
-
|
||||||
|
XSyncIntToValue(&timeout, nextTimeout);
|
||||||
|
|
||||||
|
-// XSyncValueAdd(&result, idleTime, timeout, &overflow);
|
||||||
|
-
|
||||||
|
setAlarm(m_display, &newalarm, m_idleCounter,
|
||||||
|
XSyncPositiveComparison, timeout);
|
||||||
|
|
||||||
|
- m_timeoutAlarm[nextTimeout] = newalarm;
|
||||||
|
-#endif
|
||||||
|
+ m_timeoutAlarm.insert(nextTimeout, newalarm);
|
||||||
|
}
|
||||||
|
|
||||||
|
int XSyncBasedPoller::forcePollRequest()
|
||||||
|
@@ -189,25 +154,19 @@
|
||||||
|
|
||||||
|
int XSyncBasedPoller::poll()
|
||||||
|
{
|
||||||
|
-#ifdef HAVE_XSYNC
|
||||||
|
XSyncValue idleTime;
|
||||||
|
-
|
||||||
|
XSyncQueryCounter(m_display, m_idleCounter, &idleTime);
|
||||||
|
|
||||||
|
return XSyncValueLow32(idleTime);
|
||||||
|
-#endif
|
||||||
|
- return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void XSyncBasedPoller::removeTimeout(int timeout)
|
||||||
|
{
|
||||||
|
-#ifdef HAVE_XSYNC
|
||||||
|
if (m_timeoutAlarm.contains(timeout)) {
|
||||||
|
XSyncAlarm a = m_timeoutAlarm[timeout];
|
||||||
|
- m_timeoutAlarm.remove(timeout);
|
||||||
|
XSyncDestroyAlarm(m_display, a);
|
||||||
|
+ m_timeoutAlarm.remove(timeout);
|
||||||
|
}
|
||||||
|
-#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<int> XSyncBasedPoller::timeouts() const
|
||||||
|
@@ -217,15 +176,14 @@
|
||||||
|
|
||||||
|
void XSyncBasedPoller::stopCatchingIdleEvents()
|
||||||
|
{
|
||||||
|
-#ifdef HAVE_XSYNC
|
||||||
|
- XSyncDestroyAlarm(m_display, m_resetAlarm);
|
||||||
|
- m_resetAlarm = X::None;
|
||||||
|
-#endif
|
||||||
|
+ if (m_resetAlarm != X::None) {
|
||||||
|
+ XSyncDestroyAlarm(m_display, m_resetAlarm);
|
||||||
|
+ m_resetAlarm = X::None;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
void XSyncBasedPoller::catchIdleEvent()
|
||||||
|
{
|
||||||
|
-#ifdef HAVE_XSYNC
|
||||||
|
XSyncValue idleTime;
|
||||||
|
|
||||||
|
XSyncQueryCounter(m_display, m_idleCounter, &idleTime);
|
||||||
|
@@ -242,25 +200,22 @@
|
||||||
|
XSyncValueAdd(&plusone, idleTime, add, &overflow);
|
||||||
|
setAlarm(m_display, &m_resetAlarm, m_idleCounter,
|
||||||
|
XSyncNegativeComparison, plusone);
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
}
|
||||||
|
|
||||||
|
void XSyncBasedPoller::reloadAlarms()
|
||||||
|
{
|
||||||
|
XSyncValue timeout;
|
||||||
|
|
||||||
|
- foreach(int nextTimeout, m_timeoutAlarm.keys()) {
|
||||||
|
- XSyncIntToValue(&timeout, nextTimeout);
|
||||||
|
+ for (QHash<int, XSyncAlarm>::iterator i = m_timeoutAlarm.begin(); i != m_timeoutAlarm.end(); ++i) {
|
||||||
|
+ XSyncIntToValue(&timeout, i.key());
|
||||||
|
|
||||||
|
- setAlarm(m_display, &(m_timeoutAlarm[nextTimeout]), m_idleCounter,
|
||||||
|
+ setAlarm(m_display, &(i.value()), m_idleCounter,
|
||||||
|
XSyncPositiveComparison, timeout);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool XSyncBasedPoller::x11Event(XEvent *event)
|
||||||
|
{
|
||||||
|
-#ifdef HAVE_XSYNC
|
||||||
|
XSyncAlarmNotifyEvent *alarmEvent;
|
||||||
|
|
||||||
|
if (event->type != m_sync_event + XSyncAlarmNotify) {
|
||||||
|
@@ -273,11 +228,11 @@
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
- foreach(int timeout, m_timeoutAlarm.keys()) {
|
||||||
|
- if (alarmEvent->alarm == m_timeoutAlarm[timeout]) {
|
||||||
|
+ for (QHash<int, XSyncAlarm>::const_iterator i = m_timeoutAlarm.constBegin(); i != m_timeoutAlarm.constEnd(); ++i) {
|
||||||
|
+ if (alarmEvent->alarm == i.value()) {
|
||||||
|
/* Bling! Caught! */
|
||||||
|
- emit timeoutReached(timeout);
|
||||||
|
- // Update back the alarm to fire back if the system gets inactive for the same time
|
||||||
|
+ emit timeoutReached(i.key());
|
||||||
|
+ // Update the alarm to fire back if the system gets inactive for the same time
|
||||||
|
catchIdleEvent();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@@ -291,12 +246,8 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
-#else
|
||||||
|
- return false;
|
||||||
|
-#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
-#ifdef HAVE_XSYNC
|
||||||
|
void XSyncBasedPoller::setAlarm(Display *dpy, XSyncAlarm *alarm, XSyncCounter counter,
|
||||||
|
XSyncTestType test, XSyncValue value)
|
||||||
|
{
|
||||||
|
@@ -315,22 +266,16 @@
|
||||||
|
flags = XSyncCACounter | XSyncCAValueType | XSyncCATestType |
|
||||||
|
XSyncCAValue | XSyncCADelta;
|
||||||
|
|
||||||
|
- if (*alarm)
|
||||||
|
+ if (*alarm) {
|
||||||
|
XSyncChangeAlarm(dpy, *alarm, flags, &attr);
|
||||||
|
- else
|
||||||
|
+ } else {
|
||||||
|
*alarm = XSyncCreateAlarm(dpy, flags, &attr);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
void XSyncBasedPoller::simulateUserActivity()
|
||||||
|
{
|
||||||
|
-#ifdef HAVE_XTEST
|
||||||
|
- Display* display = QX11Info::display();
|
||||||
|
- XTestFakeMotionEvent(display, 0, 1, 2, 0);
|
||||||
|
- XSync(display, false);
|
||||||
|
-#endif // HAVE_XTEST
|
||||||
|
+ XResetScreenSaver(QX11Info::display());
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "xsyncbasedpoller.moc"
|
||||||
|
-
|
||||||
|
-
|
||||||
|
Index: xscreensaverbasedpoller.cpp
|
||||||
|
===================================================================
|
||||||
|
--- xscreensaverbasedpoller.cpp (.../tags/KDE/4.4.2/kdelibs/kutils/kidletime) (revision 1118483)
|
||||||
|
+++ xscreensaverbasedpoller.cpp (.../branches/KDE/4.4/kdelibs/kutils/kidletime) (revision 1118483)
|
||||||
|
@@ -25,12 +25,6 @@
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/extensions/scrnsaver.h>
|
||||||
|
|
||||||
|
-#ifdef HAVE_XTEST
|
||||||
|
-#include <X11/keysym.h>
|
||||||
|
-#include <X11/extensions/XTest.h>
|
||||||
|
-#include <fixx11h.h>
|
||||||
|
-#endif // HAVE_XTEST
|
||||||
|
-
|
||||||
|
XScreensaverBasedPoller::XScreensaverBasedPoller(QWidget *parent)
|
||||||
|
: WidgetBasedPoller(parent)
|
||||||
|
{
|
||||||
|
@@ -72,11 +66,7 @@
|
||||||
|
void XScreensaverBasedPoller::simulateUserActivity()
|
||||||
|
{
|
||||||
|
stopCatchingIdleEvents();
|
||||||
|
-#ifdef HAVE_XTEST
|
||||||
|
- Display* display = QX11Info::display();
|
||||||
|
- XTestFakeMotionEvent(display, 0, 1, 2, 0);
|
||||||
|
- XSync(display, false);
|
||||||
|
-#endif // HAVE_XTEST
|
||||||
|
+ XResetScreenSaver(QX11Info::display());
|
||||||
|
emit resumingFromIdle();
|
||||||
|
}
|
||||||
|
|
||||||
|
Index: xsyncbasedpoller.h
|
||||||
|
===================================================================
|
||||||
|
--- xsyncbasedpoller.h (.../tags/KDE/4.4.2/kdelibs/kutils/kidletime) (revision 1118483)
|
||||||
|
+++ xsyncbasedpoller.h (.../branches/KDE/4.4/kdelibs/kutils/kidletime) (revision 1118483)
|
||||||
|
@@ -26,10 +26,8 @@
|
||||||
|
|
||||||
|
#include <config-kidletime.h>
|
||||||
|
|
||||||
|
-#ifdef HAVE_XSYNC
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/extensions/sync.h>
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
class XSyncBasedPoller : public AbstractSystemPoller
|
||||||
|
{
|
||||||
|
@@ -61,22 +59,16 @@
|
||||||
|
int poll();
|
||||||
|
void reloadAlarms();
|
||||||
|
|
||||||
|
-#ifdef HAVE_XSYNC
|
||||||
|
private:
|
||||||
|
void setAlarm(Display *dpy, XSyncAlarm *alarm, XSyncCounter counter,
|
||||||
|
XSyncTestType test, XSyncValue value);
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
private:
|
||||||
|
-#ifdef HAVE_XSYNC
|
||||||
|
Display * m_display;
|
||||||
|
int m_sync_event, m_sync_error;
|
||||||
|
- XSyncSystemCounter *m_counters;
|
||||||
|
XSyncCounter m_idleCounter;
|
||||||
|
QHash<int, XSyncAlarm> m_timeoutAlarm;
|
||||||
|
XSyncAlarm m_resetAlarm;
|
||||||
|
-#endif
|
||||||
|
- QWidget * m_filterWidget;
|
||||||
|
bool m_available;
|
||||||
|
};
|
||||||
|
|
15
kdelibs.spec
15
kdelibs.spec
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
Summary: KDE Libraries
|
Summary: KDE Libraries
|
||||||
Version: 4.4.2
|
Version: 4.4.2
|
||||||
Release: 3%{?dist}
|
Release: 4%{?dist}
|
||||||
|
|
||||||
Name: kdelibs
|
Name: kdelibs
|
||||||
Epoch: 6
|
Epoch: 6
|
||||||
@ -87,6 +87,11 @@ Patch27: kdelibs-4.3.98-no_rpath.patch
|
|||||||
# upstreamable
|
# upstreamable
|
||||||
|
|
||||||
## 4.4 upstream
|
## 4.4 upstream
|
||||||
|
# https://bugzilla.redhat.com/585242
|
||||||
|
# http://bugs.kde.org/206455
|
||||||
|
Patch100: kdelibs-4.4.2-kate-inputmethod.patch
|
||||||
|
# fix kidletime, http://bugs.kde.org/231628, 227279, 218468
|
||||||
|
Patch101: kdelibs-4.4.2-kidletime.patch
|
||||||
|
|
||||||
## trunk upstream
|
## trunk upstream
|
||||||
Patch110: kdelibs-4.4.1-k3passworddialog_qt47.patch
|
Patch110: kdelibs-4.4.1-k3passworddialog_qt47.patch
|
||||||
@ -239,6 +244,10 @@ format for easy browsing.
|
|||||||
# upstreamable patches
|
# upstreamable patches
|
||||||
|
|
||||||
# upstream patches
|
# upstream patches
|
||||||
|
%patch100 -p0 -b .kate_inputmethod
|
||||||
|
pushd kutils/kidletime
|
||||||
|
%patch101 -p0 -b .kidletime
|
||||||
|
popd
|
||||||
%{?_qt47:%patch110 -p1 -b .k3passworddialog_qt47}
|
%{?_qt47:%patch110 -p1 -b .k3passworddialog_qt47}
|
||||||
|
|
||||||
# security fix
|
# security fix
|
||||||
@ -431,6 +440,10 @@ rm -rf %{buildroot}
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Apr 24 2010 Rex Dieter <rdieter@fedoraproject.org> - 6:4.4.2-4
|
||||||
|
- fix kidletime (kde#231628,kde#227279,kde#218468)
|
||||||
|
- kate part ignores japanese input from input method (#585242,kde#206455)
|
||||||
|
|
||||||
* Thu Apr 15 2010 Rex Dieter <rdieter@fedoraproject.org> - 6:4.4.2-3
|
* Thu Apr 15 2010 Rex Dieter <rdieter@fedoraproject.org> - 6:4.4.2-3
|
||||||
- cleanup/fix webkitkde Obsoletes a bit more (#582469)
|
- cleanup/fix webkitkde Obsoletes a bit more (#582469)
|
||||||
- (Build)Requies: cmake >= 2.6.4
|
- (Build)Requies: cmake >= 2.6.4
|
||||||
|
Loading…
Reference in New Issue
Block a user