diff options
Diffstat (limited to 'secondaryWheel.patch')
-rw-r--r-- | secondaryWheel.patch | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/secondaryWheel.patch b/secondaryWheel.patch new file mode 100644 index 000000000000..b588b53527fa --- /dev/null +++ b/secondaryWheel.patch @@ -0,0 +1,114 @@ +diff -r 4399ffb6a87c doc/rxvt.1.pod +--- a/doc/rxvt.1.pod Sat Jan 21 13:57:22 2012 +0100 ++++ b/doc/rxvt.1.pod Sat Jan 21 14:03:04 2012 +0100 +@@ -456,6 +456,11 @@ + Turn on/off secondary screen scroll (default enabled); resource + B<secondaryScroll>. + ++=item B<-ssw>|B<+ssw> ++ ++Turn on/off secondary screen wheel support (default disabled); resource ++B<secondaryWheel>. ++ + =item B<-hold>|B<+hold> + + Turn on/off hold window after exit support. If enabled, @@RXVT_NAME@@ +@@ -1168,6 +1173,13 @@ + scrollback buffer and, when secondaryScreen is off, switching + to/from the secondary screen will instead scroll the screen up. + ++=item B<secondaryWheel:> I<boolean> ++ ++Turn on/off secondary wheel (default disabled). If enabled, when on ++secondary screen, using the mouse wheel will not scroll in the buffer ++but instead send 3 "fake" keystrokes (Up/Down arrow) to the running ++application (allows e.g. natural scrolling in B<man>, B<less>, etc). ++ + =item B<hold>: I<boolean> + + Turn on/off hold window after exit support. If enabled, @@RXVT_NAME@@ +diff -r 4399ffb6a87c src/command.C +--- a/src/command.C Sat Jan 21 13:57:22 2012 +0100 ++++ b/src/command.C Sat Jan 21 14:03:04 2012 +0100 +@@ -2197,10 +2197,46 @@ + } + else + # endif ++#ifndef NO_SECONDARY_SCREEN + { +- scr_page (v, i); +- scrollBar.show (1); ++ /* on SECONDARY screen, we send "fake" UP/DOWN keys instead ++ * (this allows to scroll within man, less, etc) */ ++ if (option (Opt_secondaryWheel) && current_screen != PRIMARY) ++ { ++ XKeyEvent event; ++ event.display = ev.display; ++ event.window = ev.window; ++ event.root = ev.root; ++ event.subwindow = ev.subwindow; ++ event.time = ev.time; ++ event.x = ev.x; ++ event.y = ev.y; ++ event.x_root = ev.x_root; ++ event.y_root = ev.y_root; ++ event.same_screen = ev.same_screen; ++ event.state = 0; ++ event.keycode = XKeysymToKeycode(ev.display, ++ (v == UP) ? XK_Up : XK_Down); ++ for (i = 0; i < 3; ++i) ++ { ++ event.type = KeyPress; ++ XSendEvent (event.display, event.window, TRUE, ++ KeyPressMask, (XEvent *) &event); ++ event.type = KeyRelease; ++ XSendEvent (event.display, event.window, TRUE, ++ KeyPressMask, (XEvent *) &event); ++ } ++ } ++ /* on PRIMARY screen, we scroll in the buffer */ ++ else ++#endif ++ { ++ scr_page (v, i); ++ scrollBar.show (1); ++ } ++#ifndef NO_SECONDARY_SCREEN + } ++#endif + } + break; + #endif +diff -r 4399ffb6a87c src/optinc.h +--- a/src/optinc.h Sat Jan 21 13:57:22 2012 +0100 ++++ b/src/optinc.h Sat Jan 21 14:03:04 2012 +0100 +@@ -26,6 +26,7 @@ + def(cursorBlink) + def(secondaryScreen) + def(secondaryScroll) ++ def(secondaryWheel) + def(pastableTabs) + def(cursorUnderline) + #if ENABLE_FRILLS +diff -r 4399ffb6a87c src/rsinc.h +--- a/src/rsinc.h Sat Jan 21 13:57:22 2012 +0100 ++++ b/src/rsinc.h Sat Jan 21 14:03:04 2012 +0100 +@@ -102,6 +102,7 @@ + #ifndef NO_SECONDARY_SCREEN + def (secondaryScreen) + def (secondaryScroll) ++ def (secondaryWheel) + #endif + #ifdef OFF_FOCUS_FADING + def (fade) +diff -r 4399ffb6a87c src/xdefaults.C +--- a/src/xdefaults.C Sat Jan 21 13:57:22 2012 +0100 ++++ b/src/xdefaults.C Sat Jan 21 14:03:04 2012 +0100 +@@ -261,6 +261,7 @@ + #ifndef NO_SECONDARY_SCREEN + BOOL (Rs_secondaryScreen, "secondaryScreen", "ssc", Opt_secondaryScreen, 0, "enable secondary screen"), + BOOL (Rs_secondaryScroll, "secondaryScroll", "ssr", Opt_secondaryScroll, 0, "enable secondary screen scroll"), ++ BOOL (Rs_secondaryWheel, "secondaryWheel", "ssw", Opt_secondaryWheel, 0, "enable secondary screen wheel"), + #endif + #if ENABLE_PERL + RSTRG (Rs_perl_lib, "perl-lib", "string"), //, "colon-separated directories with extension scripts"),TODO |