Added some sanity checks to prevent crashes.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@477 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
parent
01ace30125
commit
378d614885
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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, " ");
|
||||
}
|
||||
|
||||
|
||||
31
src/main.c
31
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");
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user