Finch does not restore cursor + a fix

Dave Wood dave at unrealize.co.uk
Tue Jan 6 19:26:55 EST 2009


On (21:59 06/01/09), Dave Wood <dave at unrealize.co.uk> put forth the proposition:
>On (21:50 06/01/09), Dave Wood <dave at unrealize.co.uk> put forth the proposition:
>>On (21:35 06/01/09), Dave Wood <dave at unrealize.co.uk> put forth the proposition:
>>>On (21:21 06/01/09), Dave Wood <dave at unrealize.co.uk> put forth the proposition:
>>>>I noticed this problem a few days ago and also noticed with one of my own
>>>>programs. When exiting Finch the cursor is not restored to the termcap
>>>>setting.
>>>>
>>>>I use a flashing block cursor because my eyesight isn't so great but finch
>>>>always resets it to underline at exit. I managed to fix my own curses code
>>>>so I thought you might like to have a look:
>>>>
>>>>
>>>>int main ( void )
>>>>{
>>>>      // ncurses start
>>>>      initscr();
>>>>      cbreak();
>>>>      noecho();
>>>>      nonl();
>>>>      intrflush(stdscr, FALSE);
>>>>      keypad(stdscr, TRUE);
>>>>      clear();
>>>>      curs_set(0);
>>>>
>>>>      //main loop
>>>>	 <snip>
>>>>
>>>>      // exiting
>>>>      curs_set(1);
>>>>      cout<<cursor_visible; // < -- restore cursor to terminfo setting
>>>>      refresh();
>>>>      endwin();
>>>>      cout<<clear_screen; // <-- need this to restore colour
>>>>      return 0;
>>>>}

Hrm. Well I seem to have had a problem where my cnorm was being sent as
\E[?25h\E[?0c when I actually defined it as \E[?25h\E[?06c - i.e. the 6 was
getting lost somehow. No idea but finch works fine now. Thanks guys. Have a
great new year.

>>>>
>>>>I haven't tried this in the finch code yet. I will do so now and see if I 
>>>>have any luck.
>>>
>>>Well I probably should have looked at the finch source first. No idea what
>>>you are using instead of cout.
>>
>>And you will need to #include "term.h" in there for cursor_visible and
>>clear_screen
>
>in finch.c:
>
>#include "term.h"
>
>int main(int argc, char *argv[])
>  {
>      signal(SIGPIPE, SIG_IGN);
>
>      g_thread_init(NULL);
>
>      g_set_prgname("Finch");
>  #if GLIB_CHECK_VERSION(2,2,0)
>      g_set_application_name(_("Finch"));
>  #endif
>
>      if (gnt_start(&argc, &argv)) {
>          gnt_main();
>
>  #ifdef STANDALONE
>          purple_core_quit();
>  #endif
>      printf(cursor_visible); // <-- this is all you need by the look of it
>      }
>      return 0;
>  }
>
>
>>
>>>
>>>>
>>>>Cheers
>>>>
>>>>-- 
>>>>Cahn's Axiom:
>>>>	When all else fails, read the instructions.
>>>>
>>>>_______________________________________________
>>>>Support mailing list
>>>>Support at pidgin.im
>>>>http://pidgin.im/cgi-bin/mailman/listinfo/support
>>>
>>>-- 
>>>All of the true things I am about to tell you are shameless lies.
>>>		-- The Book of Bokonon / Kurt Vonnegut Jr.
>>>
>>>_______________________________________________
>>>Support mailing list
>>>Support at pidgin.im
>>>http://pidgin.im/cgi-bin/mailman/listinfo/support
>>
>>-- 
>>Finagle's fourth Law:
>>	Once a job is fouled up, anything done to improve it only makes
>>it worse.
>>
>>_______________________________________________
>>Support mailing list
>>Support at pidgin.im
>>http://pidgin.im/cgi-bin/mailman/listinfo/support
>
>-- 
>"I can resist anything but temptation."
>
>_______________________________________________
>Support mailing list
>Support at pidgin.im
>http://pidgin.im/cgi-bin/mailman/listinfo/support

-- 
Why did the Lord give us so much quickness of movement unless it was to
avoid responsibility with?




More information about the Support mailing list