Branch: refs/heads/master Author: Nick Treleaven n@trelsoft.com Committer: Nick Treleaven n@trelsoft.com Date: Thu, 29 Aug 2019 10:23:26 UTC Commit: 434cfe580b0fdf4cf4cd02f4f7cb0bbbfa922f5e https://github.com/geany/geany/commit/434cfe580b0fdf4cf4cd02f4f7cb0bbbfa922f...
Log Message: ----------- build.h: Move GBO_TO_* macros to build.c
Format the macros so they are a bit more readable. Move build keybinding action code to build.c.
Modified Paths: -------------- src/build.c src/build.h src/keybindings.c
Modified: src/build.c 89 lines changed, 89 insertions(+), 0 deletions(-) =================================================================== @@ -81,6 +81,39 @@ static RunInfo *run_info; static const gchar RUN_SCRIPT_CMD[] = "geany_run_script_XXXXXX.sh"; #endif
+/* * Convert @c GeanyBuildType to @c GeanyBuildGroup. + * + * This macro converts @c GeanyBuildType enum values (the "known" commands) + * to the group they are part of. + * + * @param gbo the @c GeanyBuildType value. + * + * @return the @c GeanyBuildGroup group that @a gbo is in. + * + * Note this is a macro so that it can be used in static initialisers. + **/ +#define GBO_TO_GBG(gbo) \ + ((gbo) > GEANY_GBO_EXEC ? GEANY_GBG_COUNT : \ + ((gbo) >= GEANY_GBO_EXEC ? GEANY_GBG_EXEC : \ + ((gbo) >= GEANY_GBO_MAKE_ALL ? GEANY_GBG_NON_FT : GEANY_GBG_FT))) + +/* * Convert @c GeanyBuildType to command index. + * + * This macro converts @c GeanyBuildType enum values (the "known" commands) + * to the index within the group. + * + * @param gbo the @c GeanyBuildType value. + * + * @return the index of the @a gbo command in its group. + * + * Note this is a macro so that it can be used in static initialisers. + **/ +#define GBO_TO_CMD(gbo) \ + ((gbo) >= GEANY_GBO_COUNT ? (gbo) - GEANY_GBO_COUNT : \ + ((gbo) >= GEANY_GBO_EXEC ? (gbo) - GEANY_GBO_EXEC : \ + ((gbo) >= GEANY_GBO_MAKE_ALL ? \ + (gbo) - GEANY_GBO_MAKE_ALL : (gbo)))) + /* pack group (<8) and command (<32) into a user_data pointer */ #define GRP_CMD_TO_POINTER(grp, cmd) GUINT_TO_POINTER((((grp)&7) << 5) | ((cmd)&0x1f)) #define GBO_TO_POINTER(gbo) (GRP_CMD_TO_POINTER(GBO_TO_GBG(gbo), GBO_TO_CMD(gbo))) @@ -2730,3 +2763,59 @@ void build_init(void) /* set the submenu to the toolbar item */ geany_menu_button_action_set_menu(GEANY_MENU_BUTTON_ACTION(widgets.build_action), toolmenu); } + + +gboolean build_keybinding(guint key_id) +{ + GtkWidget *item; + BuildMenuItems *menu_items; + GeanyDocument *doc = document_get_current(); + + if (doc == NULL) + return TRUE; + + if (!gtk_widget_is_sensitive(ui_lookup_widget(main_widgets.window, "menu_build1"))) + return TRUE; + + menu_items = build_get_menu_items(doc->file_type->id); + /* TODO make it a table??*/ + switch (key_id) + { + case GEANY_KEYS_BUILD_COMPILE: + item = menu_items->menu_item[GEANY_GBG_FT][GBO_TO_CMD(GEANY_GBO_COMPILE)]; + break; + case GEANY_KEYS_BUILD_LINK: + item = menu_items->menu_item[GEANY_GBG_FT][GBO_TO_CMD(GEANY_GBO_BUILD)]; + break; + case GEANY_KEYS_BUILD_MAKE: + item = menu_items->menu_item[GEANY_GBG_NON_FT][GBO_TO_CMD(GEANY_GBO_MAKE_ALL)]; + break; + case GEANY_KEYS_BUILD_MAKEOWNTARGET: + item = menu_items->menu_item[GEANY_GBG_NON_FT][GBO_TO_CMD(GEANY_GBO_CUSTOM)]; + break; + case GEANY_KEYS_BUILD_MAKEOBJECT: + item = menu_items->menu_item[GEANY_GBG_NON_FT][GBO_TO_CMD(GEANY_GBO_MAKE_OBJECT)]; + break; + case GEANY_KEYS_BUILD_NEXTERROR: + item = menu_items->menu_item[GBG_FIXED][GBF_NEXT_ERROR]; + break; + case GEANY_KEYS_BUILD_PREVIOUSERROR: + item = menu_items->menu_item[GBG_FIXED][GBF_PREV_ERROR]; + break; + case GEANY_KEYS_BUILD_RUN: + item = menu_items->menu_item[GEANY_GBG_EXEC][GBO_TO_CMD(GEANY_GBO_EXEC)]; + break; + case GEANY_KEYS_BUILD_OPTIONS: + item = menu_items->menu_item[GBG_FIXED][GBF_COMMANDS]; + break; + default: + item = NULL; + } + /* Note: For Build menu items it's OK (at the moment) to assume they are in the correct + * sensitive state, but some other menus don't update the sensitive status until + * they are redrawn. */ + if (item && gtk_widget_is_sensitive(item)) + gtk_menu_item_activate(GTK_MENU_ITEM(item)); + return TRUE; +} +
Modified: src/build.h 30 lines changed, 2 insertions(+), 28 deletions(-) =================================================================== @@ -94,34 +94,6 @@ typedef enum /* include the fixed widgets in an array indexed by groups */ #define GBG_FIXED GEANY_GBG_COUNT
-/* * Convert @c GeanyBuildType to @c GeanyBuildGroup. - * - * This macro converts @c GeanyBuildType enum values (the "known" commands) - * to the group they are part of. - * - * @param gbo the @c GeanyBuildType value. - * - * @return the @c GeanyBuildGroup group that @a gbo is in. - * - * Note this is a macro so that it can be used in static initialisers. - **/ -#define GBO_TO_GBG(gbo) ((gbo)>GEANY_GBO_EXEC?GEANY_GBG_COUNT:((gbo)>=GEANY_GBO_EXEC?GEANY_GBG_EXEC: \ - ((gbo) >= GEANY_GBO_MAKE_ALL ? GEANY_GBG_NON_FT : GEANY_GBG_FT))) - -/* * Convert @c GeanyBuildType to command index. - * - * This macro converts @c GeanyBuildType enum values (the "known" commands) - * to the index within the group. - * - * @param gbo the @c GeanyBuildType value. - * - * @return the index of the @a gbo command in its group. - * - * Note this is a macro so that it can be used in static initialisers. - **/ -#define GBO_TO_CMD(gbo) ((gbo)>=GEANY_GBO_COUNT?(gbo)-GEANY_GBO_COUNT:((gbo)>=GEANY_GBO_EXEC?(gbo)-GEANY_GBO_EXEC: \ - ((gbo) >= GEANY_GBO_MAKE_ALL ? (gbo)-GEANY_GBO_MAKE_ALL : (gbo)))) - enum GeanyBuildFixedMenuItems { GBF_NEXT_ERROR, @@ -211,6 +183,8 @@ void build_set_group_count(GeanyBuildGroup grp, gint count);
gchar **build_get_regex(GeanyBuildGroup grp, GeanyFiletype *ft, guint *from);
+gboolean build_keybinding(guint key_id); + #endif /* GEANY_PRIVATE */
G_END_DECLS
Modified: src/keybindings.c 58 lines changed, 1 insertions(+), 57 deletions(-) =================================================================== @@ -89,7 +89,6 @@ static gboolean cb_func_search_action(guint key_id); static gboolean cb_func_goto_action(guint key_id); static gboolean cb_func_switch_action(guint key_id); static gboolean cb_func_clipboard_action(guint key_id); -static gboolean cb_func_build_action(guint key_id); static gboolean cb_func_document_action(guint key_id); static gboolean cb_func_view_action(guint key_id);
@@ -320,7 +319,7 @@ static void init_default_kb(void) ADD_KB_GROUP(GEANY_KEY_GROUP_VIEW, _("View"), cb_func_view_action); ADD_KB_GROUP(GEANY_KEY_GROUP_DOCUMENT, _("Document"), cb_func_document_action); ADD_KB_GROUP(GEANY_KEY_GROUP_PROJECT, _("Project"), cb_func_project_action); - ADD_KB_GROUP(GEANY_KEY_GROUP_BUILD, _("Build"), cb_func_build_action); + ADD_KB_GROUP(GEANY_KEY_GROUP_BUILD, _("Build"), build_keybinding); ADD_KB_GROUP(GEANY_KEY_GROUP_TOOLS, _("Tools"), NULL); ADD_KB_GROUP(GEANY_KEY_GROUP_HELP, _("Help"), NULL); ADD_KB_GROUP(GEANY_KEY_GROUP_FOCUS, _("Focus"), cb_func_switch_action); @@ -1653,61 +1652,6 @@ static void cb_func_menu_messagewindow(G_GNUC_UNUSED guint key_id) }
-static gboolean cb_func_build_action(guint key_id) -{ - GtkWidget *item; - BuildMenuItems *menu_items; - GeanyDocument *doc = document_get_current(); - - if (doc == NULL) - return TRUE; - - if (!gtk_widget_is_sensitive(ui_lookup_widget(main_widgets.window, "menu_build1"))) - return TRUE; - - menu_items = build_get_menu_items(doc->file_type->id); - /* TODO make it a table??*/ - switch (key_id) - { - case GEANY_KEYS_BUILD_COMPILE: - item = menu_items->menu_item[GEANY_GBG_FT][GBO_TO_CMD(GEANY_GBO_COMPILE)]; - break; - case GEANY_KEYS_BUILD_LINK: - item = menu_items->menu_item[GEANY_GBG_FT][GBO_TO_CMD(GEANY_GBO_BUILD)]; - break; - case GEANY_KEYS_BUILD_MAKE: - item = menu_items->menu_item[GEANY_GBG_NON_FT][GBO_TO_CMD(GEANY_GBO_MAKE_ALL)]; - break; - case GEANY_KEYS_BUILD_MAKEOWNTARGET: - item = menu_items->menu_item[GEANY_GBG_NON_FT][GBO_TO_CMD(GEANY_GBO_CUSTOM)]; - break; - case GEANY_KEYS_BUILD_MAKEOBJECT: - item = menu_items->menu_item[GEANY_GBG_NON_FT][GBO_TO_CMD(GEANY_GBO_MAKE_OBJECT)]; - break; - case GEANY_KEYS_BUILD_NEXTERROR: - item = menu_items->menu_item[GBG_FIXED][GBF_NEXT_ERROR]; - break; - case GEANY_KEYS_BUILD_PREVIOUSERROR: - item = menu_items->menu_item[GBG_FIXED][GBF_PREV_ERROR]; - break; - case GEANY_KEYS_BUILD_RUN: - item = menu_items->menu_item[GEANY_GBG_EXEC][GBO_TO_CMD(GEANY_GBO_EXEC)]; - break; - case GEANY_KEYS_BUILD_OPTIONS: - item = menu_items->menu_item[GBG_FIXED][GBF_COMMANDS]; - break; - default: - item = NULL; - } - /* Note: For Build menu items it's OK (at the moment) to assume they are in the correct - * sensitive state, but some other menus don't update the sensitive status until - * they are redrawn. */ - if (item && gtk_widget_is_sensitive(item)) - gtk_menu_item_activate(GTK_MENU_ITEM(item)); - return TRUE; -} - - static gboolean read_current_word(GeanyDocument *doc, gboolean sci_word) { g_return_val_if_fail(DOC_VALID(doc), FALSE);
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).