Hi Bob, I have an issue with this patch (bisect showed me the path). Here is the scenario: Open terminology Open a file with vi Split your screen (the orientation doesnt matter) Come back to vi The arrow keys don't work anymore. To solve it, I have to ctrl-z vi and then run fg.
Thank you Daniel On Sun, 01 Mar 2015 08:20:44 -0800 Boris Faure <bill...@gmail.com> wrote: > billiob pushed a commit to branch master. > > http://git.enlightenment.org/apps/terminology.git/commit/?id=b4ba773e17027c160667cd5bd7c9dfaf541ff878 > > commit b4ba773e17027c160667cd5bd7c9dfaf541ff878 > Author: Boris Faure <bill...@gmail.com> > Date: Sun Mar 1 17:18:45 2015 +0100 > > fix CSI DECSET 1049. Should fix T725 > --- > src/bin/termpty.c | 3 --- > src/bin/termptyesc.c | 34 +++++++++++++++++++++------------- > 2 files changed, 21 insertions(+), 16 deletions(-) > > diff --git a/src/bin/termpty.c b/src/bin/termpty.c > index 1fef59f..f4271a9 100644 > --- a/src/bin/termpty.c > +++ b/src/bin/termpty.c > @@ -1101,7 +1101,6 @@ termpty_screen_swap(Termpty *ty) > { > Termcell *tmp_screen; > int tmp_circular_offset; > - int tmp_appcursor = ty->state.appcursor; > > tmp_screen = ty->screen; > ty->screen = ty->screen2; > @@ -1116,8 +1115,6 @@ termpty_screen_swap(Termpty *ty) > ty->circular_offset = ty->circular_offset2; > ty->circular_offset2 = tmp_circular_offset; > > - ty->state.appcursor = tmp_appcursor; > - > ty->altbuf = !ty->altbuf; > > if (ty->cb.cancel_sel.func) > diff --git a/src/bin/termptyesc.c b/src/bin/termptyesc.c > index 56cc215..8452d69 100644 > --- a/src/bin/termptyesc.c > +++ b/src/bin/termptyesc.c > @@ -110,6 +110,23 @@ _handle_cursor_control(Termpty *ty, const > Eina_Unicode *cc) } > > static void > +_switch_to_alternative_screen(Termpty *ty, int mode) > +{ > + DBG("switch to alternative screen, mode:%d", mode); > + if (ty->altbuf) > + { > + // if we are looking at alt buf now, > + // clear main buf before we swap it back > + // into the screen2 save (so save is > + // clear) > + _termpty_clear_all(ty); > + } > + // swap screen content now > + if (mode != ty->altbuf) > + termpty_screen_swap(ty); > +} > + > +static void > _handle_esc_csi_reset_mode(Termpty *ty, Eina_Unicode cc, > Eina_Unicode *b) { > int mode = 0, priv = 0, arg; > @@ -290,26 +307,17 @@ _handle_esc_csi_reset_mode(Termpty *ty, > Eina_Unicode cc, Eina_Unicode *b) DBG("Ignored screen mode %i", arg); > break; > case 1047: > - case 1049: > case 47: > - DBG("DDD: switch buf"); > - if (ty->altbuf) > - { > - // if we are looking at alt buf now, > - // clear main buf before we swap it back > - // into the screen2 save (so save is > - // clear) > - _termpty_clear_all(ty); > - } > - // swap screen content now > - if (mode != ty->altbuf) > - termpty_screen_swap(ty); > + _switch_to_alternative_screen(ty, mode); > break; > case 1048: > + case 1049: > if (mode) > _termpty_cursor_copy(&(ty->state), > &(ty->save)); else > _termpty_cursor_copy(&(ty->save), > &(ty->state)); > + if (arg == 1049) > + _switch_to_alternative_screen(ty, mode); > break; > case 2004: > ty->bracketed_paste = mode; > ------------------------------------------------------------------------------ Dive into the World of Parallel Programming The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel