Re: [racket-dev] Windowing API
Thanks that worked. -Eric On Oct 15, 2011, at 7:07 AM, Matthew Flatt wrote: > I think you'll have to handle `on-size' at the `racket/gui' level: > > (define panel > (new (class panel% > (define/override (on-size w h) >(tellv web-view setFrame: > #:type _NSRect (make-NSRect (make-NSPoint 0 0) > (make-NSSize w h > (super-new)) >[parent frame])) > > ;; instead of `frame-view': > (define panel-view (send panel get-client-handle)) > (tellv panel-view addSubview: web-view) > > > At Fri, 14 Oct 2011 23:19:32 -0700, Eric Dobson wrote: >> I am trying to implement a WebKit panel in Racket, and am running in to some >> trouble with the windowing API. I cannot get resizing to work. In OS X it >> looks like it is supposed to be enabled by default so I assume racket is >> changing it so that it can do its layout algorithm. The problem is that If I >> want to hook into this It looks like I need to get access to the platform >> specific racket windowing API. Currently I can get access to the Objective C >> layer, but not to the hidden racket layer. Maybe this is not the way I >> should >> approach this but I'm hoping someone can help. >> >> >> >> #lang racket >> (require racket/gui/base ffi/unsafe/objc ffi/unsafe) >> (require mred/private/wx/cocoa/types >> (prefix-in c: mred/private/wx/cocoa/window)) >> (define webkit-lib (ffi-lib (format >> "/System/Library/Frameworks/WebKit.framework/WebKit"))) >> >> (import-class WebView) >> (import-class NSURLRequest) >> (import-class NSURL) >> (define web-view (tell (tell WebView alloc) initWithFrame: #:type _NSRect >> (make-NSRect (make-NSPoint 0 0) (make-NSSize 300 300)) frameName: #f >> groupName: #f)) >> (define frame (new frame% (label "test-frame") (width 300) (height 300))) >> ;(define racket-web-view (new c:window% (parent frame) (cocoa web-view) >> (no-show? #f))) >> ;This problem is here the parent argument needs to be the platform specific >> window and not the generic one >> (define frame-view (send frame get-client-handle)) >> (tellv frame-view addSubview: web-view) >> >> (define request (tell NSURLRequest requestWithURL: (tell NSURL >> URLWithString: >> #:type _NSString "http://www.google.com";))) >> (tellv (tell web-view mainFrame) loadRequest: request) >> >> (send frame show #t) >> _ >> For list-related administrative tasks: >> http://lists.racket-lang.org/listinfo/dev _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
Re: [racket-dev] Windowing API
I think you'll have to handle `on-size' at the `racket/gui' level: (define panel (new (class panel% (define/override (on-size w h) (tellv web-view setFrame: #:type _NSRect (make-NSRect (make-NSPoint 0 0) (make-NSSize w h (super-new)) [parent frame])) ;; instead of `frame-view': (define panel-view (send panel get-client-handle)) (tellv panel-view addSubview: web-view) At Fri, 14 Oct 2011 23:19:32 -0700, Eric Dobson wrote: > I am trying to implement a WebKit panel in Racket, and am running in to some > trouble with the windowing API. I cannot get resizing to work. In OS X it > looks like it is supposed to be enabled by default so I assume racket is > changing it so that it can do its layout algorithm. The problem is that If I > want to hook into this It looks like I need to get access to the platform > specific racket windowing API. Currently I can get access to the Objective C > layer, but not to the hidden racket layer. Maybe this is not the way I should > approach this but I'm hoping someone can help. > > > > #lang racket > (require racket/gui/base ffi/unsafe/objc ffi/unsafe) > (require mred/private/wx/cocoa/types > (prefix-in c: mred/private/wx/cocoa/window)) > (define webkit-lib (ffi-lib (format > "/System/Library/Frameworks/WebKit.framework/WebKit"))) > > (import-class WebView) > (import-class NSURLRequest) > (import-class NSURL) > (define web-view (tell (tell WebView alloc) initWithFrame: #:type _NSRect > (make-NSRect (make-NSPoint 0 0) (make-NSSize 300 300)) frameName: #f > groupName: #f)) > (define frame (new frame% (label "test-frame") (width 300) (height 300))) > ;(define racket-web-view (new c:window% (parent frame) (cocoa web-view) > (no-show? #f))) > ;This problem is here the parent argument needs to be the platform specific > window and not the generic one > (define frame-view (send frame get-client-handle)) > (tellv frame-view addSubview: web-view) > > (define request (tell NSURLRequest requestWithURL: (tell NSURL URLWithString: > #:type _NSString "http://www.google.com";))) > (tellv (tell web-view mainFrame) loadRequest: request) > > (send frame show #t) > _ > For list-related administrative tasks: > http://lists.racket-lang.org/listinfo/dev _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev
[racket-dev] Windowing API
I am trying to implement a WebKit panel in Racket, and am running in to some trouble with the windowing API. I cannot get resizing to work. In OS X it looks like it is supposed to be enabled by default so I assume racket is changing it so that it can do its layout algorithm. The problem is that If I want to hook into this It looks like I need to get access to the platform specific racket windowing API. Currently I can get access to the Objective C layer, but not to the hidden racket layer. Maybe this is not the way I should approach this but I'm hoping someone can help. #lang racket (require racket/gui/base ffi/unsafe/objc ffi/unsafe) (require mred/private/wx/cocoa/types (prefix-in c: mred/private/wx/cocoa/window)) (define webkit-lib (ffi-lib (format "/System/Library/Frameworks/WebKit.framework/WebKit"))) (import-class WebView) (import-class NSURLRequest) (import-class NSURL) (define web-view (tell (tell WebView alloc) initWithFrame: #:type _NSRect (make-NSRect (make-NSPoint 0 0) (make-NSSize 300 300)) frameName: #f groupName: #f)) (define frame (new frame% (label "test-frame") (width 300) (height 300))) ;(define racket-web-view (new c:window% (parent frame) (cocoa web-view) (no-show? #f))) ;This problem is here the parent argument needs to be the platform specific window and not the generic one (define frame-view (send frame get-client-handle)) (tellv frame-view addSubview: web-view) (define request (tell NSURLRequest requestWithURL: (tell NSURL URLWithString: #:type _NSString "http://www.google.com";))) (tellv (tell web-view mainFrame) loadRequest: request) (send frame show #t) _ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev