Mercurial > osx-quasimode
view JavaScriptQuasimode.m @ 12:4bb0e66b4d7f
implemented quasimode.setSize()
author | Atul Varma <avarma@mozilla.com> |
---|---|
date | Sun, 11 Apr 2010 21:18:13 -0700 |
parents | f98ecd33c5e0 |
children | bab79fdfa745 |
line wrap: on
line source
#import <WebKit/WebFrame.h> #import <JavaScriptCore/JavaScriptCore.h> #import "Quasimode.h" #import "JavaScriptQuasimode.h" static JSValueRef setSize(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { if (argumentCount >= 2 && JSValueIsNumber(ctx, arguments[0]) && JSValueIsNumber(ctx, arguments[1])) { Quasimode *quasimode = (Quasimode *) JSObjectGetPrivate(thisObject); int width = (int) JSValueToNumber(ctx, arguments[0], NULL); int height = (int) JSValueToNumber(ctx, arguments[1], NULL); if (width > 0 && height > 0) { NSSize size = {width, height}; [[quasimode window] setContentSize: size]; } } return JSValueMakeUndefined(ctx); } static void initialize(JSContextRef ctx, JSObjectRef object) { JSStringRef setSizeStr = JSStringCreateWithUTF8CString("setSize"); JSObjectRef func = JSObjectMakeFunctionWithCallback(ctx, setSizeStr, setSize); JSObjectSetProperty(ctx, object, setSizeStr, func, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, NULL); } void JSQuasimodeInit(Quasimode *quasimode) { WebFrame *frame = [[quasimode view] mainFrame]; JSGlobalContextRef ctx = [frame globalContext]; JSClassDefinition classDef = kJSClassDefinitionEmpty; classDef.initialize = initialize; classDef.className = "Quasimode"; JSClassRef class = JSClassCreate(&classDef); JSObjectRef jsQuasimode = JSObjectMake(ctx, class, quasimode); JSObjectRef global = JSContextGetGlobalObject(ctx); JSObjectSetProperty(ctx, global, JSStringCreateWithUTF8CString("quasimode"), jsQuasimode, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, NULL); }