Summary: | when restarting KDE the knotes-windows get distributed randomly over all virtual desktops | ||
---|---|---|---|
Product: | [Unmaintained] knotes | Reporter: | O Kullmann <o.kullmann> |
Component: | general | Assignee: | Michael Brade <brade> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
O Kullmann
2004-03-16 17:55:52 UTC
KDE 3.2.1 from current Debian SID, kernel 2.4.24: When I start knotes the screen gets cluttered with unending masses of empty new notes, CPU usage soars to 98% and I have to kill knotes to stop it. A window flickers in a corner of the desktop showing the message "copying libcal" ten times per second. In KDE 3.1 everything worked. Greetings, A.v. Heydwolff On Saturday 20 March 2004 22:12, Andreas Von Heydwolff wrote:
> KDE 3.2.1 from current Debian SID, kernel 2.4.24: When I
> start knotes the screen gets cluttered with unending masses of empty new
> notes, CPU usage soars to 98% and I have to kill knotes to stop it. A
> window flickers in a corner of the desktop showing the message "copying
> libcal" ten times per second. In KDE 3.1 everything worked.
The bug regarding all black notes is fixed once and for all. The bug not
restoring note positions I'll work on after CeBIT, but the new bug you just
described (CPU 98%, flickering window) I have never heard of. Please send me
your ~/.kde/share/apps/knotes directory zipped privately if there is no
private data of yours in it.
Thanks,
CVS commit by brade: Very Cool! Thanks to Lubos for his function that removes sm from the client leader KNotes is not managed anymore by KWin (again) and is now thus able to restore its notes properly on login with manually saved sessions. CCMAIL: 77783-done@bugs.kde.org, 76034-done@bugs.kde.org, 65744-done@bugs.kde.org M +1 -8 knote.cpp 1.108 M +2 -1 knotesapp.cpp 1.80 M +37 -1 main.cpp 1.25 --- kdepim/knotes/knote.cpp #1.107:1.108 @@ -62,6 +62,4 @@ #include <fixx11h.h> -extern Atom qt_sm_client_id; - using namespace KCal; @@ -73,10 +71,5 @@ KNote::KNote( KXMLGUIBuilder* builder, Q m_config( 0 ), m_journal( j ) { - // to disable kwin's session management (ie. saving positions of windows) we need to - // remove the session id from all note windows - XChangeProperty( x11Display(), winId(), qt_sm_client_id, XA_STRING, 8, - PropModeReplace, 0, 0 ); - - actionCollection()->setWidget( this ); + //actionCollection()->setWidget( this ); // if there is no title yet, use the start date if valid --- kdepim/knotes/knotesapp.cpp #1.79:1.80 @@ -415,5 +415,6 @@ void KNotesApp::showNote( KNote* note ) void KNotesApp::createNote( KCal::Journal *journal ) { - KNote *newNote = new KNote( this, domDocument(), journal ); + KNote *newNote = new KNote( this, domDocument(), journal, + 0, journal->uid().utf8() ); m_noteList.insert( newNote->noteId(), newNote ); --- kdepim/knotes/main.cpp #1.24:1.25 @@ -23,4 +23,8 @@ #include <kaboutdata.h> #include <klocale.h> +#include <kxerrorhandler.h> + +#include <X11/Xlib.h> +#include <X11/Xatom.h> #include "knotesapp.h" @@ -29,4 +33,35 @@ +void remove_sm_from_client_leader() +{ + Atom type; + int format, status; + unsigned long nitems = 0; + unsigned long extra = 0; + unsigned char *data = 0; + + Atom atoms[ 2 ]; + char *atom_names[ 2 ] = { "WM_CLIENT_LEADER", "SM_CLIENT_ID" }; + + XInternAtoms( qt_xdisplay(), atom_names, 2, False, atoms ); + + QWidget w; + KXErrorHandler handler; // ignore X errors + status = XGetWindowProperty( qt_xdisplay(), w.winId(), atoms[ 0 ], 0, 10000, + FALSE, XA_WINDOW, &type, &format, + &nitems, &extra, &data ); + + if (status == Success && !handler.error( false )) + { + if (data && nitems > 0) + { + Window leader = *((Window*) data); + XDeleteProperty( qt_xdisplay(), leader, atoms[ 1 ] ); + } + XFree(data); + } +} + + Application::Application() : KUniqueApplication(), mMainWindow( 0 ) @@ -87,4 +121,6 @@ int main( int argc, char* argv[] ) app.connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) ); + remove_sm_from_client_leader(); + int rval = app.exec(); |