This should solve it

--- src/command.C.orig    2012-04-12 19:24:44.669230581 -0400
+++ src/command.C    2012-04-12 19:43:08.592004444 -0400
@@ -3581,7 +3581,10 @@

   if (mode == 's')
     {
-      SavedModes |= (priv_modes & bit);
+      if(priv_modes & bit)
+        SavedModes |= bit;
+      else
+        SavedModes &= ~bit;
       return -1;
     }
   else


Sent: Thu Apr 12 2012 19:13:27 GMT-0400 (EDT)
From: Patrick Hemmer <[email protected]>
To: [email protected]
Subject: BUG: DEC private mode saving does not save low state after saving high state
Whenever you use the escape code "ESC [ ? Pm s" to save a high state, if you later change the state to low and save it again, then restore it, the high state is restored, not the low state.

Duplicate:
echo -e '\e[?9h' # enable high state for mouse reporting
echo -e '\e[?9s' # save state
echo -e '\e[?9l' # disable mouse reporting
echo -e '\e[?9s' # save state
echo -e '\e[?9r' # restore state
(click somewhere and watch escape codes get sent to the terminal)

The bug is on line 3584 of command.C . Its saving by doing an |= operation. Since the previously saved state is high, when you 'or' it with a low bit, the high bit remains.


_______________________________________________
rxvt-unicode mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/rxvt-unicode
_______________________________________________
rxvt-unicode mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/rxvt-unicode

Reply via email to