From da7eea23c7060f609c8636de6b0d64f13d7c2674 Mon Sep 17 00:00:00 2001 From: mitchell <70453897+667e-11@users.noreply.github.com> Date: Thu, 5 Feb 2009 00:29:22 -0500 Subject: Respond to GtkComboBoxEntry's "changed" event with PM entry activation. Since every keypress causes "changed" to fire, the file browser should only populate the PM view if the current filepath is a valid directory. --- core/ext/pm/file_browser.lua | 15 +++++++++------ src/textadept.c | 11 +++++++++++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/core/ext/pm/file_browser.lua b/core/ext/pm/file_browser.lua index ad70f75b..8aa6cf96 100644 --- a/core/ext/pm/file_browser.lua +++ b/core/ext/pm/file_browser.lua @@ -24,12 +24,15 @@ end function get_contents_for(full_path) local dir = {} local dirpath = table.concat(full_path, '/') - for name in lfs.dir(dirpath) do - if not name:find('^%.') then - dir[name] = { text = name } - if lfs.attributes(dirpath..'/'..name, 'mode') == 'directory' then - dir[name].parent = true - dir[name].pixbuf = 'gtk-directory' + local path = lfs.attributes(dirpath) + if path and path.mode == 'directory' then + for name in lfs.dir(dirpath) do + if not name:find('^%.') then + dir[name] = { text = name } + if lfs.attributes(dirpath..'/'..name, 'mode') == 'directory' then + dir[name].parent = true + dir[name].pixbuf = 'gtk-directory' + end end end end diff --git a/src/textadept.c b/src/textadept.c index 9ad44010..cd823e86 100644 --- a/src/textadept.c +++ b/src/textadept.c @@ -38,6 +38,7 @@ static int pm_search_equal_func(GtkTreeModel *model, int col, const char *key, static int pm_sort_iter_compare_func(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer); static void pm_entry_activated(GtkWidget *widget, gpointer); +static void pm_entry_changed(GtkComboBoxEntry *widget, gpointer); static gbool pm_keypress(GtkWidget *, GdkEventKey *event, gpointer); static void pm_row_expanded(GtkTreeView *, GtkTreeIter *iter, GtkTreePath *path, gpointer); @@ -625,6 +626,7 @@ GtkWidget *pm_create_ui() { gtk_box_pack_start(GTK_BOX(pm_container), scrolled, TRUE, TRUE, 0); signal(pm_entry, "activate", pm_entry_activated); + signal(pm_combo, "changed", pm_entry_changed); signal(pm_entry, "key_press_event", pm_keypress); signal(pm_view, "key_press_event", pm_keypress); signal(pm_view, "row_expanded", pm_row_expanded); @@ -774,6 +776,15 @@ static void pm_entry_activated(GtkWidget *widget, gpointer) { if (l_pm_get_contents_for(entry_text, false)) l_pm_populate(NULL); } +/** + * Signal for a change of the text in the Project Manager entry. + * Calls pm_entry_activated to populate the treeview. + * @see pm_entry_activated + */ +static void pm_entry_changed(GtkComboBoxEntry *widget, gpointer) { + pm_entry_activated(gtk_bin_get_child(GTK_BIN(widget)), NULL); +} + /** * Signal for a Project Manager keypress. * Currently handled keypresses: -- cgit v1.2.3