WM managed MDI (was Re: Three different tab implementations)

Christoph Cullmann cullmann at babylon2k.de
Mon Feb 3 19:15:24 GMT 2003

Hash: SHA1

> KEdit is an SDI application. In which way does kate offer (MDI/SDI related)
> functionality that is not part of KEdit?
> The anser to that question might bring insight to the additions that are
> needed to do WM-based MDI and/or the feasability of such approach.
My favourite thing is the spliting of view in one window, you get two views 
near each other of equal width without having to mess around with window 
movements and resizing. 
Other nice thing is that you can use the fileselector in kate (the 
kdiroperator in the sidebar) to browse your files and kate will only open a 
file one time and if you again hit the same one (after you have opened some 
over) let it come up as active view again. Cylcling through all documents, 
the document list and more minor things like that are nice, too (but most of 
this little things can be emulated by the WM, too, if it is knowing about 
which windows belong to kate and which of them are documents to take in 

But beside that, the biggest advantage of MDI over SDI is: speed
Kate supports plugins (which may dock widgets into its mainwindow, as allready 
some do and which use xmlgui for the gui merging), has some additional 
thingies like fileselector or (if ready for 3.2) some kind of project tree 
(or better: collection of files which can be saved/loaded from a savefile). 
All that is nice, but if you would have to open one mainwindow for each file 
(like it would be in SDI), kate would be slow as a dog (same could be said 
for quanta and kdevelop I guess, as they have at least as much stuff like 
that as kate, no, they even have much more ;)

In short: If there would be a way to have a lib (if it uses the WM or not) to 

1) tabbing of views
2) docking of views like seen in kate or konqueror sidebar (k, allready 
possible via kdockwidget, but the undocked state should be reworked)
3) enable a kind of splitting the view (which would resize the current view 
window and place a equal sized one to the right/left/top/bottom of it)
4) enable "toplevel mode" as called in kdevelop (which means one window for 
the menu/toolbar/statusbar and one window per view or toolwidget)

I think most apps which uses atm their own mdi code could use this lib.
Perhaps I missed some stuff, never said that I am the mdi expert ;) Falk 
should know more, as he designed the qextmdi lib, which is IMHO a nice 
example for how to handle the stuff libwise (k, don't use WM and maybe not 
completly bug free, but playing with the different MDI modes in kdevelop at 
least gives you a expression of what is doable & wanted, only splitter mode 
is not in qextmdi, or ?).

Only one important note: for some apps it is not possible to rely on kwm as WM 
I guess, therefor the libs really needs to work even if the WM doesn's 
support the whole tabbing/splitting/... stuff. That could be quiet tricky I 
guess, but kdevelop or quanta would need that, as they are very heavily used 
outside kde environment.


- -- 
Christoph Cullmann
KDE Developer, kde.org Co-Maintainer
http://www.babylon2k.de, cullmann at kde.org
Version: GnuPG v1.2.1 (GNU/Linux)


More information about the kde-core-devel mailing list