URL:
<http://savannah.gnu.org/bugs/?19098>
Summary: NSDocumentController: documents can open twice in
same app (easy to fix)
Project: GNUstep
Submitted by: guenthernoack
Submitted on: Monday 19/02/07 at 18:30
Category: Gui/AppKit
Severity: 3 - Normal
Item Group: Bug
Status: None
Privacy: Public
Assigned to: None
Open/Closed: Open
Discussion Lock: Any
_______________________________________________________
Details:
When opening a document in a NSDocument-based application, it's possible to
open a document in two different document windows at once by using different
workflows "instance" 1 and 2 of the document:
a) double clicking it in GWorkspace
b) opening it using the "Document/Open..." dialog
Comparing the used path name, it's one time /home/guenther/Desktop/Test.rtf
(when using GWorkspace) and it's one time /usr/home/guenther/Desktop/Test.rtf
(when using the open panel). So the problem only applies when a parent
directory of the file is symlinked.
This can be fixed by calling -stringByResolvingAllSymlinksInPath on the file
name somewhere. In NSDocument.m, line 405 (GNUstep-stable), there's a note
that Apple doesn't do this, but I find it hard to believe Apple also fails at
this issue. (I can't verify it.) In case Apple really doesn't do it, this
would probably be a place where GNUstep can be better. ;-)
There are two ways to solve the problem. It's all about where to place that
call.
* In GWorkspace: If Apple doesn't replace symlinks when opening files, which
I highly doubt, this is probably how they do it.
* In NSDocument & NSDocumentController: In NSDocument, normalize the file
name when setting it for the first time. In NSDocumentController, in
openDocumentWithContentsOfFile:display: and
openDocumentWithContentsOfURL:display:, normalize it as well. (BTW, in the
latter the check if a URL has been opened twice also doesn't work for
non-file:// URLs)
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?19098>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
_______________________________________________
Bug-gnustep mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-gnustep