ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/command.C
(Generate patch)

Comparing rxvt-unicode/src/command.C (file contents):
Revision 1.529 by sf-exg, Sun Dec 30 15:05:19 2012 UTC vs.
Revision 1.534 by sf-exg, Tue Mar 26 14:16:46 2013 UTC

1472 bool moved = false; 1472 bool moved = false;
1473#ifdef HAVE_BG_PIXMAP 1473#ifdef HAVE_BG_PIXMAP
1474 if (bg_window_position_sensitive ()) 1474 if (bg_window_position_sensitive ())
1475 { 1475 {
1476 want_position_change = true; 1476 want_position_change = true;
1477 if (!(bg_flags & BG_IS_VALID)) 1477 if (bg_img == 0)
1478 moved = true; 1478 moved = true;
1479 } 1479 }
1480#endif 1480#endif
1481 1481
1482 if (want_position_change) 1482 if (want_position_change)
1536 // defer bg image updates if the window is not mapped. The 1536 // defer bg image updates if the window is not mapped. The
1537 // short delay is to optimize for multiple ConfigureNotify 1537 // short delay is to optimize for multiple ConfigureNotify
1538 // events at startup when the window manager reparents the 1538 // events at startup when the window manager reparents the
1539 // window, so as to perform the computation after we have 1539 // window, so as to perform the computation after we have
1540 // received all of them. 1540 // received all of them.
1541 if (!(bg_flags & BG_IS_VALID)) 1541 if (bg_img == 0)
1542 update_background_ev.start (0.025); 1542 update_background_ev.start (0.025);
1543#endif 1543#endif
1544 mapped = 1; 1544 mapped = 1;
1545#ifdef TEXT_BLINK 1545#ifdef TEXT_BLINK
1546 text_blink_ev.start (); 1546 text_blink_ev.start ();
1854 */ 1854 */
1855 if (ev.xproperty.atom == xa[XA_XROOTPMAP_ID] 1855 if (ev.xproperty.atom == xa[XA_XROOTPMAP_ID]
1856 || ev.xproperty.atom == xa[XA_ESETROOT_PMAP_ID]) 1856 || ev.xproperty.atom == xa[XA_ESETROOT_PMAP_ID])
1857 { 1857 {
1858#if BG_IMAGE_FROM_ROOT 1858#if BG_IMAGE_FROM_ROOT
1859 bg_set_root_pixmap (); 1859 if (option (Opt_transparent))
1860 {
1861 rxvt_img::new_from_root (this)->replace (root_img);
1860 update_background (); 1862 update_background ();
1863 }
1861#endif 1864#endif
1862#if ENABLE_PERL
1863 HOOK_INVOKE ((this, HOOK_ROOTPMAP_CHANGE, DT_END)); 1865 HOOK_INVOKE ((this, HOOK_ROOTPMAP_CHANGE, DT_END));
1864#endif
1865 } 1866 }
1866 1867
1867 break; 1868 break;
1868 } 1869 }
1869 1870
2798 }; 2799 };
2799 2800
2800void ecb_hot 2801void ecb_hot
2801rxvt_term::process_csi_seq () 2802rxvt_term::process_csi_seq ()
2802{ 2803{
2803 unicode_t ch, priv, i; 2804 unicode_t ch, priv, prev_ch, i;
2804 unsigned int nargs, p; 2805 unsigned int nargs, p;
2805 int n, ndef; 2806 int n, ndef;
2806 int arg[ESC_ARGS] = { }; 2807 int arg[ESC_ARGS] = { };
2807 2808
2808 nargs = 0; 2809 nargs = 0;
2814 /* '<' '=' '>' '?' '!' */ 2815 /* '<' '=' '>' '?' '!' */
2815 priv = ch; 2816 priv = ch;
2816 ch = cmd_getc (); 2817 ch = cmd_getc ();
2817 } 2818 }
2818 2819
2820 prev_ch = 0;
2819 /* read any numerical arguments */ 2821 /* read any numerical arguments */
2820 for (n = -1; ch < CSI_ICH; ) 2822 for (n = -1; ch < CSI_ICH; )
2821 { 2823 {
2822 if (isdigit (ch)) 2824 if (isdigit (ch))
2823 { 2825 {
2833 n = -1; 2835 n = -1;
2834 } 2836 }
2835 else if (IS_CONTROL (ch)) 2837 else if (IS_CONTROL (ch))
2836 process_nonprinting (ch); 2838 process_nonprinting (ch);
2837 2839
2840 prev_ch = ch;
2838 ch = cmd_getc (); 2841 ch = cmd_getc ();
2839 } 2842 }
2840 2843
2841 if (ch > CSI_7F) 2844 if (ch > CSI_7F)
2842 return; 2845 return;
3074 case CSI_SM: /* 8.3.126: SET MODE */ 3077 case CSI_SM: /* 8.3.126: SET MODE */
3075 if (arg[0] == 4) 3078 if (arg[0] == 4)
3076 scr_insert_mode (1); 3079 scr_insert_mode (1);
3077 else if (arg[0] == 20) 3080 else if (arg[0] == 20)
3078 priv_modes |= PrivMode_LFNL; 3081 priv_modes |= PrivMode_LFNL;
3082 break;
3083
3084 case CSI_71: // DESCUSR: set cursor style
3085 if (prev_ch == ' ')
3086 set_cursor_style (arg[0]);
3079 break; 3087 break;
3080 3088
3081 /* 3089 /*
3082 * PRIVATE USE beyond this point. All CSI_7? sequences here 3090 * PRIVATE USE beyond this point. All CSI_7? sequences here
3083 */ 3091 */
3990 break; 3998 break;
3991#endif 3999#endif
3992 } 4000 }
3993 } 4001 }
3994} 4002}
4003
4004void
4005rxvt_term::set_cursor_style (int style)
4006{
4007 if (!IN_RANGE_INC (style, 0, 4))
4008 return;
4009
4010 set_option (Opt_cursorUnderline, style >= 3);
4011
4012#ifdef CURSOR_BLINK
4013 set_option (Opt_cursorBlink, !style || (style & 1));
4014 cursor_blink_reset ();
4015#endif
4016
4017 want_refresh = 1;
4018}
3995/*}}} */ 4019/*}}} */
3996 4020
3997/* ------------------------------------------------------------------------- */ 4021/* ------------------------------------------------------------------------- */
3998 4022
3999/* 4023/*

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines