Revision: 3792 http://geany.svn.sourceforge.net/geany/?rev=3792&view=rev Author: ntrel Date: 2009-05-13 15:37:28 +0000 (Wed, 13 May 2009)
Log Message: ----------- Implement Most-Recently-Used document switching when pressing Ctrl-Tab keybinding. (It's probably not perfect, but works OK).
Modified Paths: -------------- trunk/ChangeLog trunk/TODO trunk/src/keybindings.c
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2009-05-13 15:21:54 UTC (rev 3791) +++ trunk/ChangeLog 2009-05-13 15:37:28 UTC (rev 3792) @@ -2,6 +2,9 @@
* src/keyfile.c: Remember scribble cursor position. + * src/keybindings.c, TODO: + Implement Most-Recently-Used document switching when pressing + Ctrl-Tab keybinding. (It's probably not perfect, but works OK).
2009-05-12 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
Modified: trunk/TODO =================================================================== --- trunk/TODO 2009-05-13 15:21:54 UTC (rev 3791) +++ trunk/TODO 2009-05-13 15:37:28 UTC (rev 3792) @@ -12,7 +12,6 @@ programming languages o configurable filetype and project make commands (e.g. using bud for D) - o MRU documents switching o (support for adding plugin filetypes - SCI_LOADLEXERLIBRARY?) o (selectable menu of arguments to use for Make, from Make Custom) o (DBUS)
Modified: trunk/src/keybindings.c =================================================================== --- trunk/src/keybindings.c 2009-05-13 15:21:54 UTC (rev 3791) +++ trunk/src/keybindings.c 2009-05-13 15:37:28 UTC (rev 3792) @@ -63,6 +63,7 @@
const gsize MAX_MRU_DOCS = 20; static GQueue *mru_docs = NULL; +static guint mru_pos = 0;
static gboolean switch_dialog_cancelled = TRUE; static GtkWidget *switch_dialog = NULL; @@ -1499,6 +1500,8 @@
if (switch_dialog && GTK_WIDGET_VISIBLE(switch_dialog)) gtk_widget_hide(switch_dialog); + + mru_pos = 0; } return FALSE; } @@ -1552,7 +1555,10 @@ static gboolean on_switch_timeout(G_GNUC_UNUSED gpointer data) { if (switch_dialog_cancelled) + { return FALSE; + } + mru_pos += 2;
if (! switch_dialog) switch_dialog = create_switch_dialog(); @@ -1566,10 +1572,14 @@
static void cb_func_switch_tablastused(G_GNUC_UNUSED guint key_id) { - /* TODO: MRU switching order */ - GeanyDocument *last_doc = g_queue_peek_head(mru_docs); + GeanyDocument *last_doc = g_queue_peek_nth(mru_docs, mru_pos);
if (! DOC_VALID(last_doc)) + { + mru_pos = 0; + last_doc = g_queue_peek_nth(mru_docs, mru_pos); + } + if (! DOC_VALID(last_doc)) return;
gtk_notebook_set_current_page(GTK_NOTEBOOK(main_widgets.notebook),
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.