From f97059c69925b78f7f7e291b86fa2089f58291a6 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Fri, 26 Jul 2019 09:06:10 +0000 Subject: Further experiment: Bring scalefactor back to 120 (as it was for win32) --- doc/event.n | 4 ++-- generic/tkBind.c | 4 ++-- generic/tkEvent.c | 2 +- generic/tkPointer.c | 3 +-- library/demos/cscroll.tcl | 8 ++++---- library/listbox.tcl | 8 ++++---- library/scrlbar.tcl | 8 ++++---- library/text.tcl | 8 ++++---- library/ttk/utils.tcl | 35 ++++++++++------------------------- macosx/tkMacOSXMouseEvent.c | 14 ++++++++------ tests/scrollbar.test | 4 ++-- win/tkWinX.c | 4 ++-- 12 files changed, 44 insertions(+), 58 deletions(-) diff --git a/doc/event.n b/doc/event.n index be42fa5..5109794 100644 --- a/doc/event.n +++ b/doc/event.n @@ -119,8 +119,8 @@ for the event. Only valid for virtual events. Corresponds to the for the \fBMouseWheel\fR event. The \fIdelta\fR refers to the direction and magnitude the mouse wheel was rotated. Note the value is not a screen distance but are units of motion in the mouse wheel. -Typically these values are multiples of 40. For example, 40 should -scroll the text widget up 4 lines and \-80 would scroll the text +Typically these values are multiples of 120. For example, 120 should +scroll the text widget up 4 lines and \-240 would scroll the text widget down 8 lines. Of course, other widgets may define different behaviors for mouse wheel motion. This field corresponds to the \fB%D\fR substitution for binding scripts. diff --git a/generic/tkBind.c b/generic/tkBind.c index 03e4a2b..45e07be 100644 --- a/generic/tkBind.c +++ b/generic/tkBind.c @@ -1996,7 +1996,7 @@ ExpandPercents( if (flags & BUTTON) { number = eventPtr->xbutton.button; if (number >= Button8) { - number += (Button4 - Button8); + number -= (Button8 - Button4); } goto doNumber; } @@ -4239,7 +4239,7 @@ GetPatternObj( } else { int button = patPtr->detail.button; if (button >= Button8) { - button += (Button4 - Button8); + button -= (Button8 - Button4); } Tcl_AppendPrintfToObj(patternObj, "%d", button); } diff --git a/generic/tkEvent.c b/generic/tkEvent.c index dd77c2b..39d9d4b 100644 --- a/generic/tkEvent.c +++ b/generic/tkEvent.c @@ -594,7 +594,7 @@ UpdateButtonEventState( #if defined(_WIN32) || defined(MAC_OSX_TK) eventPtr->xkey.nbytes = 0; #endif - eventPtr->xkey.keycode = (eventPtr->xbutton.button & 1) ? 40 : -40; + eventPtr->xkey.keycode = (eventPtr->xbutton.button & 1) ? 120 : -120; if (eventPtr->xkey.keycode > Button5) { eventPtr->xkey.state |= ShiftMask; } diff --git a/generic/tkPointer.c b/generic/tkPointer.c index af5e311..57680c3 100644 --- a/generic/tkPointer.c +++ b/generic/tkPointer.c @@ -226,8 +226,7 @@ Tk_UpdatePointer( XPoint pos; XEvent event; int changes = (state ^ tsdPtr->lastState) & ALL_BUTTONS; - int type, b; - int mask; + int type, b, mask; pos.x = x; pos.y = y; diff --git a/library/demos/cscroll.tcl b/library/demos/cscroll.tcl index 24d5f89..c709668 100644 --- a/library/demos/cscroll.tcl +++ b/library/demos/cscroll.tcl @@ -59,16 +59,16 @@ $c bind all <1> "scrollButton $c" bind $c <2> "$c scan mark %x %y" bind $c "$c scan dragto %x %y" bind $c { - %W yview scroll [expr {-(%D / 40)}] units + %W yview scroll [expr {-((%D+60) / 120)}] units } bind $c { - %W yview scroll [expr {-(%D / 4)}] units + %W yview scroll [expr {-((%D+6) / 12)}] units } bind $c { - %W xview scroll [expr {-(%D / 40)}] units + %W xview scroll [expr {-((%D+60) / 120)}] units } bind $c { - %W xview scroll [expr {-(%D / 4)}] units + %W xview scroll [expr {-((%D+6) / 12)}] units } proc scrollEnter canvas { diff --git a/library/listbox.tcl b/library/listbox.tcl index fd10fe4..ffd7def 100644 --- a/library/listbox.tcl +++ b/library/listbox.tcl @@ -177,16 +177,16 @@ bind Listbox { } bind Listbox { - %W yview scroll [expr {-(%D / 40)}] units + %W yview scroll [expr {-((%D+60) / 120)}] units } bind Listbox { - %W yview scroll [expr {-(%D / 4)}] units + %W yview scroll [expr {-((%D+6) / 12)}] units } bind Listbox { - %W xview scroll [expr {-(%D / 40)}] units + %W xview scroll [expr {-((%D+60) / 120)}] units } bind Listbox { - %W xview scroll [expr {-(%D / 4)}] units + %W xview scroll [expr {-((%D+6) / 12)}] units } diff --git a/library/scrlbar.tcl b/library/scrlbar.tcl index 93ded56..dae11ae 100644 --- a/library/scrlbar.tcl +++ b/library/scrlbar.tcl @@ -130,16 +130,16 @@ bind Scrollbar <> { } bind Scrollbar { - tk::ScrollByUnits %W v [expr {-(%D / 40)}] + tk::ScrollByUnits %W v [expr {-((%D+60) / 120)}] } bind Scrollbar { - tk::ScrollByUnits %W v [expr {-(%D / 4)}] + tk::ScrollByUnits %W v [expr {-((%D+6) / 12)}] } bind Scrollbar { - tk::ScrollByUnits %W h [expr {-(%D / 40)}] + tk::ScrollByUnits %W h [expr {-((%D+60) / 120)}] } bind Scrollbar { - tk::ScrollByUnits %W h [expr {-(%D / 4)}] + tk::ScrollByUnits %W h [expr {-((%D+6) / 12)}] } # tk::ScrollButtonDown -- diff --git a/library/text.tcl b/library/text.tcl index 9d635de..72da6ff 100644 --- a/library/text.tcl +++ b/library/text.tcl @@ -428,16 +428,16 @@ bind Text { set ::tk::Priv(prevPos) {} bind Text { - %W yview scroll [expr {-(%D)}] pixels + %W yview scroll [expr {-((%D+1)/3)}] pixels } bind Text { - %W yview scroll [expr {-10 * (%D)}] pixels + %W yview scroll [expr {-4 * (%D)}] pixels } bind Text { - %W xview scroll [expr {-(%D)}] pixels + %W xview scroll [expr {-((%D+1)/3)}] pixels } bind Text { - %W xview scroll [expr {-10 * (%D)}] pixels + %W xview scroll [expr {-4 * (%D)}] pixels } # ::tk::TextClosestGap -- diff --git a/library/ttk/utils.tcl b/library/ttk/utils.tcl index 140e061..ad36927 100644 --- a/library/ttk/utils.tcl +++ b/library/ttk/utils.tcl @@ -285,7 +285,8 @@ proc ttk::copyBindings {from to} { # proc ttk::bindMouseWheel {bindtag callback} { - bind $bindtag [append callback { [expr {-(%D/40)}]}] + bind $bindtag [append callback { [expr {-((%D+60)/120)}]}] + bind $bindtag [append callback { [expr {-((%D+6)/12)}]}] } ## Mousewheel bindings for standard scrollable widgets. @@ -296,29 +297,13 @@ proc ttk::bindMouseWheel {bindtag callback} { # standard scrollbar protocol. # -switch -- [tk windowingsystem] { - x11 { - bind TtkScrollable { %W yview scroll -5 units } - bind TtkScrollable { %W yview scroll 5 units } - bind TtkScrollable { %W xview scroll -5 units } - bind TtkScrollable { %W xview scroll 5 units } - } - win32 { - bind TtkScrollable \ - { %W yview scroll [expr {-(%D/120)}] units } - bind TtkScrollable \ - { %W xview scroll [expr {-(%D/120)}] units } - } - aqua { - bind TtkScrollable \ - { %W yview scroll [expr {-(%D)}] units } - bind TtkScrollable \ - { %W xview scroll [expr {-(%D)}] units } - bind TtkScrollable \ - { %W yview scroll [expr {-10*(%D)}] units } - bind TtkScrollable \ - { %W xview scroll [expr {-10*(%D)}] units } - } -} +bind TtkScrollable \ +{ %W yview scroll [expr {-((%D+60)/120)}] units } +bind TtkScrollable \ +{ %W yview scroll [expr {-((%D+6)/12)}] units } +bind TtkScrollable \ +{ %W xview scroll [expr {-((%D+60)/120)}] units } +bind TtkScrollable \ +{ %W xview scroll [expr {-((%D+6)/12)}] units } #*EOF* diff --git a/macosx/tkMacOSXMouseEvent.c b/macosx/tkMacOSXMouseEvent.c index ed67bae..92d2daf 100644 --- a/macosx/tkMacOSXMouseEvent.c +++ b/macosx/tkMacOSXMouseEvent.c @@ -267,21 +267,23 @@ enum { xEvent.xany.display = Tk_Display(tkwin); xEvent.xany.window = Tk_WindowId(tkwin); - delta = [theEvent deltaY] * 40; + delta = [theEvent deltaY] * 120; if (delta != 0.0) { - coarseDelta = (delta > -40.0 && delta < 40.0) ? - (signbit(delta) ? -40 : 40 : lround(delta); + coarseDelta = (delta > -120.0 && delta < 120.0) ? + (signbit(delta) ? -120 : 120 : lround(delta); xEvent.xbutton.state = state; xEvent.xkey.keycode = coarseDelta; + xEvent.xkey.nbytes = 0; xEvent.xany.serial = LastKnownRequestProcessed(Tk_Display(tkwin)); Tk_QueueWindowEvent(&xEvent, TCL_QUEUE_TAIL); } - delta = [theEvent deltaX] * 40; + delta = [theEvent deltaX] * 120; if (delta != 0.0) { - coarseDelta = (delta > -40.0 && delta < 40.0) ? - (signbit(delta) ? -40 : 40) : lround(delta); + coarseDelta = (delta > -120.0 && delta < 120.0) ? + (signbit(delta) ? -120 : 120) : lround(delta); xEvent.xbutton.state = state | ShiftMask; xEvent.xkey.keycode = coarseDelta; + xEvent.xkey.nbytes = 0; xEvent.xany.serial = LastKnownRequestProcessed(Tk_Display(tkwin)); Tk_QueueWindowEvent(&xEvent, TCL_QUEUE_TAIL); } diff --git a/tests/scrollbar.test b/tests/scrollbar.test index d235656..e6e6bdd 100644 --- a/tests/scrollbar.test +++ b/tests/scrollbar.test @@ -693,7 +693,7 @@ test scrollbar-10.1 { event on scrollbar} -setup { pack [scrollbar .s -command {.t yview}] -fill y -expand 1 -side left update focus -force .s - event generate .s -delta -150 + event generate .s -delta -120 after 200 {set eventprocessed 1} ; vwait eventprocessed .t index @0,0 } -cleanup { @@ -708,7 +708,7 @@ test scrollbar-10.2 { event on scrollbar} -setup { pack [scrollbar .s -command {.t xview} -orient horizontal] -fill x -expand 1 -side top update focus -force .s - event generate .s -delta -150 + event generate .s -delta -120 after 200 {set eventprocessed 1} ; vwait eventprocessed .t index @0,0 } -cleanup { diff --git a/win/tkWinX.c b/win/tkWinX.c index 8127eef..9d474ac 100644 --- a/win/tkWinX.c +++ b/win/tkWinX.c @@ -1142,7 +1142,7 @@ GenerateXEvent( event.type = MouseWheelEvent; event.xany.send_event = -1; event.xkey.nbytes = 0; - event.xkey.keycode = tsdPtr->vWheelAcc / WHEEL_DELTA * WHEEL_DELTA / 3; + event.xkey.keycode = tsdPtr->vWheelAcc / WHEEL_DELTA * WHEEL_DELTA; tsdPtr->vWheelAcc = tsdPtr->vWheelAcc % WHEEL_DELTA; break; } @@ -1175,7 +1175,7 @@ GenerateXEvent( event.xany.send_event = -1; event.xkey.nbytes = 0; event.xkey.state |= ShiftMask; - event.xkey.keycode = tsdPtr->hWheelAcc / WHEEL_DELTA * WHEEL_DELTA / 3; + event.xkey.keycode = tsdPtr->hWheelAcc / WHEEL_DELTA * WHEEL_DELTA; tsdPtr->hWheelAcc = tsdPtr->hWheelAcc % WHEEL_DELTA; break; } -- cgit v0.12