Summary: | notes change size and position after restart | ||
---|---|---|---|
Product: | [Unmaintained] knotes | Reporter: | Hans-Rudi Denzler <hr.denzler> |
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
Hans-Rudi Denzler
2003-10-09 14:08:27 UTC
This seems to be corrected in the CVS version. I can replicate it in 3.1.4, but it seems fine in CVS from 2003-01-10. 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(); |