qdiff: Opening external diff tool for multi-file diff is a poor user experience.

Bug #772224 reported by Dr Al
16
This bug affects 3 people
Affects Status Importance Assigned to Milestone
QBzr
Confirmed
Medium
Unassigned

Bug Description

If "bzr qdiff" is opened on a branch with changes in multiple files, all the files are shown in a single qdiff window. If an external diff tool is selected from the toolbar, the first file is opened in the diff tool, then when the diff tool quits, the second file is opened, etc. If there are a lot of changed files, this can be a tedious process and the only way to stop it (if you've seen enough) is to use task manager or similar to kill qdiff.

A number of diff tools (e.g. Diffuse, Beyond Compare) support tabbed diff windows. To take Beyond Compare as an example, there are two situations depending on whether it is running:

If Beyond Compare is not running, a new instance is started for the first file. When it exits, another new instance is started and the tabbed capability is completely ignored and if you've seen enough you have to kill qdiff through the task manager or similar.

If Beyond Compare is running, it tries to open the new diff in a new tab and returns immediately. As a result, all the files are opened in tabs. However, since it has returned immediately, qdiff has deleted the temporary files and this results in Beyond Compare showing a window full of tabs with no content (this method used to work well in earlier versions, but I guess the clean-up code has changed and it no longer works).

----

I've no idea how to go about implementing this, but if an internal list of known diff tools (with a sensible default for unknown ones) were maintained, the user experience could be changed according to whether the diff tool supports tabs (or equivalent):

If the diff tool supports tabs, start a new instance of the diff tool and open each changed file in a separate tab (there are usually command line options to do this). When this instance quits, tidy up accordingly.

If the diff tool doesn't support tabs, pop up a window with the list of changed files. When a user double clicks on a file (or selects and presses a button) open the diff tool with that single file.

Revision history for this message
Dr Al (abudden) wrote :

In the latter case (diff tool not supporting tabs), the clean-up could occur when the pop-up window has been closed and ALL subprocesses created by the pop-up window had finished. This way, you could double-click to open one file diff and then switch back to the pop-up and double-click to open a second one.

As well as allowing multiple file diffs at the same time, this would also mean that if qbzr doesn't realise that a diff tool supports tabbing (e.g. if a new version comes out), each file that is double-clicked would probably end up in a new tab anyway. Not as clean as just opening them all in tabs straight-away, but better than having to keep creating new windows every time.

Changed in qbzr:
status: New → Confirmed
importance: Undecided → Medium
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.