[geany/geany] ae68b1: Merge branch 'master' of github.com:geany/geany
Frank Lanitz
git-noreply at xxxxx
Tue Feb 10 17:55:00 UTC 2015
Branch: refs/heads/master
Author: Frank Lanitz <frank at frank.uvena.de>
Committer: Frank Lanitz <frank at frank.uvena.de>
Date: Tue, 10 Feb 2015 17:55:00 UTC
Commit: ae68b10b04aad477efb29acc1d547dac0ff30c1e
https://github.com/geany/geany/commit/ae68b10b04aad477efb29acc1d547dac0ff30c1e
Log Message:
-----------
Merge branch 'master' of github.com:geany/geany
Modified Paths:
--------------
data/geany.glade
doc/geany.txt
m4/geany-status.m4
plugins/filebrowser.c
plugins/geanyfunctions.h
plugins/saveactions.c
po/intl_stats.sh
src/build.c
src/callbacks.c
src/document.h
src/editor.c
src/keybindings.c
src/keybindings.h
src/keyfile.c
src/notebook.c
src/plugindata.h
src/plugins.c
src/prefs.c
src/search.c
src/sidebar.c
src/ui_utils.c
src/utils.c
src/vte.c
tagmanager/ctags/options.c
Modified: data/geany.glade
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -7726,7 +7726,7 @@
<object class="GtkRadioMenuItem" id="cr">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Convert and Set to CR (_Mac)</property>
+ <property name="label" translatable="yes">Convert and Set to CR (Classic _Mac)</property>
<property name="use_underline">True</property>
<property name="group">crlf</property>
<signal name="activate" handler="on_cr_activate" swapped="no"/>
Modified: doc/geany.txt
19 lines changed, 17 insertions(+), 2 deletions(-)
===================================================================
@@ -5176,8 +5176,23 @@ you can configure the automatically added extension in the configure dialog
in Geany's plugin manager.
After the plugin was loaded in Geany's plugin manager, every file is
-copied into the configured backup directory when the file is saved in Geany.
-
+copied into the configured backup directory *after* the file has been saved
+in Geany.
+
+The created backup copy file permissions are set to read-write only for
+the user. This should help to not create world-readable files on possibly
+unsecure destination directories like /tmp (especially useful
+on multi-user systems).
+This applies only to non-Windows systems. On Windows, no explicit file
+permissions are set.
+
+
+Additionally, you can define how many levels of the original file's
+directory structure should be replicated in the backup copy path.
+For example, setting the option
+*Directory levels to include in the backup destination* to *2*
+cause the plugin to create the last two components of the original
+file's path in the backup copy path and place the new file there.
Contributing to this document
Modified: m4/geany-status.m4
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -27,7 +27,7 @@ EOF
# Print a nice top bar
# description + ' : ' + value
total=`expr $dlen + 3 + $vlen`
- for i in `seq 1 $total`; do echo -n '-'; done
+ for i in `seq 1 $total`; do printf '-'; done
echo
# And print the actual content
Modified: plugins/filebrowser.c
2 lines changed, 2 insertions(+), 0 deletions(-)
===================================================================
@@ -35,6 +35,8 @@
# include <windows.h>
# define OPEN_CMD "explorer \"%d\""
+#elif defined(__APPLE__)
+# define OPEN_CMD "open \"%d\""
#else
# define OPEN_CMD "nautilus \"%d\""
#endif
Modified: plugins/geanyfunctions.h
2 lines changed, 2 insertions(+), 0 deletions(-)
===================================================================
@@ -342,6 +342,8 @@
geany_functions->p_keybindings->keybindings_set_item
#define keybindings_get_item \
geany_functions->p_keybindings->keybindings_get_item
+#define keybindings_get_modifiers \
+ geany_functions->p_keybindings->keybindings_get_modifiers
#define tm_get_real_path \
geany_functions->p_tm->tm_get_real_path
#define tm_source_file_new \
Modified: plugins/saveactions.c
14 lines changed, 14 insertions(+), 0 deletions(-)
===================================================================
@@ -27,6 +27,8 @@
#include "geanyplugin.h"
#include "gtkcompat.h"
+#include <stdio.h>
+#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <glib/gstdio.h>
@@ -195,6 +197,7 @@ static void backupcopy_document_save_cb(GObject *obj, GeanyDocument *doc, gpoint
gchar *dir_parts_src;
gchar *stamp;
gchar buf[512];
+ gint fd_dst = -1;
if (! enable_backupcopy)
return;
@@ -220,7 +223,14 @@ static void backupcopy_document_save_cb(GObject *obj, GeanyDocument *doc, gpoint
g_free(basename_src);
g_free(dir_parts_src);
+#ifdef G_OS_WIN32
if ((dst = g_fopen(locale_filename_dst, "wb")) == NULL)
+#else
+ /* Use g_open() on non-Windows to set file permissions to 600 atomically.
+ * On Windows, seting file permissions would require specific Windows API. */
+ fd_dst = g_open(locale_filename_dst, O_CREAT | O_WRONLY, S_IWUSR | S_IRUSR);
+ if (fd_dst == -1 || (dst = fdopen(fd_dst, "w")) == NULL)
+#endif
{
ui_set_statusbar(FALSE, _("Backup Copy: File could not be saved (%s)."),
g_strerror(errno));
@@ -228,6 +238,8 @@ static void backupcopy_document_save_cb(GObject *obj, GeanyDocument *doc, gpoint
g_free(locale_filename_dst);
g_free(stamp);
fclose(src);
+ if (fd_dst != -1)
+ close(fd_dst);
return;
}
@@ -238,6 +250,8 @@ static void backupcopy_document_save_cb(GObject *obj, GeanyDocument *doc, gpoint
fclose(src);
fclose(dst);
+ if (fd_dst != -1)
+ close(fd_dst);
g_free(locale_filename_src);
g_free(locale_filename_dst);
g_free(stamp);
Modified: po/intl_stats.sh
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -92,7 +92,7 @@ else
do
# maybe the regexp can be optimized, regexps are not my best friends
creationdate=`grep "PO-Revision-Date:" po/$lang.po | sed 's/.*: \([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} [0-9]\{2\}:[0-9]\{2\}[+|-][0-9]\{4\}\).*/\1/'`
- echo -n $eswitch $lang"\t("$creationdate"):\t"
+ printf "%s %s\t(%s):\t" "$eswitch" "$lang" "$creationdate"
msgfmt --check --statistics po/$lang.po;
done
fi
Modified: src/build.c
22 lines changed, 17 insertions(+), 5 deletions(-)
===================================================================
@@ -128,7 +128,7 @@ static guint build_items_count = 9;
static void build_exit_cb(GPid child_pid, gint status, gpointer user_data);
static gboolean build_iofunc(GIOChannel *ioc, GIOCondition cond, gpointer data);
#endif
-static gboolean build_create_shellscript(const gchar *fname, const gchar *cmd, gboolean autoclose, GError **error);
+static gboolean build_create_shellscript(const gchar *fname, const gchar *working_dir, const gchar *cmd, gboolean autoclose, GError **error);
static GPid build_spawn_cmd(GeanyDocument *doc, const gchar *cmd, const gchar *dir);
static void set_stop_button(gboolean stop);
static void run_exit_cb(GPid child_pid, gint status, gpointer user_data);
@@ -937,7 +937,7 @@ static gchar *prepare_run_script(GeanyDocument *doc, gchar **vte_cmd_nonscript,
/* RUN_SCRIPT_CMD should be ok in UTF8 without converting in locale because it
* contains no umlauts */
tmp = g_build_filename(working_dir, RUN_SCRIPT_CMD, NULL);
- result = build_create_shellscript(tmp, cmd_string, autoclose, &error);
+ result = build_create_shellscript(tmp, working_dir, cmd_string, autoclose, &error);
if (! result)
{
ui_set_statusbar(TRUE, _("Failed to execute \"%s\" (start-script could not be created: %s)"),
@@ -1279,13 +1279,15 @@ static void set_file_error_from_errno(GError **error, gint err, const gchar *pre
/* write a little shellscript to call the executable (similar to anjuta_launcher but "internal")
* fname is the full file name (including path) for the script to create */
-static gboolean build_create_shellscript(const gchar *fname, const gchar *cmd, gboolean autoclose, GError **error)
+static gboolean build_create_shellscript(const gchar *fname, const gchar *working_dir, const gchar *cmd, gboolean autoclose, GError **error)
{
FILE *fp;
gchar *str;
gboolean success = TRUE;
#ifdef G_OS_WIN32
gchar *expanded_cmd;
+#else
+ gchar *escaped_dir;
#endif
fp = g_fopen(fname, "w");
@@ -1300,11 +1302,13 @@ static gboolean build_create_shellscript(const gchar *fname, const gchar *cmd, g
str = g_strdup_printf("%s\n\n%s\ndel \"%%0\"\n\npause\n", expanded_cmd, (autoclose) ? "" : "pause");
g_free(expanded_cmd);
#else
+ escaped_dir = g_strescape(working_dir, NULL);
str = g_strdup_printf(
- "#!/bin/sh\n\nrm $0\n\n%s\n\necho \"\n\n------------------\n(program exited with code: $?)\" \
- \n\n%s\n", cmd, (autoclose) ? "" :
+ "#!/bin/sh\n\nrm $0\n\ncd \'%s\'\n\n%s\n\necho \"\n\n------------------\n(program exited with code: $?)\" \
+ \n\n%s\n", escaped_dir, cmd, (autoclose) ? "" :
"\necho \"Press return to continue\"\n#to be more compatible with shells like "
"dash\ndummy_var=\"\"\nread dummy_var");
+ g_free(escaped_dir);
#endif
if (fputs(str, fp) < 0)
@@ -1320,6 +1324,14 @@ static gboolean build_create_shellscript(const gchar *fname, const gchar *cmd, g
set_file_error_from_errno(error, errno, "Failed to close file");
success = FALSE;
}
+#ifdef __APPLE__
+ if (g_chmod(fname, 0777) != 0)
+ {
+ if (error && ! *error) /* don't set error twice */
+ set_file_error_from_errno(error, errno, "Failed to make file executable");
+ success = FALSE;
+ }
+#endif
return success;
}
Modified: src/callbacks.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -1697,7 +1697,7 @@ G_MODULE_EXPORT void on_page_setup1_activate(GtkMenuItem *menuitem, gpointer use
G_MODULE_EXPORT gboolean on_escape_key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
{
- guint state = event->state & gtk_accelerator_get_default_mod_mask();
+ guint state = keybindings_get_modifiers(event->state);
/* make pressing escape in the sidebar and toolbar focus the editor */
if (event->keyval == GDK_Escape && state == 0)
Modified: src/document.h
4 lines changed, 1 insertions(+), 3 deletions(-)
===================================================================
@@ -223,10 +223,8 @@ GeanyDocument *document_find_by_id(guint id);
#if defined(G_OS_WIN32)
# define GEANY_DEFAULT_EOL_CHARACTER SC_EOL_CRLF
-#elif defined(G_OS_UNIX)
-# define GEANY_DEFAULT_EOL_CHARACTER SC_EOL_LF
#else
-# define GEANY_DEFAULT_EOL_CHARACTER SC_EOL_CR
+# define GEANY_DEFAULT_EOL_CHARACTER SC_EOL_LF
#endif
extern GeanyFilePrefs file_prefs;
Modified: src/editor.c
9 lines changed, 7 insertions(+), 2 deletions(-)
===================================================================
@@ -313,14 +313,14 @@ static gboolean on_editor_button_press_event(GtkWidget *widget, GdkEventButton *
if (event->button == 1)
{
- guint state = event->state & gtk_accelerator_get_default_mod_mask();
+ guint state = keybindings_get_modifiers(event->state);
if (event->type == GDK_BUTTON_PRESS && editor_prefs.disable_dnd)
{
gint ss = sci_get_selection_start(editor->sci);
sci_set_selection_end(editor->sci, ss);
}
- if (event->type == GDK_BUTTON_PRESS && state == GDK_CONTROL_MASK)
+ if (event->type == GDK_BUTTON_PRESS && state == GEANY_PRIMARY_MOD_MASK)
{
sci_set_current_position(editor->sci, editor_info.click_pos, FALSE);
@@ -4779,6 +4779,11 @@ static ScintillaObject *create_new_sci(GeanyEditor *editor)
/* virtual space */
SSM(sci, SCI_SETVIRTUALSPACEOPTIONS, editor_prefs.show_virtual_space, 0);
+
+#ifdef GDK_WINDOWING_QUARTZ
+ /* "retina" (HiDPI) display support on OS X - requires disabling buffered draw */
+ SSM(sci, SCI_SETBUFFEREDDRAW, 0, 0);
+#endif
/* only connect signals if this is for the document notebook, not split window */
if (editor->sci == NULL)
Modified: src/keybindings.c
147 lines changed, 83 insertions(+), 64 deletions(-)
===================================================================
@@ -110,6 +110,25 @@ static void cb_func_move_tab(guint key_id);
static void add_popup_menu_accels(void);
+/** Gets significant modifiers from a GdkModifierType mask. The set of
+ * significant modifiers corresponds to the default modifier mask as returned
+ * by @c gtk_accelerator_get_default_mod_mask(). In addition, it improves
+ * the Command key handling on OS X by adding @c GEANY_PRIMARY_MOD_MASK
+ * when needed. For this reason it is preferred to use this function
+ * instead of @c gtk_accelerator_set_default_mod_mask().
+ * @param mods GdkModifierType mask.
+ * @return Significant modifiers from the mask.
+ * @since 1.25. */
+GdkModifierType keybindings_get_modifiers(GdkModifierType mods)
+{
+#ifdef __APPLE__
+ if (mods & GDK_MOD2_MASK)
+ mods |= GEANY_PRIMARY_MOD_MASK;
+#endif
+ return mods & gtk_accelerator_get_default_mod_mask();
+}
+
+
/** Looks up a keybinding item.
* @param group Group.
* @param key_id Keybinding index for the group.
@@ -247,32 +266,32 @@ static void init_default_kb(void)
group = keybindings_get_core_group(GEANY_KEY_GROUP_FILE);
add_kb(group, GEANY_KEYS_FILE_NEW, NULL,
- GDK_n, GDK_CONTROL_MASK, "menu_new", _("New"), "menu_new1");
+ GDK_n, GEANY_PRIMARY_MOD_MASK, "menu_new", _("New"), "menu_new1");
add_kb(group, GEANY_KEYS_FILE_OPEN, NULL,
- GDK_o, GDK_CONTROL_MASK, "menu_open", _("Open"), "menu_open1");
+ GDK_o, GEANY_PRIMARY_MOD_MASK, "menu_open", _("Open"), "menu_open1");
add_kb(group, GEANY_KEYS_FILE_OPENSELECTED, NULL,
- GDK_o, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "menu_open_selected",
+ GDK_o, GDK_SHIFT_MASK | GEANY_PRIMARY_MOD_MASK, "menu_open_selected",
_("Open selected file"), "menu_open_selected_file1");
add_kb(group, GEANY_KEYS_FILE_SAVE, NULL,
- GDK_s, GDK_CONTROL_MASK, "menu_save", _("Save"), "menu_save1");
+ GDK_s, GEANY_PRIMARY_MOD_MASK, "menu_save", _("Save"), "menu_save1");
add_kb(group, GEANY_KEYS_FILE_SAVEAS, NULL,
0, 0, "menu_saveas", _("Save as"), "menu_save_as1");
add_kb(group, GEANY_KEYS_FILE_SAVEALL, NULL,
- GDK_s, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "menu_saveall", _("Save all"),
+ GDK_s, GDK_SHIFT_MASK | GEANY_PRIMARY_MOD_MASK, "menu_saveall", _("Save all"),
"menu_save_all1");
add_kb(group, GEANY_KEYS_FILE_PRINT, NULL,
- GDK_p, GDK_CONTROL_MASK, "menu_print", _("Print"), "print1");
+ GDK_p, GEANY_PRIMARY_MOD_MASK, "menu_print", _("Print"), "print1");
add_kb(group, GEANY_KEYS_FILE_CLOSE, NULL,
- GDK_w, GDK_CONTROL_MASK, "menu_close", _("Close"), "menu_close1");
+ GDK_w, GEANY_PRIMARY_MOD_MASK, "menu_close", _("Close"), "menu_close1");
add_kb(group, GEANY_KEYS_FILE_CLOSEALL, NULL,
- GDK_w, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "menu_closeall", _("Close all"),
+ GDK_w, GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, "menu_closeall", _("Close all"),
"menu_close_all1");
add_kb(group, GEANY_KEYS_FILE_RELOAD, NULL,
- GDK_r, GDK_CONTROL_MASK, "menu_reloadfile", _("Reload file"), "menu_reload1");
+ GDK_r, GEANY_PRIMARY_MOD_MASK, "menu_reloadfile", _("Reload file"), "menu_reload1");
add_kb(group, GEANY_KEYS_FILE_OPENLASTTAB, NULL,
0, 0, "file_openlasttab", _("Re-open last closed tab"), NULL);
add_kb(group, GEANY_KEYS_FILE_QUIT, NULL,
- GDK_q, GDK_CONTROL_MASK, "menu_quit", _("Quit"), "menu_quit1");
+ GDK_q, GEANY_PRIMARY_MOD_MASK, "menu_quit", _("Quit"), "menu_quit1");
group = keybindings_get_core_group(GEANY_KEY_GROUP_PROJECT);
@@ -289,23 +308,23 @@ static void init_default_kb(void)
group = keybindings_get_core_group(GEANY_KEY_GROUP_EDITOR);
add_kb(group, GEANY_KEYS_EDITOR_UNDO, NULL,
- GDK_z, GDK_CONTROL_MASK, "menu_undo", _("Undo"), "menu_undo2");
+ GDK_z, GEANY_PRIMARY_MOD_MASK, "menu_undo", _("Undo"), "menu_undo2");
add_kb(group, GEANY_KEYS_EDITOR_REDO, NULL,
- GDK_y, GDK_CONTROL_MASK, "menu_redo", _("Redo"), "menu_redo2");
+ GDK_y, GEANY_PRIMARY_MOD_MASK, "menu_redo", _("Redo"), "menu_redo2");
add_kb(group, GEANY_KEYS_EDITOR_DUPLICATELINE, NULL,
- GDK_d, GDK_CONTROL_MASK, "edit_duplicateline", _("D_uplicate Line or Selection"),
+ GDK_d, GEANY_PRIMARY_MOD_MASK, "edit_duplicateline", _("D_uplicate Line or Selection"),
"duplicate_line_or_selection1");
add_kb(group, GEANY_KEYS_EDITOR_DELETELINE, NULL,
- GDK_k, GDK_CONTROL_MASK, "edit_deleteline", _("_Delete Current Line(s)"),
+ GDK_k, GEANY_PRIMARY_MOD_MASK, "edit_deleteline", _("_Delete Current Line(s)"),
"delete_current_lines1");
add_kb(group, GEANY_KEYS_EDITOR_DELETELINETOEND, NULL,
- GDK_Delete, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "edit_deletelinetoend",
+ GDK_Delete, GDK_SHIFT_MASK | GEANY_PRIMARY_MOD_MASK, "edit_deletelinetoend",
_("Delete to line end"), NULL);
/* Note: transpose may fit better in format group, but that would break the API */
add_kb(group, GEANY_KEYS_EDITOR_TRANSPOSELINE, NULL,
0, 0, "edit_transposeline", _("_Transpose Current Line"), NULL);
add_kb(group, GEANY_KEYS_EDITOR_SCROLLTOLINE, NULL,
- GDK_l, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "edit_scrolltoline", _("Scroll to current line"), NULL);
+ GDK_l, GDK_SHIFT_MASK | GEANY_PRIMARY_MOD_MASK, "edit_scrolltoline", _("Scroll to current line"), NULL);
add_kb(group, GEANY_KEYS_EDITOR_SCROLLLINEUP, NULL,
GDK_Up, GDK_MOD1_MASK, "edit_scrolllineup", _("Scroll up the view by one line"), NULL);
add_kb(group, GEANY_KEYS_EDITOR_SCROLLLINEDOWN, NULL,
@@ -319,9 +338,9 @@ static void init_default_kb(void)
add_kb(group, GEANY_KEYS_EDITOR_CONTEXTACTION, NULL,
0, 0, "popup_contextaction", _("Context Action"), NULL);
add_kb(group, GEANY_KEYS_EDITOR_AUTOCOMPLETE, NULL,
- GDK_space, GDK_CONTROL_MASK, "edit_autocomplete", _("Complete word"), NULL);
+ GDK_space, GEANY_PRIMARY_MOD_MASK, "edit_autocomplete", _("Complete word"), NULL);
add_kb(group, GEANY_KEYS_EDITOR_CALLTIP, NULL,
- GDK_space, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "edit_calltip", _("Show calltip"), NULL);
+ GDK_space, GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, "edit_calltip", _("Show calltip"), NULL);
add_kb(group, GEANY_KEYS_EDITOR_WORDPARTCOMPLETION, NULL,
GDK_Tab, 0, "edit_wordpartcompletion", _("Word part completion"), NULL);
add_kb(group, GEANY_KEYS_EDITOR_MOVELINEUP, NULL,
@@ -334,22 +353,22 @@ static void init_default_kb(void)
group = keybindings_get_core_group(GEANY_KEY_GROUP_CLIPBOARD);
add_kb(group, GEANY_KEYS_CLIPBOARD_CUT, NULL,
- GDK_x, GDK_CONTROL_MASK, "menu_cut", _("Cut"), "menu_cut1");
+ GDK_x, GEANY_PRIMARY_MOD_MASK, "menu_cut", _("Cut"), "menu_cut1");
add_kb(group, GEANY_KEYS_CLIPBOARD_COPY, NULL,
- GDK_c, GDK_CONTROL_MASK, "menu_copy", _("Copy"), "menu_copy1");
+ GDK_c, GEANY_PRIMARY_MOD_MASK, "menu_copy", _("Copy"), "menu_copy1");
add_kb(group, GEANY_KEYS_CLIPBOARD_PASTE, NULL,
- GDK_v, GDK_CONTROL_MASK, "menu_paste", _("Paste"), "menu_paste1");
+ GDK_v, GEANY_PRIMARY_MOD_MASK, "menu_paste", _("Paste"), "menu_paste1");
add_kb(group, GEANY_KEYS_CLIPBOARD_COPYLINE, NULL,
- GDK_c, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "edit_copyline", _("_Copy Current Line(s)"),
+ GDK_c, GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, "edit_copyline", _("_Copy Current Line(s)"),
"copy_current_lines1");
add_kb(group, GEANY_KEYS_CLIPBOARD_CUTLINE, NULL,
- GDK_x, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "edit_cutline", _("Cu_t Current Line(s)"),
+ GDK_x, GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, "edit_cutline", _("Cu_t Current Line(s)"),
"cut_current_lines1");
group = keybindings_get_core_group(GEANY_KEY_GROUP_SELECT);
add_kb(group, GEANY_KEYS_SELECT_ALL, NULL,
- GDK_a, GDK_CONTROL_MASK, "menu_selectall", _("Select All"), "menu_select_all1");
+ GDK_a, GEANY_PRIMARY_MOD_MASK, "menu_selectall", _("Select All"), "menu_select_all1");
add_kb(group, GEANY_KEYS_SELECT_WORD, NULL,
GDK_w, GDK_SHIFT_MASK | GDK_MOD1_MASK, "edit_selectword", _("Select current word"), NULL);
add_kb(group, GEANY_KEYS_SELECT_LINE, NULL,
@@ -366,20 +385,20 @@ static void init_default_kb(void)
group = keybindings_get_core_group(GEANY_KEY_GROUP_FORMAT);
add_kb(group, GEANY_KEYS_FORMAT_TOGGLECASE, NULL,
- GDK_u, GDK_CONTROL_MASK | GDK_MOD1_MASK, "edit_togglecase",
+ GDK_u, GEANY_PRIMARY_MOD_MASK | GDK_MOD1_MASK, "edit_togglecase",
_("T_oggle Case of Selection"), "menu_toggle_case2");
add_kb(group, GEANY_KEYS_FORMAT_COMMENTLINETOGGLE, NULL,
- GDK_e, GDK_CONTROL_MASK, "edit_commentlinetoggle", _("Toggle line commentation"),
+ GDK_e, GEANY_PRIMARY_MOD_MASK, "edit_commentlinetoggle", _("Toggle line commentation"),
"menu_toggle_line_commentation1");
add_kb(group, GEANY_KEYS_FORMAT_COMMENTLINE, NULL,
0, 0, "edit_commentline", _("Comment line(s)"), "menu_comment_line1");
add_kb(group, GEANY_KEYS_FORMAT_UNCOMMENTLINE, NULL,
0, 0, "edit_uncommentline", _("Uncomment line(s)"), "menu_uncomment_line1");
add_kb(group, GEANY_KEYS_FORMAT_INCREASEINDENT, NULL,
- GDK_i, GDK_CONTROL_MASK, "edit_increaseindent", _("Increase indent"),
+ GDK_i, GEANY_PRIMARY_MOD_MASK, "edit_increaseindent", _("Increase indent"),
"menu_increase_indent1");
add_kb(group, GEANY_KEYS_FORMAT_DECREASEINDENT, NULL,
- GDK_u, GDK_CONTROL_MASK, "edit_decreaseindent", _("Decrease indent"),
+ GDK_u, GEANY_PRIMARY_MOD_MASK, "edit_decreaseindent", _("Decrease indent"),
"menu_decrease_indent1");
add_kb(group, GEANY_KEYS_FORMAT_INCREASEINDENTBYSPACE, NULL,
0, 0, "edit_increaseindentbyspace", _("Increase indent by one space"), NULL);
@@ -388,16 +407,16 @@ static void init_default_kb(void)
add_kb(group, GEANY_KEYS_FORMAT_AUTOINDENT, NULL,
0, 0, "edit_autoindent", _("S_mart Line Indent"), "smart_line_indent1");
add_kb(group, GEANY_KEYS_FORMAT_SENDTOCMD1, NULL,
- GDK_1, GDK_CONTROL_MASK, "edit_sendtocmd1", _("Send to Custom Command 1"), NULL);
+ GDK_1, GEANY_PRIMARY_MOD_MASK, "edit_sendtocmd1", _("Send to Custom Command 1"), NULL);
add_kb(group, GEANY_KEYS_FORMAT_SENDTOCMD2, NULL,
- GDK_2, GDK_CONTROL_MASK, "edit_sendtocmd2", _("Send to Custom Command 2"), NULL);
+ GDK_2, GEANY_PRIMARY_MOD_MASK, "edit_sendtocmd2", _("Send to Custom Command 2"), NULL);
add_kb(group, GEANY_KEYS_FORMAT_SENDTOCMD3, NULL,
- GDK_3, GDK_CONTROL_MASK, "edit_sendtocmd3", _("Send to Custom Command 3"), NULL);
+ GDK_3, GEANY_PRIMARY_MOD_MASK, "edit_sendtocmd3", _("Send to Custom Command 3"), NULL);
/* may fit better in editor group */
add_kb(group, GEANY_KEYS_FORMAT_SENDTOVTE, NULL,
0, 0, "edit_sendtovte", _("_Send Selection to Terminal"), "send_selection_to_vte1");
add_kb(group, GEANY_KEYS_FORMAT_REFLOWPARAGRAPH, NULL,
- GDK_j, GDK_CONTROL_MASK, "format_reflowparagraph", _("_Reflow Lines/Block"),
+ GDK_j, GEANY_PRIMARY_MOD_MASK, "format_reflowparagraph", _("_Reflow Lines/Block"),
"reflow_lines_block1");
keybindings_set_item(group, GEANY_KEYS_FORMAT_JOINLINES, NULL,
0, 0, "edit_joinlines", _("Join lines"), NULL);
@@ -418,7 +437,7 @@ static void init_default_kb(void)
group = keybindings_get_core_group(GEANY_KEY_GROUP_SETTINGS);
add_kb(group, GEANY_KEYS_SETTINGS_PREFERENCES, cb_func_menu_preferences,
- GDK_p, GDK_CONTROL_MASK | GDK_MOD1_MASK, "menu_preferences", _("Preferences"),
+ GDK_p, GEANY_PRIMARY_MOD_MASK | GDK_MOD1_MASK, "menu_preferences", _("Preferences"),
"preferences1");
add_kb(group, GEANY_KEYS_SETTINGS_PLUGINPREFERENCES, cb_func_menu_preferences,
0, 0, "menu_pluginpreferences", _("P_lugin Preferences"), "plugin_preferences1");
@@ -426,33 +445,33 @@ static void init_default_kb(void)
group = keybindings_get_core_group(GEANY_KEY_GROUP_SEARCH);
add_kb(group, GEANY_KEYS_SEARCH_FIND, NULL,
- GDK_f, GDK_CONTROL_MASK, "menu_find", _("Find"), "find1");
+ GDK_f, GEANY_PRIMARY_MOD_MASK, "menu_find", _("Find"), "find1");
add_kb(group, GEANY_KEYS_SEARCH_FINDNEXT, NULL,
- GDK_g, GDK_CONTROL_MASK, "menu_findnext", _("Find Next"), "find_next1");
+ GDK_g, GEANY_PRIMARY_MOD_MASK, "menu_findnext", _("Find Next"), "find_next1");
add_kb(group, GEANY_KEYS_SEARCH_FINDPREVIOUS, NULL,
- GDK_g, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "menu_findprevious", _("Find Previous"),
+ GDK_g, GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, "menu_findprevious", _("Find Previous"),
"find_previous1");
add_kb(group, GEANY_KEYS_SEARCH_FINDNEXTSEL, NULL,
0, 0, "menu_findnextsel", _("Find Next _Selection"), "find_nextsel1");
add_kb(group, GEANY_KEYS_SEARCH_FINDPREVSEL, NULL,
0, 0, "menu_findprevsel", _("Find Pre_vious Selection"), "find_prevsel1");
add_kb(group, GEANY_KEYS_SEARCH_REPLACE, NULL,
- GDK_h, GDK_CONTROL_MASK, "menu_replace", _("Replace"), "replace1");
+ GDK_h, GEANY_PRIMARY_MOD_MASK, "menu_replace", _("Replace"), "replace1");
add_kb(group, GEANY_KEYS_SEARCH_FINDINFILES, NULL, GDK_f,
- GDK_CONTROL_MASK | GDK_SHIFT_MASK, "menu_findinfiles", _("Find in Files"),
+ GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, "menu_findinfiles", _("Find in Files"),
"find_in_files1");
add_kb(group, GEANY_KEYS_SEARCH_NEXTMESSAGE, NULL,
0, 0, "menu_nextmessage", _("Next Message"), "next_message1");
add_kb(group, GEANY_KEYS_SEARCH_PREVIOUSMESSAGE, NULL,
0, 0, "menu_previousmessage", _("Previous Message"), "previous_message1");
add_kb(group, GEANY_KEYS_SEARCH_FINDUSAGE, NULL,
- GDK_e, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "popup_findusage",
+ GDK_e, GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, "popup_findusage",
_("Find Usage"), "find_usage1");
add_kb(group, GEANY_KEYS_SEARCH_FINDDOCUMENTUSAGE, NULL,
- GDK_d, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "popup_finddocumentusage",
+ GDK_d, GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, "popup_finddocumentusage",
_("Find Document Usage"), "find_document_usage1");
add_kb(group, GEANY_KEYS_SEARCH_MARKALL, NULL,
- GDK_m, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "find_markall", _("_Mark All"), "mark_all1");
+ GDK_m, GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, "find_markall", _("_Mark All"), "mark_all1");
group = keybindings_get_core_group(GEANY_KEY_GROUP_GOTO);
@@ -461,24 +480,24 @@ static void init_default_kb(void)
add_kb(group, GEANY_KEYS_GOTO_FORWARD, NULL,
GDK_Right, GDK_MOD1_MASK, "nav_forward", _("Navigate forward a location"), NULL);
add_kb(group, GEANY_KEYS_GOTO_LINE, NULL,
- GDK_l, GDK_CONTROL_MASK, "menu_gotoline", _("Go to Line"), "go_to_line1");
+ GDK_l, GEANY_PRIMARY_MOD_MASK, "menu_gotoline", _("Go to Line"), "go_to_line1");
add_kb(group, GEANY_KEYS_GOTO_MATCHINGBRACE, NULL,
- GDK_b, GDK_CONTROL_MASK, "edit_gotomatchingbrace",
+ GDK_b, GEANY_PRIMARY_MOD_MASK, "edit_gotomatchingbrace",
_("Go to matching brace"), NULL);
add_kb(group, GEANY_KEYS_GOTO_TOGGLEMARKER, NULL,
- GDK_m, GDK_CONTROL_MASK, "edit_togglemarker",
+ GDK_m, GEANY_PRIMARY_MOD_MASK, "edit_togglemarker",
_("Toggle marker"), NULL);
add_kb(group, GEANY_KEYS_GOTO_NEXTMARKER, NULL,
- GDK_period, GDK_CONTROL_MASK, "edit_gotonextmarker",
+ GDK_period, GEANY_PRIMARY_MOD_MASK, "edit_gotonextmarker",
_("Go to Ne_xt Marker"), "go_to_next_marker1");
add_kb(group, GEANY_KEYS_GOTO_PREVIOUSMARKER, NULL,
- GDK_comma, GDK_CONTROL_MASK, "edit_gotopreviousmarker",
+ GDK_comma, GEANY_PRIMARY_MOD_MASK, "edit_gotopreviousmarker",
_("Go to Pre_vious Marker"), "go_to_previous_marker1");
add_kb(group, GEANY_KEYS_GOTO_TAGDEFINITION, NULL,
- GDK_t, GDK_CONTROL_MASK, "popup_gototagdefinition",
+ GDK_t, GEANY_PRIMARY_MOD_MASK, "popup_gototagdefinition",
_("Go to Tag Definition"), "goto_tag_definition1");
add_kb(group, GEANY_KEYS_GOTO_TAGDECLARATION, NULL,
- GDK_t, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "popup_gototagdeclaration",
+ GDK_t, GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, "popup_gototagdeclaration",
_("Go to Tag Declaration"), "goto_tag_declaration1");
add_kb(group, GEANY_KEYS_GOTO_LINESTART, NULL,
GDK_Home, 0, "edit_gotolinestart", _("Go to Start of Line"), NULL);
@@ -489,9 +508,9 @@ static void init_default_kb(void)
add_kb(group, GEANY_KEYS_GOTO_LINEENDVISUAL, NULL,
GDK_End, GDK_MOD1_MASK, "edit_gotolineendvisual", _("Go to End of Display Line"), NULL);
add_kb(group, GEANY_KEYS_GOTO_PREVWORDPART, NULL,
- GDK_slash, GDK_CONTROL_MASK, "edit_prevwordstart", _("Go to Previous Word Part"), NULL);
+ GDK_slash, GEANY_PRIMARY_MOD_MASK, "edit_prevwordstart", _("Go to Previous Word Part"), NULL);
add_kb(group, GEANY_KEYS_GOTO_NEXTWORDPART, NULL,
- GDK_backslash, GDK_CONTROL_MASK, "edit_nextwordstart", _("Go to Next Word Part"), NULL);
+ GDK_backslash, GEANY_PRIMARY_MOD_MASK, "edit_nextwordstart", _("Go to Next Word Part"), NULL);
group = keybindings_get_core_group(GEANY_KEY_GROUP_VIEW);
@@ -506,11 +525,11 @@ static void init_default_kb(void)
add_kb(group, GEANY_KEYS_VIEW_SIDEBAR, NULL,
0, 0, "toggle_sidebar", _("Toggle Sidebar"), "menu_show_sidebar1");
add_kb(group, GEANY_KEYS_VIEW_ZOOMIN, NULL,
- GDK_plus, GDK_CONTROL_MASK, "menu_zoomin", _("Zoom In"), "menu_zoom_in1");
+ GDK_plus, GEANY_PRIMARY_MOD_MASK, "menu_zoomin", _("Zoom In"), "menu_zoom_in1");
add_kb(group, GEANY_KEYS_VIEW_ZOOMOUT, NULL,
- GDK_minus, GDK_CONTROL_MASK, "menu_zoomout", _("Zoom Out"), "menu_zoom_out1");
+ GDK_minus, GEANY_PRIMARY_MOD_MASK, "menu_zoomout", _("Zoom Out"), "menu_zoom_out1");
add_kb(group, GEANY_KEYS_VIEW_ZOOMRESET, NULL,
- GDK_0, GDK_CONTROL_MASK, "normal_size", _("Zoom Reset"), "normal_size1");
+ GDK_0, GEANY_PRIMARY_MOD_MASK, "normal_size", _("Zoom Reset"), "normal_size1");
group = keybindings_get_core_group(GEANY_KEY_GROUP_FOCUS);
@@ -538,16 +557,16 @@ static void init_default_kb(void)
group = keybindings_get_core_group(GEANY_KEY_GROUP_NOTEBOOK);
add_kb(group, GEANY_KEYS_NOTEBOOK_SWITCHTABLEFT, cb_func_switch_tableft,
- GDK_Page_Up, GDK_CONTROL_MASK, "switch_tableft", _("Switch to left document"), NULL);
+ GDK_Page_Up, GEANY_PRIMARY_MOD_MASK, "switch_tableft", _("Switch to left document"), NULL);
add_kb(group, GEANY_KEYS_NOTEBOOK_SWITCHTABRIGHT, cb_func_switch_tabright,
- GDK_Page_Down, GDK_CONTROL_MASK, "switch_tabright", _("Switch to right document"), NULL);
+ GDK_Page_Down, GEANY_PRIMARY_MOD_MASK, "switch_tabright", _("Switch to right document"), NULL);
add_kb(group, GEANY_KEYS_NOTEBOOK_SWITCHTABLASTUSED, cb_func_switch_tablastused,
- GDK_Tab, GDK_CONTROL_MASK, "switch_tablastused", _("Switch to last used document"), NULL);
+ GDK_Tab, GEANY_PRIMARY_MOD_MASK, "switch_tablastused", _("Switch to last used document"), NULL);
add_kb(group, GEANY_KEYS_NOTEBOOK_MOVETABLEFT, cb_func_move_tab,
- GDK_Page_Up, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "move_tableft",
+ GDK_Page_Up, GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, "move_tableft",
_("Move document left"), NULL);
add_kb(group, GEANY_KEYS_NOTEBOOK_MOVETABRIGHT, cb_func_move_tab,
- GDK_Page_Down, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "move_tabright",
+ GDK_Page_Down, GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, "move_tabright",
_("Move document right"), NULL);
add_kb(group, GEANY_KEYS_NOTEBOOK_MOVETABFIRST, cb_func_move_tab,
0, 0, "move_tabfirst", _("Move document first"), NULL);
@@ -573,7 +592,7 @@ static void init_default_kb(void)
add_kb(group, GEANY_KEYS_DOCUMENT_UNFOLDALL, NULL,
0, 0, "menu_unfoldall", _("Unfold all"), "menu_unfold_all1");
add_kb(group, GEANY_KEYS_DOCUMENT_RELOADTAGLIST, NULL,
- GDK_r, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "reloadtaglist", _("Reload symbol list"), NULL);
+ GDK_r, GDK_SHIFT_MASK | GEANY_PRIMARY_MOD_MASK, "reloadtaglist", _("Reload symbol list"), NULL);
add_kb(group, GEANY_KEYS_DOCUMENT_REMOVE_MARKERS, NULL,
0, 0, "remove_markers", _("Remove Markers"), "remove_markers1");
add_kb(group, GEANY_KEYS_DOCUMENT_REMOVE_ERROR_INDICATORS, NULL,
@@ -590,7 +609,7 @@ static void init_default_kb(void)
add_kb(group, GEANY_KEYS_BUILD_MAKE, NULL,
GDK_F9, GDK_SHIFT_MASK, "build_make", _("Make all"), NULL);
add_kb(group, GEANY_KEYS_BUILD_MAKEOWNTARGET, NULL,
- GDK_F9, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "build_makeowntarget",
+ GDK_F9, GDK_SHIFT_MASK | GEANY_PRIMARY_MOD_MASK, "build_makeowntarget",
_("Make custom target"), NULL);
add_kb(group, GEANY_KEYS_BUILD_MAKEOBJECT, NULL,
GDK_F8, GDK_SHIFT_MASK, "build_makeobject", _("Make object"), NULL);
@@ -975,7 +994,7 @@ static gboolean check_fixed_kb(guint keyval, guint state)
if (keyval == GDK_Page_Up || keyval == GDK_Page_Down)
{
/* switch to first or last document */
- if (state == (GDK_CONTROL_MASK | GDK_SHIFT_MASK))
+ if (state == (GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK))
{
if (keyval == GDK_Page_Up)
gtk_notebook_set_current_page(GTK_NOTEBOOK(main_widgets.notebook), 0);
@@ -1116,7 +1135,7 @@ static gboolean check_vte(GdkModifierType state, guint keyval)
if (gtk_window_get_focus(GTK_WINDOW(main_widgets.window)) != vc->vte)
return FALSE;
/* let VTE copy/paste override any user keybinding */
- if (state == (GDK_CONTROL_MASK | GDK_SHIFT_MASK) && (keyval == GDK_c || keyval == GDK_v))
+ if (state == (GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK) && (keyval == GDK_c || keyval == GDK_v))
return TRUE;
if (! vc->enable_bash_keys)
return FALSE;
@@ -1198,7 +1217,7 @@ gboolean keybindings_check_event(GdkEventKey *ev, GeanyKeyBinding *kb)
return FALSE;
keyval = ev->keyval;
- state = ev->state & gtk_accelerator_get_default_mod_mask();
+ state = keybindings_get_modifiers(ev->state);
/* hack to get around that CTRL+Shift+r results in GDK_R not GDK_r */
if ((ev->state & GDK_SHIFT_MASK) || (ev->state & GDK_LOCK_MASK))
if (keyval >= GDK_A && keyval <= GDK_Z)
@@ -1228,7 +1247,7 @@ static gboolean on_key_press_event(GtkWidget *widget, GdkEventKey *ev, gpointer
document_check_disk_status(doc, FALSE);
keyval = ev->keyval;
- state = ev->state & gtk_accelerator_get_default_mod_mask();
+ state = keybindings_get_modifiers(ev->state);
/* hack to get around that CTRL+Shift+r results in GDK_R not GDK_r */
if ((ev->state & GDK_SHIFT_MASK) || (ev->state & GDK_LOCK_MASK))
if (keyval >= GDK_A && keyval <= GDK_Z)
Modified: src/keybindings.h
12 lines changed, 12 insertions(+), 0 deletions(-)
===================================================================
@@ -26,6 +26,17 @@
G_BEGIN_DECLS
+/** Defines the primary modifier mask which is the Ctrl key mask on
+ * UNIX/Windows and Command key mask on OS X. When testing for the mask
+ * presence, use together with keybindings_get_modifiers() which adds
+ * @c GEANY_PRIMARY_MOD_MASK when needed.
+ * @since 1.25. */
+#ifdef __APPLE__
+#define GEANY_PRIMARY_MOD_MASK GDK_META_MASK
+#else
+#define GEANY_PRIMARY_MOD_MASK GDK_CONTROL_MASK
+#endif
+
/** Function pointer type used for keybinding callbacks. */
typedef void (*GeanyKeyCallback) (guint key_id);
@@ -246,6 +257,7 @@ GeanyKeyBinding *keybindings_set_item(GeanyKeyGroup *group, gsize key_id,
GeanyKeyBinding *keybindings_get_item(GeanyKeyGroup *group, gsize key_id);
+GdkModifierType keybindings_get_modifiers(GdkModifierType mods);
#ifdef GEANY_PRIVATE
Modified: src/keyfile.c
15 lines changed, 12 insertions(+), 3 deletions(-)
===================================================================
@@ -74,16 +74,25 @@
#define GEANY_DEFAULT_TOOLS_MAKE "make"
#ifdef G_OS_WIN32
#define GEANY_DEFAULT_TOOLS_TERMINAL "cmd.exe /Q /C %c"
+#elif defined(__APPLE__)
+#define GEANY_DEFAULT_TOOLS_TERMINAL "open -a terminal %c"
#else
#define GEANY_DEFAULT_TOOLS_TERMINAL "xterm -e \"/bin/sh %c\""
#endif
+#ifdef __APPLE__
+#define GEANY_DEFAULT_TOOLS_BROWSER "open -a safari"
+#define GEANY_DEFAULT_FONT_SYMBOL_LIST "Helvetica Medium 12"
+#define GEANY_DEFAULT_FONT_MSG_WINDOW "Helvetica Medium 12"
+#define GEANY_DEFAULT_FONT_EDITOR "Menlo Medium 12"
+#else
#define GEANY_DEFAULT_TOOLS_BROWSER "firefox"
-#define GEANY_DEFAULT_TOOLS_PRINTCMD "lpr"
-#define GEANY_DEFAULT_TOOLS_GREP "grep"
-#define GEANY_DEFAULT_MRU_LENGTH 10
#define GEANY_DEFAULT_FONT_SYMBOL_LIST "Sans 9"
#define GEANY_DEFAULT_FONT_MSG_WINDOW "Sans 9"
#define GEANY_DEFAULT_FONT_EDITOR "Monospace 10"
+#endif
+#define GEANY_DEFAULT_TOOLS_PRINTCMD "lpr"
+#define GEANY_DEFAULT_TOOLS_GREP "grep"
+#define GEANY_DEFAULT_MRU_LENGTH 10
#define GEANY_TOGGLE_MARK "~ "
#define GEANY_MAX_AUTOCOMPLETE_WORDS 30
#define GEANY_MAX_SYMBOLS_UPDATE_FREQ 250
Modified: src/notebook.c
4 lines changed, 2 insertions(+), 2 deletions(-)
===================================================================
@@ -617,8 +617,8 @@ static gboolean notebook_tab_click(GtkWidget *widget, GdkEventButton *event, gpo
return TRUE; /* stop other handlers like notebook_tab_bar_click_cb() */
}
/* switch last used tab on ctrl-click */
- state = event->state & gtk_accelerator_get_default_mod_mask();
- if (event->button == 1 && state == GDK_CONTROL_MASK)
+ state = keybindings_get_modifiers(event->state);
+ if (event->button == 1 && state == GEANY_PRIMARY_MOD_MASK)
{
keybindings_send_command(GEANY_KEY_GROUP_NOTEBOOK,
GEANY_KEYS_NOTEBOOK_SWITCHTABLASTUSED);
Modified: src/plugindata.h
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -565,7 +565,7 @@ typedef struct KeybindingFuncs
_GeanyKeyCallback callback, guint key, GdkModifierType mod,
const gchar *name, const gchar *label, GtkWidget *menu_item);
struct GeanyKeyBinding* (*keybindings_get_item)(struct GeanyKeyGroup *group, gsize key_id);
-
+ GdkModifierType (*keybindings_get_modifiers)(GdkModifierType mods);
}
KeybindingFuncs;
Modified: src/plugins.c
3 lines changed, 2 insertions(+), 1 deletions(-)
===================================================================
@@ -284,7 +284,8 @@ static EncodingFuncs encoding_funcs = {
static KeybindingFuncs keybindings_funcs = {
&keybindings_send_command,
&keybindings_set_item,
- &keybindings_get_item
+ &keybindings_get_item,
+ &keybindings_get_modifiers
};
static TagManagerFuncs tagmanager_funcs = {
Modified: src/prefs.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -1414,7 +1414,7 @@ static gboolean kb_grab_key_dialog_key_press_cb(GtkWidget *dialog, GdkEventKey *
g_return_val_if_fail(GTK_IS_LABEL(label), FALSE);
- state = event->state & gtk_accelerator_get_default_mod_mask();
+ state = keybindings_get_modifiers(event->state);
if (event->keyval == GDK_Escape)
return FALSE; /* close the dialog, don't allow escape when detecting keybindings. */
Modified: src/search.c
6 lines changed, 5 insertions(+), 1 deletions(-)
===================================================================
@@ -1841,8 +1841,10 @@ static gboolean read_fif_io(GIOChannel *source, GIOCondition condition, gchar *e
if (condition & (G_IO_IN | G_IO_PRI))
{
gchar *msg, *utf8_msg;
+ GIOStatus st;
- while (g_io_channel_read_line(source, &msg, NULL, NULL, NULL) && msg)
+ while ((st = g_io_channel_read_line(source, &msg, NULL, NULL, NULL)) != G_IO_STATUS_ERROR &&
+ st != G_IO_STATUS_EOF && msg)
{
utf8_msg = NULL;
@@ -1866,6 +1868,8 @@ static gboolean read_fif_io(GIOChannel *source, GIOCondition condition, gchar *e
g_free(utf8_msg);
g_free(msg);
}
+ if (st == G_IO_STATUS_ERROR || st == G_IO_STATUS_EOF)
+ return FALSE;
}
if (condition & (G_IO_ERR | G_IO_HUP | G_IO_NVAL))
return FALSE;
Modified: src/sidebar.c
4 lines changed, 3 insertions(+), 1 deletions(-)
===================================================================
@@ -41,6 +41,7 @@
#include "symbols.h"
#include "ui_utils.h"
#include "utils.h"
+#include "keybindings.h"
#include <string.h>
@@ -912,7 +913,8 @@ static gboolean taglist_go_to_selection(GtkTreeSelection *selection, guint keyva
if (doc != NULL)
{
navqueue_goto_line(doc, doc, line);
- if (keyval != GDK_space && ! (state & GDK_CONTROL_MASK))
+ state = keybindings_get_modifiers(state);
+ if (keyval != GDK_space && ! (state & GEANY_PRIMARY_MOD_MASK))
change_focus_to_editor(doc, NULL);
else
handled = FALSE;
Modified: src/ui_utils.c
20 lines changed, 17 insertions(+), 3 deletions(-)
===================================================================
@@ -2893,18 +2893,32 @@ GIcon *ui_get_mime_icon(const gchar *mime_type)
if (ctype)
{
icon = g_content_type_get_icon(ctype);
+ if (icon)
+ {
+ GtkIconInfo *icon_info;
+
+ icon_info = gtk_icon_theme_lookup_by_gicon(gtk_icon_theme_get_default(), icon, 16, 0);
+ if (!icon_info)
+ {
+ g_object_unref(icon);
+ icon = NULL;
+ }
+ else
+ gtk_icon_info_free(icon_info);
+ }
+
g_free(ctype);
}
/* fallback if icon lookup failed, like it might happen on Windows (?) */
if (! icon)
{
- const gchar *stock_id = GTK_STOCK_FILE;
+ const gchar *icon_name = "text-x-generic";
if (strstr(mime_type, "directory"))
- stock_id = GTK_STOCK_DIRECTORY;
+ icon_name = "folder";
- icon = g_themed_icon_new(stock_id);
+ icon = g_themed_icon_new(icon_name);
}
return icon;
}
Modified: src/utils.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -374,7 +374,7 @@ const gchar *utils_get_eol_name(gint eol_mode)
switch (eol_mode)
{
case SC_EOL_CRLF: return _("Win (CRLF)"); break;
- case SC_EOL_CR: return _("Mac (CR)"); break;
+ case SC_EOL_CR: return _("Classic Mac (CR)"); break;
default: return _("Unix (LF)"); break;
}
}
Modified: src/vte.c
13 lines changed, 7 insertions(+), 6 deletions(-)
===================================================================
@@ -39,6 +39,7 @@
#include "support.h"
#include "ui_utils.h"
#include "utils.h"
+#include "keybindings.h"
#include "gtkcompat.h"
@@ -205,9 +206,9 @@ void vte_init(void)
gint i;
const gchar *sonames[] = {
#if GTK_CHECK_VERSION(3, 0, 0)
- "libvte2_90.so", "libvte2_90.so.9",
+ "libvte2_90.so", "libvte2_90.so.9", "libvte2_90.dylib",
#else
- "libvte.so", "libvte.so.4", "libvte.so.8", "libvte.so.9",
+ "libvte.so", "libvte.so.4", "libvte.so.8", "libvte.so.9", "libvte.dylib",
#endif
NULL
};
@@ -328,7 +329,7 @@ void vte_close(void)
static gboolean vte_keyrelease_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
{
if (ui_is_keyval_enter_or_return(event->keyval) ||
- ((event->keyval == GDK_c) && (event->state & GDK_CONTROL_MASK)))
+ ((event->keyval == GDK_c) && (event->state & GEANY_PRIMARY_MOD_MASK)))
{
/* assume any text on the prompt has been executed when pressing Enter/Return */
clean = TRUE;
@@ -349,7 +350,7 @@ static gboolean vte_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpointer
event->keyval == GDK_d ||
event->keyval == GDK_C ||
event->keyval == GDK_D) &&
- event->state & GDK_CONTROL_MASK &&
+ event->state & GEANY_PRIMARY_MOD_MASK &&
! (event->state & GDK_SHIFT_MASK) && ! (event->state & GDK_MOD1_MASK))
{
vte_restart(widget);
@@ -560,14 +561,14 @@ static GtkWidget *vte_create_popup_menu(void)
item = gtk_image_menu_item_new_from_stock(GTK_STOCK_COPY, NULL);
gtk_widget_add_accelerator(item, "activate", accel_group,
- GDK_c, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);
+ GDK_c, GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);
gtk_widget_show(item);
gtk_container_add(GTK_CONTAINER(menu), item);
g_signal_connect(item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_COPY));
item = gtk_image_menu_item_new_from_stock(GTK_STOCK_PASTE, NULL);
gtk_widget_add_accelerator(item, "activate", accel_group,
- GDK_v, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);
+ GDK_v, GEANY_PRIMARY_MOD_MASK | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);
gtk_widget_show(item);
gtk_container_add(GTK_CONTAINER(menu), item);
g_signal_connect(item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_PASTE));
Modified: tagmanager/ctags/options.c
4 lines changed, 2 insertions(+), 2 deletions(-)
===================================================================
@@ -77,7 +77,6 @@ optionValues Option = {
NULL, /* -I */
FALSE, /* -a */
FALSE, /* -B */
- FALSE, /* -e */
#ifdef MACROS_USE_PATTERNS
EX_PATTERN, /* -n, --excmd */
#else
@@ -90,6 +89,7 @@ optionValues Option = {
NULL, /* -L */
NULL, /* -o */
NULL, /* -h */
+ NULL, /* --etags-include */
DEFAULT_FILE_FORMAT,/* --format */
FALSE, /* --if0 */
FALSE, /* --kind-long */
@@ -101,7 +101,7 @@ optionValues Option = {
FALSE, /* --tag-relative */
FALSE, /* --totals */
FALSE, /* --line-directives */
- FALSE,
+ FALSE, /* --nest */
};
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Commits
mailing list