This patch fix scroll when Shift-PageUp/Down were hit when perl/tabbed
was activated and the mouse pointer was outside the terminal window.
The author of this patch - Biga ([email protected])
--- rxvt-unicode-9.06/src/command.C 2009-08-31 18:15:29.000000000 +0400
+++ rxvt-unicode1/src/command.C 2009-08-31 18:41:23.000000000 +0400
@@ -492,64 +492,6 @@
return;
#endif
- if (saveLines)
- {
-#ifdef UNSHIFTED_SCROLLKEYS
- if (!ctrl && !meta)
-#else
- if (IS_SCROLL_MOD)
-#endif
- {
- int lnsppg;
-
-#ifdef PAGING_CONTEXT_LINES
- lnsppg = nrow - PAGING_CONTEXT_LINES;
-#else
- lnsppg = nrow * 4 / 5;
-#endif
- if (keysym == XK_Prior)
- {
- scr_page (UP, lnsppg);
- return;
- }
- else if (keysym == XK_Next)
- {
- scr_page (DN, lnsppg);
- return;
- }
- }
-#ifdef SCROLL_ON_UPDOWN_KEYS
- if (IS_SCROLL_MOD)
- {
- if (keysym == XK_Up)
- {
- scr_page (UP, 1);
- return;
- }
- else if (keysym == XK_Down)
- {
- scr_page (DN, 1);
- return;
- }
- }
-#endif
-#ifdef SCROLL_ON_HOMEEND_KEYS
- if (IS_SCROLL_MOD)
- {
- if (keysym == XK_Home)
- {
- scr_move_to (0, 1);
- return;
- }
- else if (keysym == XK_End)
- {
- scr_move_to (1, 1);
- return;
- }
- }
-#endif
- }
-
if (shft)
{
/* Shift + F1 - F10 generates F11 - F20 */
@@ -558,25 +500,6 @@
keysym += (XK_F11 - XK_F1);
shft = 0; /* turn off Shift */
}
- else if (!ctrl && !meta && (priv_modes & PrivMode_ShiftKeys))
- {
- switch (keysym)
- {
- /* normal XTerm key bindings */
- case XK_Insert: /* Shift+Insert = paste mouse selection */
- selection_request (ev.time);
- return;
-#if TODO
- /* rxvt extras */
- case XK_KP_Add: /* Shift+KP_Add = bigger font */
- change_font (FONT_UP);
- return;
- case XK_KP_Subtract: /* Shift+KP_Subtract = smaller font */
- change_font (FONT_DN);
- return;
-#endif
- }
- }
}
#if ENABLE_FRILLS || ISO_14755
@@ -814,7 +737,95 @@
if (HOOK_INVOKE ((this, HOOK_KEY_PRESS, DT_XEVENT, &ev, DT_INT, keysym, DT_STR_LEN, kbuf, len, DT_END)))
return;
+
+ if ( valid_keysym )
+ {
+ if (saveLines)
+ {
+#ifdef UNSHIFTED_SCROLLKEYS
+ if (!ctrl && !meta)
+#else
+ if (IS_SCROLL_MOD)
+#endif
+ {
+ int lnsppg;
+#ifdef PAGING_CONTEXT_LINES
+ lnsppg = nrow - PAGING_CONTEXT_LINES;
+#else
+ lnsppg = nrow * 4 / 5;
+#endif
+ if (keysym == XK_Prior)
+ {
+ scr_page (UP, lnsppg);
+ refresh_check();
+ return;
+ }
+ else if (keysym == XK_Next)
+ {
+ scr_page (DN, lnsppg);
+ refresh_check();
+ return;
+ }
+ }
+#ifdef SCROLL_ON_UPDOWN_KEYS
+ if (IS_SCROLL_MOD)
+ {
+ if (keysym == XK_Up)
+ {
+ scr_page (UP, 1);
+ refresh_check();
+ return;
+ }
+ else if (keysym == XK_Down)
+ {
+ scr_page (DN, 1);
+ refresh_check();
+ return;
+ }
+ }
+#endif
+#ifdef SCROLL_ON_HOMEEND_KEYS
+ if (IS_SCROLL_MOD)
+ {
+ if (keysym == XK_Home)
+ {
+ scr_move_to (0, 1);
+ refresh_check();
+ return;
+ }
+ else if (keysym == XK_End)
+ {
+ scr_move_to (1, 1);
+ refresh_check();
+ return;
+ }
+ }
+#endif
+ }
+ if (shft) {
+ if (!ctrl && !meta && (priv_modes & PrivMode_ShiftKeys))
+ {
+ switch (keysym)
+ {
+ /* normal XTerm key bindings */
+ case XK_Insert: /* Shift+Insert = paste mouse selection */
+ selection_request (ev.time);
+ return;
+#if TODO
+ /* rxvt extras */
+ case XK_KP_Add: /* Shift+KP_Add = bigger font */
+ change_font (FONT_UP);
+ return;
+ case XK_KP_Subtract: /* Shift+KP_Subtract = smaller font */
+ change_font (FONT_DN);
+ return;
+#endif
+ }
+ }
+ }
+ }
+
if (len <= 0)
return; /* not mapped */
_______________________________________________
rxvt-unicode mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/rxvt-unicode