4766 Commits

Author SHA1 Message Date
Jiří Techet
ada4595264 Use global menubar on OS X
We have to disable quartz accelerator handling because otherwise
accelerators are performed also from other windows than the main
Geany editor (e.g. Ctrl+V with find dialog open performs the keybinding
Ctrl+V and inserts the text to the editor).

OS X applications have an extra menu entry to the left of the File menu -
an "application menu". This menu usually contains About, Preferences,
Quit. Many users, however, may be used to Geany from other platforms
and expect Preferences to be under the Edit menu so leave them there.
Quit and About are rarely used and the application menu is the place where
they are supposed to be - move these entries from other Geany menus there
and hide them in the affected menus (the quit entry is inserted automatically,
we just need to hide it from File).

Also tell OS X the Help menu is dedicated to help (we get search in
menu entries by name for free thanks to this).

The global menu should refresh automatically based on user actions.
Unfortunately this is not the case when gtk_menu_reorder_child()
is used because it does not emit any signals so the gtk-mac-integration
library doesn't see this call. Refresh the menu manually after calling
this function.
2015-03-04 12:40:36 +01:00
Jiří Techet
18d517bd95 Use gtk-mac-integration so app bundle can be created on OS X
This patch adds the gtk-mac-integration library and uses it to
adjust various paths in Geany to point it inside the app bundle
if Geany runs from inside the bundle.

It adds the utils_resource_dir() utility function to return
correct directories for various kinds of resources for all supported
operating systems. Using this function the patch adjusts all Geany
resource, plugin, icon, doc, and locale paths.
2015-03-04 12:40:27 +01:00
Jiří Techet
7b5df86bd1 Create geany_run_script.sh in the temporary directory instead of the working directory
Under some conditions, geany_run_script.sh is not deleted and we
have no means to detect this in Geany (e.g. when the terminal emulator
is started correctly but it fails to execute the script for some reason).
In this case it is better to keep the garbage in /tmp than the working
directory. Apart from that, it eliminates potential transfer of the run script
over a NFS and eliminates the visibility of the script in working directory
on Windows.

Apart from that this patch fixes some locale/utf8 conversion problems
and other subtle problems with the previous implementation.
2015-03-04 11:48:53 +01:00
Colomban Wendling
87af9597fc Make sci_get_cursor_virtual_space() GEANY_PRIVATE 2015-03-03 20:10:41 +01:00
Dimitar Zhekov
a5b99dc96d Add virtual column and selected chars to the statusbar
Closes https://sourceforge.net/p/geany/patches/10/
2015-03-03 20:07:11 +01:00
Colomban Wendling
1a6adc0d63 Fix build with GLib < 2.30 (oops) 2015-03-03 15:12:52 +01:00
Colomban Wendling
1c1d76721d Fix several tooltips to properly use plain text instead of markup
Most of our tree view tooltips were set from plain text values but
parsed as markup by GTK, which sometimes lead to markup errors, when
the tooltip value contained markup control characters.

This also adds ui_tree_view_set_tooltip_text_column() to the plugin
API so plugins can easily set plain text tooltips from tree views
columns.

Fixes https://sourceforge.net/p/geany/bugs/1091/
2015-02-28 19:15:00 +01:00
Colomban Wendling
8aa4f11cad Optimize notebook page -> document lookup and remove dead code
This actually fixes a theoretical bug introduced when notebook pages
stopped being ScintillaWidgets, but this bug had no effect because it
was in a dead code path -- because no, `page_num` never is -1 nor
`page` NULL.
2015-02-21 18:56:51 +01:00
Colomban Wendling
1a8de8fb09 Optimize document -> notebook page lookup 2015-02-21 18:53:59 +01:00
Colomban Wendling
99552dbe12 Fix emission of the ::document-activate signal
The ::document-activate signal was not emitted when opening the first
tab of the notebook, e.g. when the tab count changed from 0 to 1.

This is because the ::document-activate signal is emitted in response
to the GtkNotebook::switch-page signal, which is emitted whenever the
currently displayed page changes.  When there already is a current page
(when there is one or more pages), adding a new page does not trigger
the signal, as this new page doesn't become the current one (we will
switch to it later).  However, when there are none, the newly added one
becomes current, and so the signal is emitted right away.

This is problematic because when we add the page to the notebook, the
document associated with it is not yet ready (only partly initialized),
and so we can't emit the signal on a valid document, and we discard it.

Not emitting this signal leads to inconsistent behavior introducing
subtle bugs in plugins relying on it.

To work this around, only show the page widget (the child added to the
notebook) after we finished initializing everything.  This is the
simplest fix, because a lot of the code around document creation and
opening depend on the fact the page is already added, so while delaying
the page addition sounds like the more sensible fix, it has non-trivial
consequences that would require a large amount of work to overcome.

Note that interestingly, in addition to our problem, GtkNotebook seems
to have a bug as it emits the ::switch-page right when adding the first
page even if that page is not visible.  However, it properly emits it
again when the child becomes visible, so we just still discard the
first emission like we used to.
2015-02-21 18:49:09 +01:00
Frank Lanitz
a6885865bb Change contact data for brahmann 2015-02-18 00:35:44 +01:00
Colomban Wendling
15f75ca2ac Fix a few indentation style issues 2015-02-13 14:11:30 +01:00
Jiří Techet
0c1edb113c Bump API to reflect the addition of keybindings_get_modifiers() and GEANY_PRIMARY_MOD_MASK 2015-02-13 12:47:04 +01:00
Jiří Techet
e613d93187 Revert some OS X keybinding changes for VTE
While all normal keybindings use the Command key instead of
control key on OS X, all the command-line applications and
terminal emulators use the Ctrl key like on Linux. This includes
Ctrl+C (SIGINT) and Ctrl+D (EOF) for which there is some
special handling in the VTE support in Geany and which should
use GDK_CONTROL_MASK instead of GEANY_PRIMARY_MOD_MASK.
2015-02-13 00:37:21 +01:00
Colomban Wendling
b2e5d08dad Spell "Windows" as "Windows", not "Win"
This makes the labels more clear using the canonical name, and avoids
any confusion with the English word "win".
2015-02-10 17:15:38 +01:00
Colomban Wendling
e9c9e9a2fa Merge pull request #396 from techee/osx
OS X improvements
2015-02-10 17:12:30 +01:00
Jiří Techet
1ab9eac704 Use the .dylib extension when loading VTE on OS X 2015-02-10 15:58:01 +01:00
Jiří Techet
6a132ef3fa CR line endings are used on old Mac OS systems only - make it more explicit in labels
Also don't default to CR if OS is neither Windows nor Unix (including OS X).
There's no other GTK backend right now so it doesn't matter much but
still if something else appears, it will most probably not have CR line
endings.
2015-02-10 15:57:50 +01:00
Jiří Techet
f2cab560c6 Eliminate some minor leaks
Found using the Instruments XCode tool on OS X.
2015-02-08 11:12:27 +01:00
Enrico Tröger
d5cca37922 Change donate link to our own redirection
As discussed in #410, the previous SF redirect is better replaced by
a redirect on www.geany.org which we can control.
This way we can also quickly change the target URL if it changes at
Paypal.
2015-01-31 18:44:10 +01:00
Thomas Martitz
7fba0317d0 document: Remove duplicated code.
Since document_compare_by_tab_order_reverse does the exact reverse of
document_compare_by_tab_order the code need not to be duplicated. Instead
document_compare_by_tab_order can be called and the return value be reversed.
2015-01-28 15:33:52 +01:00
Colomban Wendling
f403e7e8c2 Merge pull request #188 from artros/feature/keep-edit-history-on-reload
Maintain edit history on document reload

Conflicts:
 * src/callbacks.c: document_reload_prompt().

Amendments:
 * src/document.c: document_redo(), document_undo(): for loop style.
2015-01-28 15:16:40 +01:00
Colomban Wendling
44eecc25c3 Merge pull request #187 from artros/bug/clear-redo-on-edit
Clear redo stack on edit
2015-01-28 14:30:43 +01:00
Colomban Wendling
526294d72c Merge pull request #399 from b4n/ui/message-window-hierarchy
Drop useless scrolled window around the message window notebook
2015-01-26 17:24:19 +01:00
Nick Treleaven
9506c7ae59 Remove unneeded -liberty flag 2015-01-24 16:30:57 +00:00
Jiří Techet
47a5b9fc5f Use better default fonts on OS X
Fonts are rendered much smaller on OS X so use bigger sizes
by default. Also, by default they use the Light style which is
extremely thin - use Medium instead. Finally, use better monospace
font than the default Courier (Menlo is derived from Dejavu Sans
Mono and is used by XCode and other editors).
2015-01-20 19:33:06 +01:00
Jiří Techet
daecf69c9c Make keybindings_get_modifiers() part of plugin API 2015-01-20 19:33:06 +01:00
Jiří Techet
98ae34f1dc Perform execute using the default terminal application on OS X
In order to execute the runner script using the terminal application,
the script has to be executable, otherwise it's not executed.

In addition, when the terminal application starts, it sets $HOME
as the working directory. For this reason the working directory
has to be set in the runner script (to avoid additional ifdefs,
this part is shared with other unix systems where the additional
"cd" shouldn't matter).
2015-01-20 19:33:06 +01:00
Jiří Techet
82b413e506 Fix keybindings on OS X
On OS X the Command key is used for common keybindings instead
of Ctrl. Introduce a new macro, GEANY_PRIMARY_MOD_MASK that
represents the Command key on OS X and Ctrl on other platforms.

For some events, such as mouse key press, GDK_MOD2_MASK is returned
for the Command key by GTK instead of GDK_META_MASK (which is returned
when Command is pressed together with some other key). To hide this
behavior from users, introduce keybindings_get_modifiers() which can be
used instead of gtk_accelerator_get_default_mod_mask() and which
inserts GDK_META_MASK when GDK_MOD2_MASK is found in the mask
on OS X.
2015-01-20 19:33:06 +01:00
Jiří Techet
ac76c84fdc Use Safari as the default browser on OS X
Since Safari isn't on PATH, the open command has to be used
2015-01-20 19:33:06 +01:00
Jiří Techet
9767f79e50 Improve ui_get_mime_icon()
It may happen that even though we get GIcon, the actual icon
dosen't exist (typically on Windows and OS X). Check if we
can find the actual icon.

In addition, use "icon name" instead of "stock id" - the latter
doesn't work on OS X / Windows for some reason.
2015-01-20 19:33:06 +01:00
Jiří Techet
3c01fae8d9 Disable scintilla buffer draw on OS X (with Quartz backend)
This delagates font rendering to Quartz so it can be rendered
in 2x resolution on "retina" displays.
2015-01-20 19:33:06 +01:00
Jiří Techet
5356c4549a Fix infinite loop on OS X when using find in files
The GIOCondition is always set to G_IO_IN even when input end
is reached (and no other flags are set) so the read_fif_io()
function never returns FALSE which causes an infinite loop.
It is necessary to check also the return value of
g_io_channel_read_line() and return FALSE on EOF or error.
2015-01-20 19:33:06 +01:00
Colomban Wendling
14f1468f78 Merge pull request #377 from b4n/autotools-mingw-cross
Autotools: Fix MinGW cross-compilation
2015-01-20 16:09:49 +01:00
Colomban Wendling
e6fa2c2ac7 Autotools: Improve the rule to compile Windows resource file 2015-01-20 16:04:55 +01:00
Colomban Wendling
6584cc5936 verilog: Add code style categorization
Implement code style categorization (comment/string/code) for Verilog.
2015-01-20 15:57:58 +01:00
Colomban Wendling
d80fa8f72a Fix reference to a renamed function in some comments 2015-01-20 15:57:58 +01:00
Colomban Wendling
3996ae9268 Update Scintilla to version 3.5.3
Closes [bugs:#1041].
2015-01-20 15:56:38 +01:00
Colomban Wendling
91d5079c8d Merge pull request #378 from b4n/remove-macro-list
Remove "Show macro list" keybinding and feature
2015-01-11 17:33:40 +01:00
Colomban Wendling
740c12c0ca Remove "Show macro list" keybinding and feature
This feature looks like a poorly implemented subset of "Complete word",
but lacks some important features like prefix filtering.  It is also
misnamed as it shows not only macros, but also variables and enums.

It also only shows `editor_prefs.autocompletion_max_entries`, but does
so from *each* file, not as a whole.

So drop it altogether, as this feature doesn't really look useful and
the current implementation seem to suffer of too many shortcomings for
it to realistically be actually used.
2015-01-11 17:30:27 +01:00
Colomban Wendling
e06f47d774 Merge pull request #289 from mspacek/build_line_num
Add %l current line number substitution to build commands
2015-01-05 16:26:03 +01:00
Colomban Wendling
d48859db8e Drop useless scrolled window around the message window notebook 2015-01-02 19:48:06 +01:00
Colomban Wendling
d80ee82072 Select the default scheme in the Color Scheme dialog by default
Always select the default scheme by default in the Color Scheme dialog
not to end up selecting none in case of broken or nonexistent
configuration.  This matches which scheme is actually used, and fixes
use of an uninitialized iter when no scheme would be selected.
2014-12-18 02:42:05 +01:00
Colomban Wendling
87331093a9 Merge pull request #361 from techee/prj_write
Add project_write_config() to force project file rewrite
2014-12-11 00:07:41 +01:00
Colomban Wendling
0184083a7e Fix an assertion failure when trying to scope-complete in a 2-characters C++ file 2014-12-04 14:38:57 +01:00
Colomban Wendling
94aa892c81 Merge pull request #373 from techee/go_ctags
Add a Go ctags parser.
2014-11-30 02:03:00 +01:00
Jiří Techet
ccb15a31be Add the go ctags parser
Make go one of the builtin filetypes, add the parser and update the related
source and config files. While there, remove Rust from [Groups] in
filetype_extensions.conf because it's already a builtin filetype as well.

The parser itself is stolen from the fishman/ctags repo.
2014-11-30 01:35:00 +01:00
Colomban Wendling
af7d63cdf2 Merge pull request #319 from b4n/better-txt2tags-parser
Better txt2tags parser
2014-11-29 23:40:58 +01:00
Colomban Wendling
6e1c2787c1 Merge branch 'recent-list-cleanup' 2014-11-29 22:49:57 +01:00
Colomban Wendling
4074843b42 coffeescript: Recognize string and comment styles 2014-11-26 19:52:20 +01:00