[Geany-devel] msgwindow double click

Dimitar Zhekov dimitar.zhekov at xxxxx
Sat Aug 20 13:35:05 UTC 2011


Since it's not part of the message parsing, but affects the double
clicking, I'll continue this thead a bit.

Currently, on a keypress / click on Compiler or Message line which
contains valid filename and a too large line number (editor.c:9999),
Geany does the following:

1. Opens the file, if not already open; that makes it's tab active.
2. Stores the previous file name and position, and the current file
   name with position -1 [our line # is too big] in the navqueue.
3. Attempts to seek to filename and position -1 and fails.
4. Does not focus editor on Enter / double click, since #3 failed.

(Of course, the steps are a bit different technically.)

What's wrong:

- The file tab becomes active for newly open files, but not for
  already open files.
- An invalid position will be stored in the navqueue. Sometimes
  (when that position becomes current?), both <- and -> buttons
  will be disabled.
- We reconginze the file, but neither switch to it's tab nor focus
  the editor.

My proposition:

1. Opens the file, if not already open; that makes it's tab active
   (same as before).
2. Stores the old filename and position.
2. Attempts to seek to the new position.
3. If successful [which implies that the file tab is activated],
   stores the new filename and position.
4. Otherwise, explicitly activates the file tab.
5. On Enter / double click, focuses the editor.

>From Geany/plugin developers point of view, navqueue_goto_line()
will remain the same.

Alternatively, we can simply replace an invalid position with the
current file position. The <- -> queue will be more consistent,
but if a plugin wants to seek to editor.c:9999 and do something
there, navqueue_goto_line() will "lie" that goto was successful.

So, please tell me what you think (and disregard my previous
comments about position -1 in the "msgwin line and column"
thread). Both variants are easy to implement.

E-gards: Jimmy

More information about the Devel mailing list