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

Reply via email to