made the symbol list document-oriented, so it has not to be generated on every notebook switch page event
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@65 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
parent
90ca4650d0
commit
e7e279e24b
@ -198,9 +198,14 @@ gint document_create_new_sci(const gchar *filename)
|
|||||||
gtk_notebook_insert_page_menu(GTK_NOTEBOOK(app->notebook), GTK_WIDGET(sci), hbox, this.tabmenu_label, 0);
|
gtk_notebook_insert_page_menu(GTK_NOTEBOOK(app->notebook), GTK_WIDGET(sci), hbox, this.tabmenu_label, 0);
|
||||||
gtk_notebook_set_current_page(GTK_NOTEBOOK(app->notebook), 0);
|
gtk_notebook_set_current_page(GTK_NOTEBOOK(app->notebook), 0);
|
||||||
iter = treeviews_openfiles_add(new_idx, title);
|
iter = treeviews_openfiles_add(new_idx, title);
|
||||||
|
|
||||||
g_free(title);
|
g_free(title);
|
||||||
|
|
||||||
|
this.tag_store = NULL;
|
||||||
|
this.tag_tree = NULL;
|
||||||
|
//this.tag_tree = gtk_tree_view_new();
|
||||||
|
//gtk_widget_show(this.tag_tree);
|
||||||
|
//treeviews_prepare_taglist(this.tag_tree, this.tag_store, new_idx);
|
||||||
|
|
||||||
// "the" SCI signal
|
// "the" SCI signal
|
||||||
g_signal_connect((GtkWidget*) sci, "sci-notify", G_CALLBACK(on_editor_notification), GINT_TO_POINTER(new_idx));
|
g_signal_connect((GtkWidget*) sci, "sci-notify", G_CALLBACK(on_editor_notification), GINT_TO_POINTER(new_idx));
|
||||||
// signal for insert-key(works without too, but to update the right status bar)
|
// signal for insert-key(works without too, but to update the right status bar)
|
||||||
@ -216,7 +221,6 @@ gint document_create_new_sci(const gchar *filename)
|
|||||||
this.scid = sciid;
|
this.scid = sciid;
|
||||||
this.file_name = (filename) ? g_strdup(filename) : NULL;
|
this.file_name = (filename) ? g_strdup(filename) : NULL;
|
||||||
this.sci = sci;
|
this.sci = sci;
|
||||||
//this.tab_button = but;
|
|
||||||
this.encoding = NULL;
|
this.encoding = NULL;
|
||||||
this.tm_file = NULL;
|
this.tm_file = NULL;
|
||||||
this.iter = iter;
|
this.iter = iter;
|
||||||
@ -228,7 +232,7 @@ gint document_create_new_sci(const gchar *filename)
|
|||||||
this.do_overwrite = FALSE;
|
this.do_overwrite = FALSE;
|
||||||
this.readonly = FALSE;
|
this.readonly = FALSE;
|
||||||
doc_list[new_idx] = this;
|
doc_list[new_idx] = this;
|
||||||
//has_tabs = TRUE;
|
|
||||||
return new_idx;
|
return new_idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,6 +251,11 @@ gboolean document_remove(gint page_num)
|
|||||||
}
|
}
|
||||||
gtk_notebook_remove_page(GTK_NOTEBOOK(app->notebook), page_num);
|
gtk_notebook_remove_page(GTK_NOTEBOOK(app->notebook), page_num);
|
||||||
treeviews_openfiles_remove(doc_list[idx].iter);
|
treeviews_openfiles_remove(doc_list[idx].iter);
|
||||||
|
if (GTK_IS_WIDGET(doc_list[idx].tag_tree))
|
||||||
|
{
|
||||||
|
g_object_unref(doc_list[idx].tag_tree);
|
||||||
|
gtk_widget_destroy(doc_list[idx].tag_tree);
|
||||||
|
}
|
||||||
msgwin_status_add(_("File %s closed."),
|
msgwin_status_add(_("File %s closed."),
|
||||||
(doc_list[idx].file_name) ? doc_list[idx].file_name : GEANY_STRING_UNTITLED);
|
(doc_list[idx].file_name) ? doc_list[idx].file_name : GEANY_STRING_UNTITLED);
|
||||||
g_free(doc_list[idx].encoding);
|
g_free(doc_list[idx].encoding);
|
||||||
@ -258,7 +267,7 @@ gboolean document_remove(gint page_num)
|
|||||||
doc_list[idx].tm_file = NULL;
|
doc_list[idx].tm_file = NULL;
|
||||||
if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook)) == 0)
|
if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook)) == 0)
|
||||||
{
|
{
|
||||||
utils_update_visible_tag_lists(-1);
|
utils_update_tag_list(-1, FALSE);
|
||||||
//on_notebook1_switch_page(GTK_NOTEBOOK(app->notebook), NULL, 0, NULL);
|
//on_notebook1_switch_page(GTK_NOTEBOOK(app->notebook), NULL, 0, NULL);
|
||||||
utils_set_window_title(-1);
|
utils_set_window_title(-1);
|
||||||
utils_save_buttons_toggle(FALSE);
|
utils_save_buttons_toggle(FALSE);
|
||||||
@ -285,7 +294,7 @@ void document_new_file(filetype *ft)
|
|||||||
document_set_filetype(idx, (ft) ? ft : filetypes[GEANY_FILETYPES_ALL]);
|
document_set_filetype(idx, (ft) ? ft : filetypes[GEANY_FILETYPES_ALL]);
|
||||||
utils_set_window_title(idx);
|
utils_set_window_title(idx);
|
||||||
utils_build_show_hide(idx);
|
utils_build_show_hide(idx);
|
||||||
//utils_update_visible_tag_lists(idx);
|
//utils_update_tag_list(idx, FALSE);
|
||||||
doc_list[idx].mtime = time(NULL);
|
doc_list[idx].mtime = time(NULL);
|
||||||
doc_list[idx].changed = FALSE;
|
doc_list[idx].changed = FALSE;
|
||||||
document_set_text_changed(idx);
|
document_set_text_changed(idx);
|
||||||
@ -442,7 +451,7 @@ void document_open_file(gint idx, const gchar *filename, gint pos, gboolean read
|
|||||||
filename, gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook)),
|
filename, gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook)),
|
||||||
(readonly) ? _(", read-only") : "");
|
(readonly) ? _(", read-only") : "");
|
||||||
}
|
}
|
||||||
//document_update_tag_list(idx);
|
//utils_update_tag_list(idx, FALSE);
|
||||||
document_set_text_changed(idx);
|
document_set_text_changed(idx);
|
||||||
|
|
||||||
#ifdef GEANY_WIN32
|
#ifdef GEANY_WIN32
|
||||||
@ -748,13 +757,13 @@ void document_update_tag_list(gint idx)
|
|||||||
// parse the file after setting the filetype
|
// parse the file after setting the filetype
|
||||||
TM_SOURCE_FILE(doc_list[idx].tm_file)->lang = getNamedLanguage((doc_list[idx].file_type)->name);
|
TM_SOURCE_FILE(doc_list[idx].tm_file)->lang = getNamedLanguage((doc_list[idx].file_type)->name);
|
||||||
tm_source_file_update(doc_list[idx].tm_file, TRUE, FALSE, TRUE);
|
tm_source_file_update(doc_list[idx].tm_file, TRUE, FALSE, TRUE);
|
||||||
utils_update_visible_tag_lists(idx);
|
utils_update_tag_list(idx, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (tm_source_file_update(doc_list[idx].tm_file, TRUE, FALSE, TRUE))
|
if (tm_source_file_update(doc_list[idx].tm_file, TRUE, FALSE, TRUE))
|
||||||
{
|
{
|
||||||
utils_update_visible_tag_lists(idx);
|
utils_update_tag_list(idx, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -81,6 +81,8 @@ typedef struct document
|
|||||||
ScintillaObject *sci;
|
ScintillaObject *sci;
|
||||||
GtkWidget *tab_label;
|
GtkWidget *tab_label;
|
||||||
GtkWidget *tabmenu_label;
|
GtkWidget *tabmenu_label;
|
||||||
|
GtkWidget *tag_tree;
|
||||||
|
GtkTreeStore *tag_store;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
gint scid;
|
gint scid;
|
||||||
gboolean readonly;
|
gboolean readonly;
|
||||||
@ -103,6 +105,8 @@ typedef struct MyApp
|
|||||||
gint toolbar_icon_style;
|
gint toolbar_icon_style;
|
||||||
gint geometry[4];
|
gint geometry[4];
|
||||||
gboolean debug_mode;
|
gboolean debug_mode;
|
||||||
|
// represents the state at startup while opening session files
|
||||||
|
gboolean opening_session_files;
|
||||||
gboolean have_vte;
|
gboolean have_vte;
|
||||||
gboolean ignore_global_tags;
|
gboolean ignore_global_tags;
|
||||||
gboolean toolbar_visible;
|
gboolean toolbar_visible;
|
||||||
@ -184,6 +188,8 @@ typedef struct MyApp
|
|||||||
GtkWidget *find_dialog;
|
GtkWidget *find_dialog;
|
||||||
GtkWidget *replace_dialog;
|
GtkWidget *replace_dialog;
|
||||||
GtkWidget *build_menu_item_link;
|
GtkWidget *build_menu_item_link;
|
||||||
|
GtkWidget *default_tag_tree;
|
||||||
|
//GtkTreeStore *default_tag_store;
|
||||||
const TMWorkspace *tm_workspace;
|
const TMWorkspace *tm_workspace;
|
||||||
GQueue *recent_queue;
|
GQueue *recent_queue;
|
||||||
} MyApp;
|
} MyApp;
|
||||||
@ -227,7 +233,6 @@ enum
|
|||||||
RIGHT
|
RIGHT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// prototype from tagmanager/parse.h, used in document.c, ugly but it works
|
// prototype from tagmanager/parse.h, used in document.c, ugly but it works
|
||||||
extern langType getNamedLanguage(const char *const name);
|
extern langType getNamedLanguage(const char *const name);
|
||||||
|
|
||||||
|
|||||||
@ -28,47 +28,44 @@
|
|||||||
#include "treeviews.h"
|
#include "treeviews.h"
|
||||||
|
|
||||||
|
|
||||||
/* does some preparing things to the tag list widget */
|
/* the following two functions are document-related, but I think they fit better here than in document.c*/
|
||||||
void treeviews_prepare_taglist(void)
|
void treeviews_prepare_taglist(GtkWidget *tree, GtkTreeStore *store)
|
||||||
{
|
{
|
||||||
GtkCellRenderer *renderer;
|
GtkCellRenderer *renderer;
|
||||||
GtkTreeViewColumn *column;
|
GtkTreeViewColumn *column;
|
||||||
GtkTreeSelection *select;
|
GtkTreeSelection *select;
|
||||||
tv.tree_taglist = lookup_widget(app->window, "treeview2");
|
|
||||||
|
|
||||||
tv.store_taglist = gtk_tree_store_new(1, G_TYPE_STRING);
|
|
||||||
|
|
||||||
renderer = gtk_cell_renderer_text_new();
|
renderer = gtk_cell_renderer_text_new();
|
||||||
column = gtk_tree_view_column_new_with_attributes(_("Symbols"), renderer, "text", 0, NULL);
|
column = gtk_tree_view_column_new_with_attributes(_("Symbols"), renderer, "text", 0, NULL);
|
||||||
gtk_tree_view_append_column(GTK_TREE_VIEW(tv.tree_taglist), column);
|
gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
|
||||||
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tv.tree_taglist), FALSE);
|
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE);
|
||||||
|
|
||||||
gtk_widget_modify_font(tv.tree_taglist, pango_font_description_from_string(app->tagbar_font));
|
gtk_widget_modify_font(tree, pango_font_description_from_string(app->tagbar_font));
|
||||||
gtk_tree_view_set_model(GTK_TREE_VIEW(tv.tree_taglist), GTK_TREE_MODEL(tv.store_taglist));
|
gtk_tree_view_set_model(GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store));
|
||||||
|
|
||||||
// selection handling
|
// selection handling
|
||||||
select = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv.tree_taglist));
|
select = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
|
||||||
gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
|
gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
|
||||||
g_signal_connect(G_OBJECT(select), "changed", G_CALLBACK(on_taglist_tree_selection_changed), NULL);
|
g_signal_connect(G_OBJECT(select), "changed", G_CALLBACK(on_taglist_tree_selection_changed), NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void treeviews_init_tag_list(void)
|
void treeviews_init_tag_list(gint idx)
|
||||||
{
|
{
|
||||||
gtk_tree_store_append(tv.store_taglist, &(tv.tag_function), NULL);
|
gtk_tree_store_append(doc_list[idx].tag_store, &(tv.tag_function), NULL);
|
||||||
gtk_tree_store_set(tv.store_taglist, &(tv.tag_function), 0, _("Function"), -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &(tv.tag_function), 0, _("Function"), -1);
|
||||||
gtk_tree_store_append(tv.store_taglist, &(tv.tag_macro), NULL);
|
gtk_tree_store_append(doc_list[idx].tag_store, &(tv.tag_macro), NULL);
|
||||||
gtk_tree_store_set(tv.store_taglist, &(tv.tag_macro), 0, _("Macro"), -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &(tv.tag_macro), 0, _("Macro"), -1);
|
||||||
gtk_tree_store_append(tv.store_taglist, &(tv.tag_member), NULL);
|
gtk_tree_store_append(doc_list[idx].tag_store, &(tv.tag_member), NULL);
|
||||||
gtk_tree_store_set(tv.store_taglist, &(tv.tag_member), 0, _("Members"), -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &(tv.tag_member), 0, _("Members"), -1);
|
||||||
gtk_tree_store_append(tv.store_taglist, &(tv.tag_variable), NULL);
|
gtk_tree_store_append(doc_list[idx].tag_store, &(tv.tag_variable), NULL);
|
||||||
gtk_tree_store_set(tv.store_taglist, &(tv.tag_variable), 0, _("Variables"), -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &(tv.tag_variable), 0, _("Variables"), -1);
|
||||||
gtk_tree_store_append(tv.store_taglist, &(tv.tag_namespace), NULL);
|
gtk_tree_store_append(doc_list[idx].tag_store, &(tv.tag_namespace), NULL);
|
||||||
gtk_tree_store_set(tv.store_taglist, &(tv.tag_namespace), 0, _("Namespace"), -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &(tv.tag_namespace), 0, _("Namespace"), -1);
|
||||||
gtk_tree_store_append(tv.store_taglist, &(tv.tag_struct), NULL);
|
gtk_tree_store_append(doc_list[idx].tag_store, &(tv.tag_struct), NULL);
|
||||||
gtk_tree_store_set(tv.store_taglist, &(tv.tag_struct), 0, _("Struct / Typedef"), -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &(tv.tag_struct), 0, _("Struct / Typedef"), -1);
|
||||||
gtk_tree_store_append(tv.store_taglist, &(tv.tag_other), NULL);
|
gtk_tree_store_append(doc_list[idx].tag_store, &(tv.tag_other), NULL);
|
||||||
gtk_tree_store_set(tv.store_taglist, &(tv.tag_other), 0, _("Other"), -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &(tv.tag_other), 0, _("Other"), -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -28,10 +28,9 @@
|
|||||||
|
|
||||||
|
|
||||||
typedef struct treeviews {
|
typedef struct treeviews {
|
||||||
//GtkListStore *store_taglist;
|
//GtkTreeStore *store_taglist;
|
||||||
GtkTreeStore *store_taglist;
|
|
||||||
GtkListStore *store_openfiles;
|
GtkListStore *store_openfiles;
|
||||||
GtkWidget *tree_taglist;
|
//GtkWidget *tree_taglist;
|
||||||
GtkWidget *tree_openfiles;
|
GtkWidget *tree_openfiles;
|
||||||
GtkWidget *popup_openfiles;
|
GtkWidget *popup_openfiles;
|
||||||
GtkTreeIter tag_function;
|
GtkTreeIter tag_function;
|
||||||
@ -47,11 +46,11 @@ treeviews tv;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void treeviews_prepare_taglist(void);
|
void treeviews_prepare_taglist(GtkWidget *tree, GtkTreeStore *store);
|
||||||
|
|
||||||
gint treeviews_sort_tag_list(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data);
|
gint treeviews_sort_tag_list(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data);
|
||||||
|
|
||||||
void treeviews_init_tag_list(void);
|
void treeviews_init_tag_list(gint idx);
|
||||||
|
|
||||||
void treeviews_prepare_openfiles(void);
|
void treeviews_prepare_openfiles(void);
|
||||||
|
|
||||||
|
|||||||
109
src/utils.c
109
src/utils.c
@ -655,45 +655,59 @@ void utils_set_fullscreen(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void utils_update_visible_tag_lists(gint idx)
|
void utils_update_tag_list(gint idx, gboolean update)
|
||||||
{
|
{
|
||||||
GList *tmp;
|
GList *tmp;
|
||||||
const GList *tags;
|
const GList *tags;
|
||||||
|
|
||||||
|
if (gtk_bin_get_child(GTK_BIN(app->tagbar)))
|
||||||
|
gtk_container_remove(GTK_CONTAINER(app->tagbar), gtk_bin_get_child(GTK_BIN(app->tagbar)));
|
||||||
|
|
||||||
|
if (app->default_tag_tree == NULL)
|
||||||
|
{
|
||||||
|
GtkTreeIter iter;
|
||||||
|
GtkTreeStore *store = gtk_tree_store_new(1, G_TYPE_STRING);
|
||||||
|
app->default_tag_tree = gtk_tree_view_new();
|
||||||
|
treeviews_prepare_taglist(app->default_tag_tree, store);
|
||||||
|
gtk_tree_store_append(store, &iter, NULL);
|
||||||
|
gtk_tree_store_set(store, &iter, 0, _("No tags found"), -1);
|
||||||
|
gtk_widget_show(app->default_tag_tree);
|
||||||
|
g_object_ref((gpointer)app->default_tag_tree); // to hold it after removing
|
||||||
|
}
|
||||||
|
|
||||||
// make all inactive, because there is no more tab left, or something strange occured
|
// make all inactive, because there is no more tab left, or something strange occured
|
||||||
if (idx == -1 && app->treeview_symbol_visible)
|
if (idx == -1 || ! app->treeview_symbol_visible || ! doc_list[idx].file_type->has_tags)
|
||||||
{
|
|
||||||
GtkTreeIter iter;
|
|
||||||
gtk_tree_store_clear(tv.store_taglist);
|
|
||||||
gtk_tree_store_append(tv.store_taglist, &iter, NULL);
|
|
||||||
gtk_tree_store_set(tv.store_taglist, &iter, 0, _("No tags found"), -1);
|
|
||||||
gtk_widget_set_sensitive(app->tagbar, FALSE);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! doc_list[idx].file_type->has_tags)
|
|
||||||
{
|
{
|
||||||
gtk_widget_set_sensitive(app->tagbar, FALSE);
|
gtk_widget_set_sensitive(app->tagbar, FALSE);
|
||||||
|
gtk_container_add(GTK_CONTAINER(app->tagbar), app->default_tag_tree);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
//geany_debug("before %d", update);
|
||||||
|
|
||||||
// updating the tag list in the left tag window if visisble
|
if (update)
|
||||||
if (app->treeview_symbol_visible)
|
{ // updating the tag list in the left tag window
|
||||||
|
if (doc_list[idx].tag_tree == NULL)
|
||||||
{
|
{
|
||||||
GtkTreeIter iter;
|
doc_list[idx].tag_store = gtk_tree_store_new(1, G_TYPE_STRING);
|
||||||
|
doc_list[idx].tag_tree = gtk_tree_view_new();
|
||||||
|
treeviews_prepare_taglist(doc_list[idx].tag_tree, doc_list[idx].tag_store);
|
||||||
|
gtk_widget_show(doc_list[idx].tag_tree);
|
||||||
|
g_object_ref((gpointer)doc_list[idx].tag_tree); // to hold it after removing
|
||||||
|
}
|
||||||
|
|
||||||
tags = utils_get_tag_list(idx, tm_tag_max_t);
|
tags = utils_get_tag_list(idx, tm_tag_max_t);
|
||||||
gtk_tree_store_clear(tv.store_taglist);
|
if (doc_list[idx].tm_file != NULL && tags != NULL)
|
||||||
|
|
||||||
if (doc_list[idx].tm_file && tags)
|
|
||||||
{
|
{
|
||||||
|
GtkTreeIter iter;
|
||||||
GtkTreeModel *model;
|
GtkTreeModel *model;
|
||||||
gtk_widget_set_sensitive(app->tagbar, TRUE);
|
|
||||||
|
gtk_tree_store_clear(doc_list[idx].tag_store);
|
||||||
// unref the store to speed up the filling(from TreeView Tutorial)
|
// unref the store to speed up the filling(from TreeView Tutorial)
|
||||||
model = gtk_tree_view_get_model(GTK_TREE_VIEW(tv.tree_taglist));
|
model = gtk_tree_view_get_model(GTK_TREE_VIEW(doc_list[idx].tag_tree));
|
||||||
g_object_ref(model); // Make sure the model stays with us after the tree view unrefs it
|
g_object_ref(model); // Make sure the model stays with us after the tree view unrefs it
|
||||||
gtk_tree_view_set_model(GTK_TREE_VIEW(tv.tree_taglist), NULL); // Detach model from view
|
gtk_tree_view_set_model(GTK_TREE_VIEW(doc_list[idx].tag_tree), NULL); // Detach model from view
|
||||||
treeviews_init_tag_list();
|
|
||||||
|
treeviews_init_tag_list(idx);
|
||||||
for (tmp = (GList*)tags; tmp; tmp = g_list_next(tmp))
|
for (tmp = (GList*)tags; tmp; tmp = g_list_next(tmp))
|
||||||
{
|
{
|
||||||
switch (((GeanySymbol*)tmp->data)->type)
|
switch (((GeanySymbol*)tmp->data)->type)
|
||||||
@ -701,59 +715,70 @@ void utils_update_visible_tag_lists(gint idx)
|
|||||||
case tm_tag_prototype_t:
|
case tm_tag_prototype_t:
|
||||||
case tm_tag_function_t:
|
case tm_tag_function_t:
|
||||||
{
|
{
|
||||||
gtk_tree_store_append(tv.store_taglist, &iter, &(tv.tag_function));
|
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_function));
|
||||||
gtk_tree_store_set(tv.store_taglist, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case tm_tag_macro_t:
|
case tm_tag_macro_t:
|
||||||
case tm_tag_macro_with_arg_t:
|
case tm_tag_macro_with_arg_t:
|
||||||
{
|
{
|
||||||
gtk_tree_store_append(tv.store_taglist, &iter, &(tv.tag_macro));
|
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_macro));
|
||||||
gtk_tree_store_set(tv.store_taglist, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case tm_tag_member_t:
|
case tm_tag_member_t:
|
||||||
{
|
{
|
||||||
gtk_tree_store_append(tv.store_taglist, &iter, &(tv.tag_member));
|
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_member));
|
||||||
gtk_tree_store_set(tv.store_taglist, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case tm_tag_typedef_t:
|
case tm_tag_typedef_t:
|
||||||
case tm_tag_struct_t:
|
case tm_tag_struct_t:
|
||||||
{
|
{
|
||||||
gtk_tree_store_append(tv.store_taglist, &iter, &(tv.tag_struct));
|
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_struct));
|
||||||
gtk_tree_store_set(tv.store_taglist, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case tm_tag_variable_t:
|
case tm_tag_variable_t:
|
||||||
{
|
{
|
||||||
gtk_tree_store_append(tv.store_taglist, &iter, &(tv.tag_variable));
|
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_variable));
|
||||||
gtk_tree_store_set(tv.store_taglist, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case tm_tag_namespace_t:
|
case tm_tag_namespace_t:
|
||||||
{
|
{
|
||||||
gtk_tree_store_append(tv.store_taglist, &iter, &(tv.tag_namespace));
|
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_namespace));
|
||||||
gtk_tree_store_set(tv.store_taglist, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
gtk_tree_store_append(tv.store_taglist, &iter, &(tv.tag_other));
|
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_other));
|
||||||
gtk_tree_store_set(tv.store_taglist, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gtk_tree_view_set_model(GTK_TREE_VIEW(tv.tree_taglist), model); // Re-attach model to view
|
gtk_tree_view_set_model(GTK_TREE_VIEW(doc_list[idx].tag_tree), model); // Re-attach model to view
|
||||||
g_object_unref(model);
|
g_object_unref(model);
|
||||||
|
gtk_tree_view_expand_all(GTK_TREE_VIEW(doc_list[idx].tag_tree));
|
||||||
|
|
||||||
|
gtk_widget_set_sensitive(app->tagbar, TRUE);
|
||||||
|
gtk_container_add(GTK_CONTAINER(app->tagbar), doc_list[idx].tag_tree);
|
||||||
|
/// TODO why I have to do this here?
|
||||||
|
g_object_ref((gpointer)doc_list[idx].tag_tree);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{ // tags == NULL
|
||||||
gtk_tree_store_append(tv.store_taglist, &iter, NULL);
|
|
||||||
gtk_tree_store_set(tv.store_taglist, &iter, 0, _("No tags found"), -1);
|
|
||||||
gtk_widget_set_sensitive(app->tagbar, FALSE);
|
gtk_widget_set_sensitive(app->tagbar, FALSE);
|
||||||
|
gtk_container_add(GTK_CONTAINER(app->tagbar), app->default_tag_tree);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{ // update == FALSE
|
||||||
|
gtk_widget_set_sensitive(app->tagbar, TRUE);
|
||||||
|
gtk_container_add(GTK_CONTAINER(app->tagbar), doc_list[idx].tag_tree);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -971,7 +996,7 @@ gboolean utils_check_disk_status(gint idx, const gboolean force)
|
|||||||
{
|
{
|
||||||
if (force)
|
if (force)
|
||||||
{
|
{
|
||||||
document_open_file(idx, NULL, 0, FALSE);
|
document_open_file(idx, NULL, 0, doc_list[idx].readonly);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -982,7 +1007,7 @@ gboolean utils_check_disk_status(gint idx, const gboolean force)
|
|||||||
|
|
||||||
if (dialogs_show_reload_warning(buff))
|
if (dialogs_show_reload_warning(buff))
|
||||||
{
|
{
|
||||||
document_open_file(idx, NULL, 0, FALSE);
|
document_open_file(idx, NULL, 0, doc_list[idx].readonly);
|
||||||
doc_list[idx].last_check = t;
|
doc_list[idx].last_check = t;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@ -85,7 +85,7 @@ void utils_set_fullscreen(void);
|
|||||||
|
|
||||||
GtkFileFilter *utils_create_file_filter(filetype *ft);
|
GtkFileFilter *utils_create_file_filter(filetype *ft);
|
||||||
|
|
||||||
void utils_update_visible_tag_lists(gint idx);
|
void utils_update_tag_list(gint idx, gboolean update);
|
||||||
|
|
||||||
gchar *utils_convert_to_utf8(const gchar *buffer, gsize size, gchar **used_encoding);
|
gchar *utils_convert_to_utf8(const gchar *buffer, gsize size, gchar **used_encoding);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user