BUG: in tab mode closing one file closes multiple files

F@lk Brettschneider gigafalk at yahoo.com
Thu Jun 14 05:59:47 UTC 2001


Hi Roland,

Roland Krause wrote:
> 
> When using tab mode, when trying to close one file, multiple files can
> get closed.
> 
> Do this to reproduce the problem:
> 
> Switch MDI mode to "tab mode".
> Open a project.
> Open one file.
> Open another file.
> Click on the first file opened to focus it.
> Click File->Close or hit Ctrl-W to close the file and both files will
> get closed.
This is due the missing fix for the known focus problem in the TabPage
MDI mode. I found out the inner widget gets the focus but not the
covering KDockTabXXX. It's a litte bit tricky with those embedding
techniques. Hopefully, I will fix this problem this week when I have
more time and KDE works again.
First I helped jowenn with a fix for konqueror in the Dockwidgets, then
KDE was completely fucked off with the latest CVS (kdm crashed, kaccel
crashed, DCOP as well).

> 
> Falk, somewhere on the way I have lost the overview... there are too
> many functions that close views and docs. 
Generally, there's a big difference between closing a document and
closing a view in an MDI program since many views can exist for one
document. close(document) closes all-views-and-the-document, close(view)
just closes-one-single-view-but-not-necessarily-the-document.

Note the file==document.

concerning closing a document there are: {
  the actual close routines: {
    DocViewMan::closeKWriteDoc(KWriteDoc* pDoc)
    DocViewMan::closeCDocBrowser(CDocBrowser* pDoc)
  }

  just slot redirections from CKDevelop which should result
  in calls for the 2 methods from above: {
    DocViewMan::doFileClose()
    DocViewMan::doFileCloseAll()
    DocViewMan::doProjectClose()
    DocViewMan::doCloseAllDocs()
  }
}

concerning closing a view there are: {
  the actual close routine: {
    DocViewMan::closeView(QWidget* pWnd)
  }

  subroutines of the one from above: {
    DocViewMan::closeEditView(CEditWidget* pView)
    DocViewMan::closeBrowserView(KHTMLView* pView)
  }
}

> Especially, I dont understand
> why DocViewMan::closeView() has a QWidget* as a parameter...
This is because it's either to CEditWidget* or KHTMLView*. We
dynamically cast it and then we call either closeKWriteDoc(),
closeCDocBrowser(). Originally, these two subroutines were part of
closeView() but we splitted it to avoid large functions.


I think that shows how easy it is at all ;-),
Ciao,
Falk

_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


-
to unsubscribe from this list send an email to kdevelop-devel-request at kdevelop.org with the following body:
unsubscribe »your-email-address«



More information about the KDevelop-devel mailing list