636 Commits

Author SHA1 Message Date
Jiří Techet
0285ec28a5 Move tm_source_file_update() to tm_workspace.c
The placement of this function in tm_source_file is not right - by moving
it to the workspace we can make the source file unaware of the existence
of the workspace (no inclusion of tm_workspace.h in tm_source_file any
more). Also change tm_source_file_new() so it doesn't offer the source file
update.

After this change
* TMWorkspace knows TMSourceFile and TMTag
* TMSourceFile knows TMTag
* TMTag knows TMSourceFile
2014-10-30 22:08:17 +01:00
Jiří Techet
26587454b0 Remove TmWorkObject and all the OO related stuff
In addition, rename all functions, parameters, comments etc. mentioning
work_object and remove unnecessary parameters of various functions.
Delete dead code paths.

Also move common functions like tm_get_real_path() from tm_work_object to
tm_source_file.
2014-10-18 21:40:10 +02:00
Colomban Wendling
75ab7103f1 Merge pull request #353 from b4n/tm-no-update-on-quit
Don't rebuild TagManager workspace tags when quitting
2014-10-12 16:02:40 +02:00
Colomban Wendling
f1da4b9914 Don't rebuild TagManager workspace tags when quitting
Updating the workspace is useless as the application will be shut down,
and not doing it can save a lot of time (almost 50% speedup quitting an
instance with all Geany source from `src/` open).
2014-10-11 01:40:10 +02:00
Nick Treleaven
ab7a0018b2 Don't prompt for reload from infobar when there are no unsaved changes
Also warn about losing undo history when there are no changes.
2014-10-10 16:59:43 +01:00
Nick Treleaven
541cb8dbcc Force disk check before save to prevent accidental overwriting
Useful e.g. with Save All when the modified file is not the current tab.
2014-09-30 17:10:53 +01:00
Nick Treleaven
3ab6579091 Notify user when trying to save read-only document 2014-09-26 11:44:07 +01:00
Nick Treleaven
4ceb9fb1f2 Add comment about throwing away read-only for renamed documents 2014-09-26 11:44:05 +01:00
Nick Treleaven
9d669a72f7 API: Rename document_reload_file -> document_reload_force
New name is clearer against document_reload_prompt.
Add deprecated alias.
2014-09-25 11:45:49 +01:00
Nick Treleaven
b646424ddb Only close reload infobar if the response succeeded 2014-09-24 12:21:32 +01:00
Nick Treleaven
3830240cb8 Confirm info-bar reload when document has modifications 2014-09-24 12:21:30 +01:00
Nick Treleaven
0a80a72f0b Set status id to STATUS_DISK_CHANGED when protecting document 2014-09-24 12:08:40 +01:00
Nick Treleaven
9a02525d1c Don't set document text as changed when file on disk is newer
Setting the document text as changed makes it too easy to accidentally
overwrite the file - e.g. when closing you're reminded to save it.
It also makes it slower to close documents you no longer want open.
Setting text as changed is still done if the user cancels the warning.
2014-09-24 12:08:24 +01:00
Nick Treleaven
06e40e512f Confirm whether to save protected documents
(Reuses existing strings).
2014-09-23 14:53:08 +01:00
Nick Treleaven
7450a992b5 Use 'Overwrite' rather than Save for clarity in reload infobar 2014-09-23 14:43:49 +01:00
Thomas Martitz
a6d11cb4f8 Use custom document info bar response IDs 2014-09-23 14:43:47 +01:00
Colomban Wendling
666fdf30fa Document document_find_by_id() parameter so Doxygen is happy 2014-08-29 17:06:51 +02:00
Nick Treleaven
18181c2e90 Support pseudo-unique IDs for documents
Add GeanyDocument::id, document_find_by_id() to plugin API.

This also fixes clicking on a Messages item whose document has been
closed and reused. Now the click will be ignored instead of jumping to
an unexpected line in the new document.
2014-08-19 15:40:05 +01:00
Colomban Wendling
dc140165ae Use GeanyFindFlags instead of plain integer when expecting Geany find flags
This makes the API more obvious on what argument is expected, and avoid
confusion between Geany and Scintilla find flags.
2014-08-19 03:42:58 +02:00
Colomban Wendling
bdc0f720e7 Remove unused flags from document_search_bar_find()
Passed-in flags was always 0, so the argument is not useful.
Also, this function expected Scintilla search flags rather than Geany
ones, making the API confusing for no good reason.
2014-08-19 03:40:52 +02:00
Colomban Wendling
593b9dd2c9 Merge branch 'single-line-regex' 2014-08-10 01:51:48 +02:00
Colomban Wendling
482d2732af Add support for single-line regular expressions 2014-08-10 01:46:16 +02:00
Colomban Wendling
a26bdd628f Fix crash when closing a document with visible infobars
Apparently the ::unrealize symbol is sent too late, after we destroyed
the widget and freed the GeanyDocument, and some signals like
::focus-in-event can still be fired on the widget after that.

So, properly use the ::destroy signal that is supposed to be fired when
others should release references to that instance.
2014-08-07 15:14:22 +02:00
Nick Treleaven
e1988964c1 Fix Windows build 2014-08-01 12:05:30 +01:00
Nick Treleaven
01b3103eaf Remove unread variable 2014-08-01 11:54:05 +01:00
Colomban Wendling
b65f49902f Fix closing the documents when quitting
When quitting we avoid doing some unnecessary actions, and used to
simply destroy the Scintilla widget (and thus the notebook page)
instead of the elaborate UI updates.

Unfortunately, when the infobars landed they changed what is packed as
a notebook page, and now destroying the Scintilla widget alone is not
enough to close the page.  Fix this by properly removing the whole page
no matter what it contains.

This issue was visible when quitting Geany with a project open.
2014-07-26 15:03:49 +02:00
Colomban Wendling
0682a25585 Fix crash when quitting with an infobar visible
When the infobar gets closed/destroyed it tries to focus the possibly
destroyed document, leading to a crash.
2014-07-26 13:36:19 +02:00
Thomas Martitz
ffcec43d01 document.c: Immediately mark as changed when document is externally deleted
Before infobar it didn't matter because the dialog was modal and interaction
with the doc was impossible. Now that you can interact it the doc should
be marked changed immediately.
2014-06-29 11:38:02 +02:00
Thomas Martitz
0f7db113e7 document.c: Restore lost document_set_text_changed(doc, TRUE) call
It got lost by accident in 5117940.
2014-06-29 11:38:02 +02:00
Thomas Martitz
c8970e2331 info bars: Show additional save button for the "reload file?" info bar
This allows overwriting the file right from the info bar.
2014-06-29 11:38:02 +02:00
Thomas Martitz
4b8f42cd9e info bars: Explicitely move focus back to the editor when closing
This does not seem to happen automatically, at least on GTK3.
2014-06-29 11:37:47 +02:00
Thomas Martitz
ab42662309 Fix racy glib assertion failure
Use g_signal_connect_object() to establish automatic and race-free signal
disconnection instead of the hand-crafted mechanism.
2014-06-29 11:29:07 +02:00
Colomban Wendling
35a212dffc Merge branch 'callbacks-cleanup' 2014-06-27 22:32:38 +02:00
Colomban Wendling
3ce25db632 Remove line number zoom hack as it is no longer necessary
Since cbf9813632d7ee921ffa1fda0d1f69128b2bc755 we have a proper
solution for maintaining line number consistent with the editor zoom,
so drop the old hack.

This also allows to remove the now useless third argument of
sci_set_line_numbers().
2014-06-27 22:23:48 +02:00
Thomas Martitz
721769e682 Fix build warning about missing return value. 2014-06-24 23:07:08 +02:00
Colomban Wendling
cc2f1879a8 Add printf attribute to document_show_message() for better safety
Add G_GNUC_PRINTF attribute to document_show_message() so some
compilers can check the format arguments match the format string.
2014-06-24 18:30:54 +02:00
Colomban Wendling
9bf647c5c3 Move on_clone1_activate() to callbacks.c 2014-06-24 18:26:44 +02:00
Thomas Martitz
135b60d25e callbacks: Refactor on_reload_as_activate() as document_reload_prompt()
The callback wasn't used from glade but is useful for some other places so
it's worth moving into document.c. This also fixes a bug where reload via sidebar
always reloads the current document instead of the actually clicked one.
2014-06-24 15:01:42 +02:00
Colomban Wendling
c79c983364 Fix build with GLib < 2.32
Second part of #1047.
2014-06-04 14:31:12 +02:00
Colomban Wendling
ea6ebaf48f Fix build with GTK < 2.24
Part of #1047.
2014-06-04 14:16:39 +02:00
Colomban Wendling
147167cfa5 infobars: Use wrap labels to avoid cropped infobars
Since the infobar is backed in a GtkPaned that allows "shrink", if the
content is too wide, it's far end will just get cropped.  Also, wrap
labels are nicer to display possibly long texts as it flows naturally.
2014-05-28 18:01:23 +02:00
Colomban Wendling
7a4b524661 Avoid code duplication in document_get_current() 2014-05-27 18:00:56 +02:00
Colomban Wendling
46f01bff59 Properly mirror document_get_from_page() in document_get_notebook_page()
Now document_get_from_page() supports arbitrary nesting inside the
notebook page, update document_get_notebook_page() to support it also,
by searching up for the direct notebook child rather than assuming it
is the ScintillaWidget's direct parent.
2014-05-27 17:55:00 +02:00
Colomban Wendling
d399957471 Fix an inverted check 2014-05-27 16:02:59 +02:00
Colomban Wendling
2b9ecc2e4f Remove unused variables and avoid variable shadowing 2014-05-26 16:24:24 +02:00
Thomas Martitz
19e24fb5ee infobars: Dismiss the info bar when reloading via toolbar button/keybinding. 2014-05-24 19:42:46 +02:00
Thomas Martitz
b96daf6fc0 infobars: Do not use GeanyWrapLabel for now, it has problems on gtk3. 2014-05-24 16:32:58 +02:00
Thomas Martitz
100e0e1bf1 infobars: Intercept some keys when the info bar is shown to allow interacting with it using the keyboard only.
When the info bar is shown tab/shift+tab and escape are intercepted.
* tab/shift+tab change the focus to the info bar buttons which can then be
  cycled through with more tab presses
* escape closes the info bar (same as clicking cancel)

Both keys aren't needed for the document because it's read-only. Other keys,
such arrow/page up/down, remain to the document for navigating.
2014-05-24 15:05:33 +02:00
Thomas Martitz
1dc96f1e50 infobars: Cancel "reload file" dialog when spawning the "resave file" one.
When the file was deleted from disk the message that the file is newer on
disk has become out of date and irrelevent.
2014-05-24 15:05:15 +02:00
Thomas Martitz
b487d8dea3 infobars: Do not show reload and resave messages more than once since only the
last one (respectively) is significant to the user.
2014-05-24 15:05:14 +02:00