From 39eae2e647dd7351e79db9a5152dcf1dfdb35847 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 14 Aug 2014 08:48:42 -0600 Subject: [PATCH] racket/gui: fix problems with canvas autoscroll --- pkgs/gui-pkgs/gui-lib/mred/private/wx/cocoa/canvas.rkt | 2 +- pkgs/gui-pkgs/gui-lib/mred/private/wx/common/canvas-mixin.rkt | 2 +- pkgs/gui-pkgs/gui-lib/mred/private/wx/gtk/canvas.rkt | 4 ++++ pkgs/gui-pkgs/gui-lib/mred/private/wx/win32/canvas.rkt | 3 +++ tmp1 | 2 ++ tmp2 | 2 ++ tmp3 | 2 ++ 7 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 tmp1 create mode 100644 tmp2 create mode 100644 tmp3 diff --git a/pkgs/gui-pkgs/gui-lib/mred/private/wx/cocoa/canvas.rkt b/pkgs/gui-pkgs/gui-lib/mred/private/wx/cocoa/canvas.rkt index f31c36e5b1..976d9f00a9 100644 --- a/pkgs/gui-pkgs/gui-lib/mred/private/wx/cocoa/canvas.rkt +++ b/pkgs/gui-pkgs/gui-lib/mred/private/wx/cocoa/canvas.rkt @@ -532,7 +532,7 @@ (fix-dc) (when (and (is-auto-scroll?) (not (is-panel?))) - (reset-auto-scroll 0 0)) + (reset-auto-scroll)) (on-size)) ;; this `on-size' method is for `editor-canvas%', only: diff --git a/pkgs/gui-pkgs/gui-lib/mred/private/wx/common/canvas-mixin.rkt b/pkgs/gui-pkgs/gui-lib/mred/private/wx/common/canvas-mixin.rkt index 2da4057df2..d604988cf4 100644 --- a/pkgs/gui-pkgs/gui-lib/mred/private/wx/common/canvas-mixin.rkt +++ b/pkgs/gui-pkgs/gui-lib/mred/private/wx/common/canvas-mixin.rkt @@ -59,7 +59,7 @@ h-pos v-pos) (void)) - (define/public (reset-auto-scroll h-pos v-pos) + (define/public (reset-auto-scroll [h-pos -1] [v-pos -1]) (let ([xb (box 0)] [yb (box 0)]) (get-client-size xb yb) diff --git a/pkgs/gui-pkgs/gui-lib/mred/private/wx/gtk/canvas.rkt b/pkgs/gui-pkgs/gui-lib/mred/private/wx/gtk/canvas.rkt index cea95bd749..6857ceb4df 100644 --- a/pkgs/gui-pkgs/gui-lib/mred/private/wx/gtk/canvas.rkt +++ b/pkgs/gui-pkgs/gui-lib/mred/private/wx/gtk/canvas.rkt @@ -242,6 +242,7 @@ is-auto-scroll? is-disabled-scroll? get-virtual-width get-virtual-height refresh-for-autoscroll refresh-all-children + reset-auto-scroll get-eventspace register-extra-gtk) @@ -368,6 +369,9 @@ (define/override (set-size x y w h) (super set-size x y w h) + (when (and (is-auto-scroll?) + (not (is-panel?))) + (reset-auto-scroll)) (on-size)) (set! dc (new dc% [canvas this] [transparent? (memq 'transparent style)])) diff --git a/pkgs/gui-pkgs/gui-lib/mred/private/wx/win32/canvas.rkt b/pkgs/gui-pkgs/gui-lib/mred/private/wx/win32/canvas.rkt index 160c71a2cd..9a8ecec17c 100644 --- a/pkgs/gui-pkgs/gui-lib/mred/private/wx/win32/canvas.rkt +++ b/pkgs/gui-pkgs/gui-lib/mred/private/wx/win32/canvas.rkt @@ -286,6 +286,9 @@ [h (if (= h -1) (- (RECT-bottom r) (RECT-top r)) h)]) (MoveWindow canvas-hwnd 0 0 (max 1 (- w COMBO-WIDTH)) h #t) (MoveWindow combo-hwnd 0 0 (max 1 w) (- h 2) #t))) + (when (and (is-auto-scroll?) + (not (is-panel?))) + (reset-auto-scroll)) (on-size)) ;; this `on-size' method is for `editor-canvas%', only: diff --git a/tmp1 b/tmp1 new file mode 100644 index 0000000000..2fa91c525d --- /dev/null +++ b/tmp1 @@ -0,0 +1,2 @@ +;(#t #f a () 9739 -3 . #((test) te " " st test #() b c)) +(define foo (quote (#t #f #\a () 9739 -3 . #((test) "te \" \" st" "" test #() b c)))) \ No newline at end of file diff --git a/tmp2 b/tmp2 new file mode 100644 index 0000000000..2fa91c525d --- /dev/null +++ b/tmp2 @@ -0,0 +1,2 @@ +;(#t #f a () 9739 -3 . #((test) te " " st test #() b c)) +(define foo (quote (#t #f #\a () 9739 -3 . #((test) "te \" \" st" "" test #() b c)))) \ No newline at end of file diff --git a/tmp3 b/tmp3 new file mode 100644 index 0000000000..b109107343 --- /dev/null +++ b/tmp3 @@ -0,0 +1,2 @@ +;(0.25 -3.25) +(define foo (quote (0.25 -3.25))) \ No newline at end of file