[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kwrite-devel
Subject:    Re: Review Request: Provide (mostly) automatic synchronization between
From:       "Thomas Friedrichsmeier" <thomas.friedrichsmeier () ruhr-uni-bochum ! de>
Date:       2009-08-11 12:19:00
Message-ID: 20090811121900.18071.70426 () localhost
[Download RAW message or body]


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.kde.org/r/1238/
-----------------------------------------------------------

(Updated 2009-08-11 12:19:00.042958)


Review request for Kate and kdelibs.


Changes
-------

Ok, I've worked a bit on style, naming, and making this yet easier to use.

As a demonstration / test case, I'll inline a very short additional diff that fixes the described GUI \
synchronization issues for kate.

Index: app/katemainwindow.cpp
===================================================================
--- app/katemainwindow.cpp	(revision 1009906)
+++ app/katemainwindow.cpp	(working copy)
@@ -63,6 +63,7 @@
 #include <KRecentFilesAction>
 #include <KToggleFullScreenAction>
 #include <KAboutData>
+#include <KXmlGuiClientSyncer>
 
 #include <QDragEnterEvent>
 #include <QEvent>
@@ -170,6 +171,7 @@
   setStandardToolBarMenuEnabled( true );
   setXMLFile( "kateui.rc" );
   createShellGUI ( true );
+  KXmlGuiClientSyncer::self ()->registerFactory (guiFactory ());
 
   kDebug() << "****************************************************************************" << sconfig;


Summary
-------

First to sum up the problem, I'm trying to solve. I'll use konqueror as an example:
1) Fire up two instances of konqueror. In one of the instances, set the shortcut of "Show History" to \
"Shift+F6". Now switch to the other instance: The change has not been propagated. Ok, perhaps you did not \
expect that to work in the first place, but now: 2) Fire up a single instance of konqueror, the open a \
new window (File->New Window). Do the same game as in 1. The change is not propagated between the two \
toplevel windows of the same konqueror instance, either. Finally: 3) Fire up a single instance of \
konqueror, with a single toplevel window. Open a second tab inside this window. Navigate both tabs to \
e.g. http://www.kde.org. Switch to tab A. Change the shortcut of "View Document Source" to "Shift+F6". \
Take a look at the "View"-menu to see the new shortcut. Now switch to tab B. Take another look at the \
"View"-menu. The shortcut is still at the previous setting, here. Switch back to tab A. The shortcut is \
back to the previous setting as well. 4) If you like to, play games 1-3 with modifying the toolbars, \
instead of shortcuts.

So much for the bug description. Konqueror is not really to blame, here, and neither is it the only \
application to be affected. The problem is that we're missing a mechanism to synchronize user settings \
between separate instances of KXMLGUIClients. That's what the new class KXmlGuiClientSyncer - contained \
in this patch - does. See the API-documentation within for usage details. For the "essence" of the code, \
see KXmlGuiClientSyncerPrivate::uiRcFileChanged().

Some points, I wasn't sure about:
1) Originally, I tried to incorporate this into KXMLGUIClient, directly (or rather KXMLGUIClientPrivate). \
That would have allowed for *fully* automatic synchronization, i.e. without having to register/watch the \
clients manually. However, kio depends on kdeui, and this would have added a cyclic dependency back to \
kio. Any idea on how to work around this? Or this semi-automatic solution safer in the first place? 2) I \
placed this inside kio, pretty much for the reason above. Is this appropriate? 3) Which kDebug area to \
use?


Diffs (updated)
-----

  trunk/KDE/kdelibs/includes/CMakeLists.txt 1006783 
  trunk/KDE/kdelibs/includes/KXmlGuiClientSyncer PRE-CREATION 
  trunk/KDE/kdelibs/kdeui/xmlgui/kxmlguiclient.h 1009993 
  trunk/KDE/kdelibs/kio/CMakeLists.txt 1006783 
  trunk/KDE/kdelibs/kio/kio/kxmlguiclientsyncer.h PRE-CREATION 
  trunk/KDE/kdelibs/kio/kio/kxmlguiclientsyncer.cpp PRE-CREATION 
  trunk/KDE/kdelibs/kio/kio/kxmlguiclientsyncer_p.h PRE-CREATION 

Diff: http://reviewboard.kde.org/r/1238/diff


Testing
-------


Thanks,

Thomas

_______________________________________________
KWrite-Devel mailing list
KWrite-Devel@kde.org
https://mail.kde.org/mailman/listinfo/kwrite-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic