win32: misc repairs
This commit is contained in:
parent
90a1c3f4e4
commit
b9b627f294
|
@ -98,7 +98,7 @@
|
||||||
(lambda (w h)
|
(lambda (w h)
|
||||||
(check-range-integer '(method top-level-window<%> resize) w)
|
(check-range-integer '(method top-level-window<%> resize) w)
|
||||||
(check-range-integer '(method top-level-window<%> resize) h)
|
(check-range-integer '(method top-level-window<%> resize) h)
|
||||||
(send wx set-size -1 -1 w h)))]
|
(send wx set-size -11111 -11111 w h)))]
|
||||||
|
|
||||||
[get-focus-window (entry-point
|
[get-focus-window (entry-point
|
||||||
(lambda () (let ([w (send wx get-focus-window)])
|
(lambda () (let ([w (send wx get-focus-window)])
|
||||||
|
|
|
@ -380,6 +380,9 @@
|
||||||
(let loop () (pre-event-sync #t) (when (yield) (loop))))
|
(let loop () (pre-event-sync #t) (when (yield) (loop))))
|
||||||
(void))))))
|
(void))))))
|
||||||
|
|
||||||
|
(define/override (wants-mouse-capture? control-hwnd)
|
||||||
|
(ptr-equal? canvas-hwnd control-hwnd))
|
||||||
|
|
||||||
(define/override (definitely-wants-event? w msg wParam e)
|
(define/override (definitely-wants-event? w msg wParam e)
|
||||||
(cond
|
(cond
|
||||||
[(e . is-a? . key-event%)
|
[(e . is-a? . key-event%)
|
||||||
|
|
|
@ -234,6 +234,13 @@
|
||||||
(set! mouse-frame this))
|
(set! mouse-frame this))
|
||||||
#f)
|
#f)
|
||||||
|
|
||||||
|
(define/override (send-child-leaves mk)
|
||||||
|
(if (eq? mouse-frame this)
|
||||||
|
(if saved-child
|
||||||
|
(send saved-child send-leaves mk)
|
||||||
|
#f)
|
||||||
|
#f))
|
||||||
|
|
||||||
(define/override (reset-cursor default)
|
(define/override (reset-cursor default)
|
||||||
(if wait-cursor-on?
|
(if wait-cursor-on?
|
||||||
(void (SetCursor (get-wait-cursor)))
|
(void (SetCursor (get-wait-cursor)))
|
||||||
|
|
|
@ -31,13 +31,29 @@
|
||||||
(define IMAGE_ICON 1)
|
(define IMAGE_ICON 1)
|
||||||
|
|
||||||
(define-user32 LoadIconW (_wfun _HINSTANCE _LONG -> _HICON))
|
(define-user32 LoadIconW (_wfun _HINSTANCE _LONG -> _HICON))
|
||||||
|
(define-kernel32 GetModuleFileNameW (_wfun _pointer _pointer _DWORD -> _DWORD))
|
||||||
|
|
||||||
|
(define-shell32 ExtractIconW (_wfun _HINSTANCE _string/utf-16 _UINT -> (r : _HICON)
|
||||||
|
-> (or r (failed 'ExtractIconW))))
|
||||||
|
|
||||||
|
(define ERROR_INSUFFICIENT_BUFFER 122)
|
||||||
|
|
||||||
(define app-icon
|
(define app-icon
|
||||||
(delay
|
(delay
|
||||||
(let ()
|
(let ()
|
||||||
;; GetModuleFileNameW(NULL, name, 1023);
|
(let ([path
|
||||||
;; icn = ExtractIconW(NULL, name, 0);
|
(let loop ([size 1024])
|
||||||
(LoadIconW #f IDI_APPLICATION))))
|
(let ([p (make-bytes (* (ctype-sizeof _WCHAR) 1024))])
|
||||||
|
(let ([r (GetModuleFileNameW #f p size)])
|
||||||
|
(cond
|
||||||
|
[(and (or (zero? r) (= r size))
|
||||||
|
(= (GetLastError) ERROR_INSUFFICIENT_BUFFER))
|
||||||
|
(loop (* size 2))]
|
||||||
|
[(zero? r) (failed 'GetModuleFileNameW)]
|
||||||
|
[else (cast p _gcpointer _string/utf-16)]))))])
|
||||||
|
(if path
|
||||||
|
(ExtractIconW hInstance path 0)
|
||||||
|
(LoadIconW #f IDI_APPLICATION))))))
|
||||||
(define warning-icon
|
(define warning-icon
|
||||||
(delay
|
(delay
|
||||||
(LoadIconW #f IDI_WARNING)))
|
(LoadIconW #f IDI_WARNING)))
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#lang scheme/base
|
#lang racket/base
|
||||||
(require scheme/class
|
(require racket/class
|
||||||
|
ffi/unsafe
|
||||||
"../../syntax.rkt"
|
"../../syntax.rkt"
|
||||||
"window.rkt"
|
"window.rkt"
|
||||||
"wndclass.rkt"
|
"wndclass.rkt"
|
||||||
|
@ -13,7 +14,8 @@
|
||||||
(define (panel-mixin %)
|
(define (panel-mixin %)
|
||||||
(class %
|
(class %
|
||||||
(inherit is-enabled-to-root?
|
(inherit is-enabled-to-root?
|
||||||
reset-cursor-in-child)
|
reset-cursor-in-child
|
||||||
|
get-client-hwnd)
|
||||||
|
|
||||||
(super-new)
|
(super-new)
|
||||||
|
|
||||||
|
@ -64,6 +66,9 @@
|
||||||
#t)
|
#t)
|
||||||
#f))
|
#f))
|
||||||
|
|
||||||
|
(define/override (wants-mouse-capture? control-hwnd)
|
||||||
|
(ptr-equal? (get-client-hwnd) control-hwnd))
|
||||||
|
|
||||||
(define lbl-pos 'horizontal)
|
(define lbl-pos 'horizontal)
|
||||||
(define/public (get-label-position) lbl-pos)
|
(define/public (get-label-position) lbl-pos)
|
||||||
(define/public (set-label-position pos) (set! lbl-pos pos))
|
(define/public (set-label-position pos) (set! lbl-pos pos))
|
||||||
|
|
|
@ -97,7 +97,10 @@
|
||||||
(define tab-height 0)
|
(define tab-height 0)
|
||||||
|
|
||||||
(set-control-font #f)
|
(set-control-font #f)
|
||||||
(auto-size choices 0 0 0 0 #:combine-width +
|
(auto-size (if (null? choices)
|
||||||
|
'("Choice")
|
||||||
|
choices)
|
||||||
|
0 0 0 0 #:combine-width +
|
||||||
(lambda (w h)
|
(lambda (w h)
|
||||||
(set! tab-height (+ h 6))
|
(set! tab-height (+ h 6))
|
||||||
(set-size -11111 -11111
|
(set-size -11111 -11111
|
||||||
|
|
|
@ -8,10 +8,12 @@
|
||||||
define-user32
|
define-user32
|
||||||
define-kernel32
|
define-kernel32
|
||||||
define-comctl32
|
define-comctl32
|
||||||
|
define-shell32
|
||||||
define-uxtheme
|
define-uxtheme
|
||||||
define-mz
|
define-mz
|
||||||
failed
|
failed
|
||||||
|
|
||||||
|
GetLastError
|
||||||
CreateWindowExW
|
CreateWindowExW
|
||||||
GetWindowLongW
|
GetWindowLongW
|
||||||
SetWindowLongW
|
SetWindowLongW
|
||||||
|
@ -34,12 +36,14 @@
|
||||||
(define user32-lib (ffi-lib "user32.dll"))
|
(define user32-lib (ffi-lib "user32.dll"))
|
||||||
(define kernel32-lib (ffi-lib "kernel32.dll"))
|
(define kernel32-lib (ffi-lib "kernel32.dll"))
|
||||||
(define comctl32-lib (ffi-lib "comctl32.dll"))
|
(define comctl32-lib (ffi-lib "comctl32.dll"))
|
||||||
|
(define shell32-lib (ffi-lib "shell32.dll"))
|
||||||
(define uxtheme-lib (ffi-lib "uxtheme.dll"))
|
(define uxtheme-lib (ffi-lib "uxtheme.dll"))
|
||||||
|
|
||||||
(define-ffi-definer define-gdi32 gdi32-lib)
|
(define-ffi-definer define-gdi32 gdi32-lib)
|
||||||
(define-ffi-definer define-user32 user32-lib)
|
(define-ffi-definer define-user32 user32-lib)
|
||||||
(define-ffi-definer define-kernel32 kernel32-lib)
|
(define-ffi-definer define-kernel32 kernel32-lib)
|
||||||
(define-ffi-definer define-comctl32 comctl32-lib)
|
(define-ffi-definer define-comctl32 comctl32-lib)
|
||||||
|
(define-ffi-definer define-shell32 shell32-lib)
|
||||||
(define-ffi-definer define-uxtheme uxtheme-lib)
|
(define-ffi-definer define-uxtheme uxtheme-lib)
|
||||||
|
|
||||||
(define-kernel32 GetLastError (_wfun -> _DWORD))
|
(define-kernel32 GetLastError (_wfun -> _DWORD))
|
||||||
|
|
|
@ -54,6 +54,9 @@
|
||||||
(define-user32 FillRect (_wfun _HDC _RECT-pointer _HBRUSH -> (r : _int)
|
(define-user32 FillRect (_wfun _HDC _RECT-pointer _HBRUSH -> (r : _int)
|
||||||
-> (when (zero? r) (failed 'FillRect))))
|
-> (when (zero? r) (failed 'FillRect))))
|
||||||
|
|
||||||
|
(define-user32 SetCapture (_wfun _HWND -> _HWND))
|
||||||
|
(define-user32 ReleaseCapture (_wfun -> _BOOL))
|
||||||
|
|
||||||
(define-cstruct _NMHDR
|
(define-cstruct _NMHDR
|
||||||
([hwndFrom _HWND]
|
([hwndFrom _HWND]
|
||||||
[idFrom _pointer]
|
[idFrom _pointer]
|
||||||
|
@ -248,7 +251,7 @@
|
||||||
(let ([r (GetWindowRect hwnd)])
|
(let ([r (GetWindowRect hwnd)])
|
||||||
(MoveWindow hwnd
|
(MoveWindow hwnd
|
||||||
(if (= x -11111) (RECT-left r) x)
|
(if (= x -11111) (RECT-left r) x)
|
||||||
(if (= y -11111) (RECT-right r) y)
|
(if (= y -11111) (RECT-top r) y)
|
||||||
(if (= w -1) (- (RECT-right r) (RECT-left r)) w)
|
(if (= w -1) (- (RECT-right r) (RECT-left r)) w)
|
||||||
(if (= h -1) (- (RECT-bottom r) (RECT-top r)) h)
|
(if (= h -1) (- (RECT-bottom r) (RECT-top r)) h)
|
||||||
#t))
|
#t))
|
||||||
|
@ -480,6 +483,12 @@
|
||||||
[alt-down #f]
|
[alt-down #f]
|
||||||
[time-stamp 0]
|
[time-stamp 0]
|
||||||
[caps-down #f]))])
|
[caps-down #f]))])
|
||||||
|
(unless nc?
|
||||||
|
(when (wants-mouse-capture? control-hwnd)
|
||||||
|
(when (memq type '(left-down right-down middle-down))
|
||||||
|
(SetCapture control-hwnd))
|
||||||
|
(when (memq type '(left-up right-up middle-up))
|
||||||
|
(ReleaseCapture))))
|
||||||
(if mouse-in?
|
(if mouse-in?
|
||||||
(if (send-child-leaves (lambda (type) (make-e type)))
|
(if (send-child-leaves (lambda (type) (make-e type)))
|
||||||
(cursor-updated-here)
|
(cursor-updated-here)
|
||||||
|
@ -532,6 +541,9 @@
|
||||||
(define/public (send-child-leaves mk)
|
(define/public (send-child-leaves mk)
|
||||||
#f)
|
#f)
|
||||||
|
|
||||||
|
(define/public (wants-mouse-capture? control-hwnd)
|
||||||
|
#f)
|
||||||
|
|
||||||
(define/public (definitely-wants-event? w msg wParam e)
|
(define/public (definitely-wants-event? w msg wParam e)
|
||||||
#f)
|
#f)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user