diff --git a/src/callbacks.c b/src/callbacks.c index 0d7da3ce7..15fde25f9 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -356,6 +356,7 @@ on_undo1_activate (GtkMenuItem *menuitem, gpointer user_data) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; if (sci_can_undo(doc_list[idx].sci)) sci_undo(doc_list[idx].sci); } @@ -365,6 +366,7 @@ on_redo1_activate (GtkMenuItem *menuitem, gpointer user_data) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; if (sci_can_redo(doc_list[idx].sci)) sci_redo(doc_list[idx].sci); } @@ -454,8 +456,11 @@ on_toolbutton23_clicked (GtkToolButton *toolbutton, gpointer user_data) { gint idx = document_get_cur_idx(); - gchar *basename = g_path_get_basename(doc_list[idx].file_name); + gchar *basename; + if (idx == -1 || ! doc_list[idx].is_valid || doc_list[idx].file_name == NULL) return; + + basename = g_path_get_basename(doc_list[idx].file_name); if (dialogs_show_question(_ ("Are you sure you want to reload '%s'?\nAny unsaved changes will be lost."), basename)) @@ -605,7 +610,7 @@ on_zoom_in1_activate (GtkMenuItem *menuitem, gint idx = document_get_cur_idx(); static gboolean done = 1; - if (doc_list[idx].is_valid) + if (idx >= 0 && doc_list[idx].is_valid) { if (done++ % 3 == 0) sci_set_line_numbers(doc_list[idx].sci, app->show_linenumber_margin, (sci_get_zoom(doc_list[idx].sci) / 2)); @@ -619,7 +624,7 @@ on_zoom_out1_activate (GtkMenuItem *menuitem, gpointer user_data) { gint idx = document_get_cur_idx(); - if (doc_list[idx].is_valid) + if (idx >= 0 && doc_list[idx].is_valid) { if (sci_get_zoom(doc_list[idx].sci) == 0) sci_set_line_numbers(doc_list[idx].sci, app->show_linenumber_margin, 0); @@ -633,7 +638,7 @@ on_normal_size1_activate (GtkMenuItem *menuitem, gpointer user_data) { gint idx = document_get_cur_idx(); - if (doc_list[idx].is_valid) + if (idx >= 0 && doc_list[idx].is_valid) { sci_zoom_off(doc_list[idx].sci); sci_set_line_numbers(doc_list[idx].sci, app->show_linenumber_margin, 0); @@ -2390,4 +2395,3 @@ on_encoding_change (GtkMenuItem *menuitem, utils_update_statusbar(idx, -1); } - diff --git a/src/dialogs.c b/src/dialogs.c index 0f8282740..4bfb7c8d5 100644 --- a/src/dialogs.c +++ b/src/dialogs.c @@ -487,7 +487,7 @@ void dialogs_show_color(void) G_CALLBACK(gtk_widget_hide), NULL); } // We make sure the dialog is visible. - gtk_window_present (GTK_WINDOW(app->open_colorsel)); + gtk_window_present(GTK_WINDOW(app->open_colorsel)); #endif } @@ -879,6 +879,8 @@ void dialogs_show_replace(void) gint idx = document_get_cur_idx(); gchar *sel = NULL; + if (idx == -1 || ! doc_list[idx].is_valid) return; + if (sci_get_lines_selected(doc_list[idx].sci) == 1) { sel = g_malloc(sci_get_selected_text_length(doc_list[idx].sci)); diff --git a/src/geany.h b/src/geany.h index 4fc6cc198..1e9566415 100644 --- a/src/geany.h +++ b/src/geany.h @@ -205,7 +205,7 @@ typedef struct MyApp GtkWidget *redo_items[2]; GtkWidget *undo_items[2]; GtkWidget *save_buttons[2]; - GtkWidget *sensitive_buttons[31]; + GtkWidget *sensitive_buttons[32]; GtkWidget *open_colorsel; GtkWidget *open_fontsel; GtkWidget *open_filesel; diff --git a/src/keybindings.c b/src/keybindings.c index 851d2303c..cea1db422 100644 --- a/src/keybindings.c +++ b/src/keybindings.c @@ -340,7 +340,6 @@ gboolean keybindings_got_event(GtkWidget *widget, GdkEventKey *event, gpointer u return TRUE; } } - return FALSE; } @@ -464,18 +463,21 @@ static void cb_func_menu_zoomout(void) static void cb_func_menu_foldall(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; document_fold_all(idx); } static void cb_func_menu_unfoldall(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; document_unfold_all(idx); } static void cb_func_build_compile(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; if (doc_list[idx].file_type->menu_items->can_compile && doc_list[idx].file_name != NULL) on_build_compile_activate(NULL, NULL); } @@ -483,6 +485,7 @@ static void cb_func_build_compile(void) static void cb_func_build_link(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; if (doc_list[idx].file_type->menu_items->can_link && doc_list[idx].file_name != NULL) on_build_build_activate(NULL, NULL); } @@ -490,6 +493,7 @@ static void cb_func_build_link(void) static void cb_func_build_make(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; if (doc_list[idx].file_name != NULL) on_build_make_activate(NULL, GINT_TO_POINTER(0)); } @@ -497,6 +501,7 @@ static void cb_func_build_make(void) static void cb_func_build_makeowntarget(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; if (doc_list[idx].file_name != NULL) on_build_make_activate(NULL, GINT_TO_POINTER(1)); } @@ -504,6 +509,7 @@ static void cb_func_build_makeowntarget(void) static void cb_func_build_run(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; if (doc_list[idx].file_type->menu_items->can_exec && doc_list[idx].file_name != NULL) on_build_execute_activate(NULL, GINT_TO_POINTER(0)); } @@ -511,6 +517,7 @@ static void cb_func_build_run(void) static void cb_func_build_run2(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; if (doc_list[idx].file_type->menu_items->can_exec && doc_list[idx].file_name != NULL) on_build_execute_activate(NULL, GINT_TO_POINTER(1)); } @@ -518,6 +525,7 @@ static void cb_func_build_run2(void) static void cb_func_build_options(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; if ((doc_list[idx].file_type->menu_items->can_compile || doc_list[idx].file_type->menu_items->can_link || doc_list[idx].file_type->menu_items->can_exec) && @@ -528,6 +536,7 @@ static void cb_func_build_options(void) static void cb_func_reloadtaglist(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; document_update_tag_list(idx, TRUE); } @@ -585,6 +594,7 @@ static void keybindings_call_popup_item(int menuitemkey) static void cb_func_switch_editor(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; gtk_widget_grab_focus(GTK_WIDGET(doc_list[idx].sci)); } @@ -641,6 +651,7 @@ static void cb_func_toggle_sidebar(void) static void cb_func_edit_duplicateline(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; if (sci_can_copy(doc_list[idx].sci)) sci_selection_duplicate(doc_list[idx].sci); else @@ -650,30 +661,35 @@ static void cb_func_edit_duplicateline(void) static void cb_func_edit_commentline(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; sci_cb_do_comment(idx); } static void cb_func_edit_autocomplete(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; sci_cb_start_auto_complete(doc_list[idx].sci, sci_get_current_position(doc_list[idx].sci)); } static void cb_func_edit_calltip(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; sci_cb_show_calltip(doc_list[idx].sci, -1); } static void cb_func_edit_macrolist(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; sci_cb_show_macro_list(doc_list[idx].sci); } static void cb_func_edit_suppresscompletion(void) { gint idx = document_get_cur_idx(); + if (idx == -1 || ! doc_list[idx].is_valid) return; sci_add_text(doc_list[idx].sci, " "); } diff --git a/src/main.c b/src/main.c index 41149ae9a..61f9308e4 100644 --- a/src/main.c +++ b/src/main.c @@ -291,21 +291,22 @@ static void main_init(void) app->sensitive_buttons[13] = lookup_widget(app->window, "menu_count_words1"); app->sensitive_buttons[14] = lookup_widget(app->window, "menu_build1"); app->sensitive_buttons[15] = lookup_widget(app->window, "add_comments1"); - app->sensitive_buttons[16] = lookup_widget(app->window, "find1"); - app->sensitive_buttons[17] = lookup_widget(app->window, "find_next1"); - app->sensitive_buttons[18] = lookup_widget(app->window, "replace1"); - app->sensitive_buttons[19] = lookup_widget(app->window, "menu_paste1"); - app->sensitive_buttons[20] = lookup_widget(app->window, "menu_undo2"); - app->sensitive_buttons[21] = lookup_widget(app->window, "preferences2"); - app->sensitive_buttons[22] = lookup_widget(app->window, "revert1"); - app->sensitive_buttons[23] = lookup_widget(app->window, "menu_item4"); - app->sensitive_buttons[24] = lookup_widget(app->window, "menu_markers_margin1"); - app->sensitive_buttons[25] = lookup_widget(app->window, "menu_linenumber_margin1"); - app->sensitive_buttons[26] = lookup_widget(app->window, "menu_choose_color1"); - app->sensitive_buttons[27] = lookup_widget(app->window, "menu_zoom_in1"); - app->sensitive_buttons[28] = lookup_widget(app->window, "menu_zoom_out1"); - app->sensitive_buttons[29] = lookup_widget(app->window, "normal_size1"); - app->sensitive_buttons[30] = lookup_widget(app->window, "toolbutton24"); + app->sensitive_buttons[16] = lookup_widget(app->window, "search1"); + app->sensitive_buttons[17] = lookup_widget(app->window, "menu_paste1"); + app->sensitive_buttons[18] = lookup_widget(app->window, "menu_undo2"); + app->sensitive_buttons[19] = lookup_widget(app->window, "preferences2"); + app->sensitive_buttons[20] = lookup_widget(app->window, "revert1"); + app->sensitive_buttons[21] = lookup_widget(app->window, "menu_item4"); + app->sensitive_buttons[22] = lookup_widget(app->window, "menu_markers_margin1"); + app->sensitive_buttons[23] = lookup_widget(app->window, "menu_linenumber_margin1"); + app->sensitive_buttons[24] = lookup_widget(app->window, "menu_choose_color1"); + app->sensitive_buttons[25] = lookup_widget(app->window, "menu_zoom_in1"); + app->sensitive_buttons[26] = lookup_widget(app->window, "menu_zoom_out1"); + app->sensitive_buttons[27] = lookup_widget(app->window, "normal_size1"); + app->sensitive_buttons[28] = lookup_widget(app->window, "toolbutton24"); + app->sensitive_buttons[29] = lookup_widget(app->window, "toolbutton25"); + app->sensitive_buttons[30] = lookup_widget(app->window, "entry_goto_line"); + app->sensitive_buttons[31] = lookup_widget(app->window, "treeview6"); app->redo_items[0] = lookup_widget(app->popup_menu, "redo1"); app->redo_items[1] = lookup_widget(app->window, "menu_redo2"); app->undo_items[0] = lookup_widget(app->popup_menu, "undo1"); diff --git a/src/sci_cb.h b/src/sci_cb.h index 17df0f339..01f2758a0 100644 --- a/src/sci_cb.h +++ b/src/sci_cb.h @@ -40,8 +40,6 @@ void sci_cb_show_macro_list(ScintillaObject *sci); gboolean sci_cb_handle_xml(ScintillaObject *sci, gchar ch); -gboolean sci_cb_handle_uri(ScintillaObject *sci, gint pos); - gboolean sci_cb_show_calltip(ScintillaObject *sci, gint pos); void sci_cb_do_comment(gint idx);