--- rxvt-unicode/src/command.C 2008/01/26 12:12:37 1.398 +++ rxvt-unicode/src/command.C 2008/01/29 13:57:23 1.401 @@ -1555,7 +1555,7 @@ if (scrollBar.state && ev.xany.window == scrollBar.win) { - scrollBar.setIdle (); + scrollBar.state = STATE_IDLE; scrollbar_show (0); } } @@ -1653,7 +1653,7 @@ #endif } } - else if (scrollbar_isMotion () && ev.xany.window == scrollBar.win) + else if (scrollBar.state == STATE_MOTION && ev.xany.window == scrollBar.win) { while (XCheckTypedWindowEvent (dpy, scrollBar.win, MotionNotify, &ev)) @@ -1949,7 +1949,14 @@ */ if (scrollBar.state && ev.window == scrollBar.win) { - scrollBar.setIdle (); + int upordown = 0; + + if (scrollBar.upButton (ev.y)) + upordown = -1; /* up */ + else if (scrollBar.dnButton (ev.y)) + upordown = 1; /* down */ + + scrollBar.state = STATE_IDLE; /* * Rxvt-style scrollbar: * move up if mouse is above slider @@ -1968,15 +1975,9 @@ * arrow buttons - send up/down * click on scrollbar - send pageup/down */ - if ((scrollBar.style == R_SB_NEXT - && scrollbarnext_upButton (ev.y)) - || (scrollBar.style == R_SB_RXVT - && scrollbarrxvt_upButton (ev.y))) + if (upordown < 0) tt_printf ("\033[A"); - else if ((scrollBar.style == R_SB_NEXT - && scrollbarnext_dnButton (ev.y)) - || (scrollBar.style == R_SB_RXVT - && scrollbarrxvt_dnButton (ev.y))) + else if (upordown > 0) tt_printf ("\033[B"); else switch (ev.button) @@ -1996,23 +1997,6 @@ #endif /* NO_SCROLLBAR_REPORT */ { - char upordown = 0; - - if (scrollBar.style == R_SB_NEXT) - { - if (scrollbarnext_upButton (ev.y)) - upordown = -1; /* up */ - else if (scrollbarnext_dnButton (ev.y)) - upordown = 1; /* down */ - } - else if (scrollBar.style == R_SB_RXVT) - { - if (scrollbarrxvt_upButton (ev.y)) - upordown = -1; /* up */ - else if (scrollbarrxvt_dnButton (ev.y)) - upordown = 1; /* down */ - } - if (upordown) { #ifndef NO_SCROLLBAR_BUTTON_CONTINUAL_SCROLLING @@ -2022,9 +2006,9 @@ if (scr_page (upordown < 0 ? UP : DN, 1)) { if (upordown < 0) - scrollBar.setUp (); + scrollBar.state = STATE_UP; else - scrollBar.setDn (); + scrollBar.state = STATE_DOWN; } } else @@ -2049,7 +2033,7 @@ || scrollbar_below_slider (ev.y)) scr_move_to (scrollbar_position (ev.y) - csrO, scrollbar_size ()); - scrollBar.setMotion (); + scrollBar.state = STATE_MOTION; break; case Button1: @@ -2073,7 +2057,7 @@ scr_page (DN, nrow / 4); # endif else - scrollBar.setMotion (); + scrollBar.state = STATE_MOTION; } else { @@ -2100,9 +2084,9 @@ if (!bypass_keystate) reportmode = !! (priv_modes & PrivMode_mouse_report); - if (scrollbar_isUpDn ()) + if (scrollBar.state == STATE_UP || scrollBar.state == STATE_DOWN) { - scrollBar.setIdle (); + scrollBar.state = STATE_IDLE; scrollbar_show (0); }