PATCH: Custom dcop interface for KMainWindow-derived classes.

David Faure dfaure at trolltech.com
Wed Jul 16 17:44:57 BST 2003


KMainwindow creates a KMainWindowInterface DCOPObject with the widget name as 
dcopobject name.
But in Konqueror I'd like to provide a derived interface with those methods 
and other additional methods.
I can't add a virtual method to KMainWindow for this (calling it from the 
constructor wouldn't do much good anyway), and creating my own KonqMainWindow 
DCOP object after KMainWindow created its own, leads to a name conflict.
If I rename the KonqMainWindow's dcop interface, it would break existing 
scripts. So the dcop interface really has to inherit and replace 
kmainwindow's, and it has to be available right away (not on-demand like in 
KOffice), still for compat purposes.

I tried adding a new constructor to KMainWindow, with a DCOPObject* parameter, 
to make it possible for an application to provide its own dcop object for its 
mainwindow... but this doesn't work either since KMainWindowInterface assumes 
the mainwindow to be constructed already, which is not the case if I create 
it before the mainwindow (so it crashes in KMainWindowInterface).

Of course one could delete the KMainWindow-created dcop object,
but that's a small waste of time.

Therefore the only solution I see is passing a bool createDCOPInterface
to the constructors (KMainWindow, KParts::MainWindow), so that KonqMainWindow 
can set it to false and create its own dcop interface afterwards.
bools suck for readability and extensibility, so it's an enum instead.
Sorry for the long explanation, here comes the patch.

PS: virtual inheritance from DCOPObject makes it quite awkward to pass a name 
to the DCOPObject, I wish we'd stop using this weird inheritance for this 
case...

-- 
David FAURE, faure at kde.org, sponsored by Trolltech to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).
Qtella users - stability patches at http://blackie.dk/~dfaure/qtella.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kmainwindow.diff
Type: text/x-diff
Size: 3782 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20030716/167d38f0/attachment.diff>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kparts_mainwindow.diff
Type: text/x-diff
Size: 1521 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20030716/167d38f0/attachment-0001.diff>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: konq.diff
Type: text/x-diff
Size: 2319 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20030716/167d38f0/attachment-0002.diff>


More information about the kde-core-devel mailing list