diff options
Diffstat (limited to 'WebKitExamplePlugins/NetscapeInputMethodPlugin')
4 files changed, 0 insertions, 797 deletions
diff --git a/WebKitExamplePlugins/NetscapeInputMethodPlugin/Info.plist b/WebKitExamplePlugins/NetscapeInputMethodPlugin/Info.plist deleted file mode 100644 index a09cb1f..0000000 --- a/WebKitExamplePlugins/NetscapeInputMethodPlugin/Info.plist +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleExecutable</key> - <string>NetscapeInputMethodPlugin</string> - <key>CFBundleIconFile</key> - <string></string> - <key>CFBundleIdentifier</key> - <string>com.apple.netscapeinputmethodplugin</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundlePackageType</key> - <string>BRPL</string> - <key>CFBundleShortVersionString</key> - <string>1.0</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>1.0</string> - <key>WebPluginDescription</key> - <string>Simple Netscape plug-in that shows how to use input methods</string> - <key>WebPluginMIMETypes</key> - <dict> - <key>test/x-netscape-input-method-plugin</key> - <dict> - <key>WebPluginTypeDescription</key> - <string>Netscape Input Method Plug-in</string> - </dict> - </dict> - <key>WebPluginName</key> - <string>Netscape Input Method Plug-in</string> -</dict> -</plist> diff --git a/WebKitExamplePlugins/NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj b/WebKitExamplePlugins/NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj deleted file mode 100644 index c5248be..0000000 --- a/WebKitExamplePlugins/NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj +++ /dev/null @@ -1,236 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 1A624E590DCBC7F6006898C8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A624E580DCBC7F6006898C8 /* main.m */; }; - 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A6250410DCBC81B006898C8 /* Cocoa.framework */; }; - 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; }; - 1A624E580DCBC7F6006898C8 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; - 1A6250410DCBC81B006898C8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; - 8D576316048677EA00EA77CD /* NetscapeInputMethodPlugin.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NetscapeInputMethodPlugin.plugin; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8D576313048677EA00EA77CD /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 089C166AFE841209C02AAC07 /* NetscapeInputMethodPlugin */ = { - isa = PBXGroup; - children = ( - 08FB77AFFE84173DC02AAC07 /* Source */, - 089C167CFE841241C02AAC07 /* Resources */, - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, - 19C28FB6FE9D52B211CA2CBB /* Products */, - ); - name = NetscapeInputMethodPlugin; - sourceTree = "<group>"; - }; - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - 1A6250410DCBC81B006898C8 /* Cocoa.framework */, - ); - name = "External Frameworks and Libraries"; - sourceTree = "<group>"; - }; - 089C167CFE841241C02AAC07 /* Resources */ = { - isa = PBXGroup; - children = ( - 8D576317048677EA00EA77CD /* Info.plist */, - 8D5B49A704867FD3000E48DA /* InfoPlist.strings */, - ); - name = Resources; - sourceTree = "<group>"; - }; - 08FB77AFFE84173DC02AAC07 /* Source */ = { - isa = PBXGroup; - children = ( - 1A624E580DCBC7F6006898C8 /* main.m */, - ); - name = Source; - sourceTree = "<group>"; - }; - 19C28FB6FE9D52B211CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8D576316048677EA00EA77CD /* NetscapeInputMethodPlugin.plugin */, - ); - name = Products; - sourceTree = "<group>"; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8D57630D048677EA00EA77CD /* NetscapeInputMethodPlugin */ = { - isa = PBXNativeTarget; - buildConfigurationList = 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeInputMethodPlugin" */; - buildPhases = ( - 8D576311048677EA00EA77CD /* Sources */, - 8D57630F048677EA00EA77CD /* Resources */, - 8D576313048677EA00EA77CD /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = NetscapeInputMethodPlugin; - productInstallPath = "$(HOME)/Library/Bundles"; - productName = NetscapeInputMethodPlugin; - productReference = 8D576316048677EA00EA77CD /* NetscapeInputMethodPlugin.plugin */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 089C1669FE841209C02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeInputMethodPlugin" */; - compatibilityVersion = "Xcode 2.4"; - hasScannedForEncodings = 1; - mainGroup = 089C166AFE841209C02AAC07 /* NetscapeInputMethodPlugin */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8D57630D048677EA00EA77CD /* NetscapeInputMethodPlugin */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 8D57630F048677EA00EA77CD /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8D576311048677EA00EA77CD /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A624E590DCBC7F6006898C8 /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 089C167EFE841241C02AAC07 /* English */, - ); - name = InfoPlist.strings; - sourceTree = "<group>"; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 149C298408902C53008A9EFC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DEBUGGING_SYMBOLS = full; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Library/Bundles"; - PRODUCT_NAME = NetscapeInputMethodPlugin; - WRAPPER_EXTENSION = plugin; - ZERO_LINK = YES; - }; - name = Debug; - }; - 149C298508902C53008A9EFC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = ( - ppc, - i386, - ); - GCC_DEBUGGING_SYMBOLS = full; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Library/Bundles"; - PRODUCT_NAME = NetscapeInputMethodPlugin; - WRAPPER_EXTENSION = plugin; - }; - name = Release; - }; - 149C298808902C53008A9EFC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; - ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; - }; - name = Debug; - }; - 149C298908902C53008A9EFC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; - ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeInputMethodPlugin" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 149C298408902C53008A9EFC /* Debug */, - 149C298508902C53008A9EFC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeInputMethodPlugin" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 149C298808902C53008A9EFC /* Debug */, - 149C298908902C53008A9EFC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 089C1669FE841209C02AAC07 /* Project object */; -} diff --git a/WebKitExamplePlugins/NetscapeInputMethodPlugin/main.m b/WebKitExamplePlugins/NetscapeInputMethodPlugin/main.m deleted file mode 100644 index d5ec581..0000000 --- a/WebKitExamplePlugins/NetscapeInputMethodPlugin/main.m +++ /dev/null @@ -1,514 +0,0 @@ -/* - IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in - consideration of your agreement to the following terms, and your use, installation, - modification or redistribution of this Apple software constitutes acceptance of these - terms. If you do not agree with these terms, please do not use, install, modify or - redistribute this Apple software. - - In consideration of your agreement to abide by the following terms, and subject to these - terms, Apple grants you a personal, non-exclusive license, under Appleās copyrights in - this original Apple software (the "Apple Software"), to use, reproduce, modify and - redistribute the Apple Software, with or without modifications, in source and/or binary - forms; provided that if you redistribute the Apple Software in its entirety and without - modifications, you must retain this notice and the following text and disclaimers in all - such redistributions of the Apple Software. Neither the name, trademarks, service marks - or logos of Apple Computer, Inc. may be used to endorse or promote products derived from - the Apple Software without specific prior written permission from Apple. Except as expressly - stated in this notice, no other rights or licenses, express or implied, are granted by Apple - herein, including but not limited to any patent rights that may be infringed by your - derivative works or by other works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, - EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS - USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, - REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND - WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR - OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import <WebKit/npapi.h> -#import <WebKit/npfunctions.h> -#import <WebKit/npruntime.h> -#import <WebKit/nptextinput.h> - -#import <Cocoa/Cocoa.h> - -// Browser function table -static NPNetscapeFuncs* browser; - -// Structure for per-instance storage -typedef struct PluginObject -{ - NPP npp; - - NPWindow window; - - bool pluginHasFocus; - - bool textFieldHasFocus; - NSRect textFieldRect; - - NSRange markedRange; - NSRange selectedRange; - NSTextStorage *textStorage; - NSLayoutManager *layoutManager; - NSTextContainer *textContainer; - -} PluginObject; - -NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved); -NPError NPP_Destroy(NPP instance, NPSavedData** save); -NPError NPP_SetWindow(NPP instance, NPWindow* window); -NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype); -NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason); -int32 NPP_WriteReady(NPP instance, NPStream* stream); -int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer); -void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname); -void NPP_Print(NPP instance, NPPrint* platformPrint); -int16 NPP_HandleEvent(NPP instance, void* event); -void NPP_URLNotify(NPP instance, const char* URL, NPReason reason, void* notifyData); -NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value); -NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value); - -#pragma export on -// Mach-o entry points -NPError NP_Initialize(NPNetscapeFuncs *browserFuncs); -NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs); -void NP_Shutdown(void); -#pragma export off - -NPError NP_Initialize(NPNetscapeFuncs* browserFuncs) -{ - browser = browserFuncs; - return NPERR_NO_ERROR; -} - -NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs) -{ - pluginFuncs->version = 11; - pluginFuncs->size = sizeof(pluginFuncs); - pluginFuncs->newp = NPP_New; - pluginFuncs->destroy = NPP_Destroy; - pluginFuncs->setwindow = NPP_SetWindow; - pluginFuncs->newstream = NPP_NewStream; - pluginFuncs->destroystream = NPP_DestroyStream; - pluginFuncs->asfile = NPP_StreamAsFile; - pluginFuncs->writeready = NPP_WriteReady; - pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write; - pluginFuncs->print = NPP_Print; - pluginFuncs->event = NPP_HandleEvent; - pluginFuncs->urlnotify = NPP_URLNotify; - pluginFuncs->getvalue = NPP_GetValue; - pluginFuncs->setvalue = NPP_SetValue; - - return NPERR_NO_ERROR; -} - -void NP_Shutdown(void) -{ -} - -NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved) -{ - // Create per-instance storage - PluginObject *obj = (PluginObject *)malloc(sizeof(PluginObject)); - bzero(obj, sizeof(PluginObject)); - - obj->npp = instance; - instance->pdata = obj; - - // Ask the browser if it supports the CoreGraphics drawing model - NPBool supportsCoreGraphics; - if (browser->getvalue(instance, NPNVsupportsCoreGraphicsBool, &supportsCoreGraphics) != NPERR_NO_ERROR) - supportsCoreGraphics = FALSE; - - if (!supportsCoreGraphics) - return NPERR_INCOMPATIBLE_VERSION_ERROR; - - // If the browser supports the CoreGraphics drawing model, enable it. - browser->setvalue(instance, NPPVpluginDrawingModel, (void *)NPDrawingModelCoreGraphics); - - // If the browser supports the Cocoa event model, enable it. - NPBool supportsCocoa; - if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR) - supportsCocoa = FALSE; - - if (!supportsCocoa) - return NPERR_INCOMPATIBLE_VERSION_ERROR; - - browser->setvalue(instance, NPPVpluginEventModel, (void *)NPEventModelCocoa); - - obj->textFieldRect = NSMakeRect(10, 10, 200, 100); - - obj->textStorage = [[NSTextStorage alloc] initWithString:@""]; - obj->layoutManager = [[NSLayoutManager alloc] init]; - [obj->textStorage addLayoutManager:obj->layoutManager]; - - obj->textContainer = [[NSTextContainer alloc] initWithContainerSize:obj->textFieldRect.size]; - [obj->layoutManager addTextContainer:obj->textContainer]; - - obj->selectedRange.location = [obj->textStorage length]; - - obj->markedRange = NSMakeRange(NSNotFound, 0); - - return NPERR_NO_ERROR; -} - -NPError NPP_Destroy(NPP instance, NPSavedData** save) -{ - // Free per-instance storage - PluginObject *obj = instance->pdata; - - [obj->textStorage release]; - [obj->layoutManager release]; - - free(obj); - - return NPERR_NO_ERROR; -} - -NPError NPP_SetWindow(NPP instance, NPWindow* window) -{ - PluginObject *obj = instance->pdata; - obj->window = *window; - - return NPERR_NO_ERROR; -} - - -NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype) -{ - *stype = NP_ASFILEONLY; - return NPERR_NO_ERROR; -} - -NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason) -{ - return NPERR_NO_ERROR; -} - -int32 NPP_WriteReady(NPP instance, NPStream* stream) -{ - return 0; -} - -int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer) -{ - return 0; -} - -void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname) -{ -} - -void NPP_Print(NPP instance, NPPrint* platformPrint) -{ - -} - -static void handleDraw(PluginObject *obj) -{ - NSGraphicsContext *oldContext = [[NSGraphicsContext currentContext] retain]; - - NSGraphicsContext *context = [NSGraphicsContext graphicsContextWithGraphicsPort:((NP_CGContext *)obj->window.window)->context - flipped:YES]; - - - [NSGraphicsContext setCurrentContext:context]; - - NSRect rect = NSMakeRect(0, 0, obj->window.width, obj->window.height); - - [[NSColor lightGrayColor] set]; - [NSBezierPath fillRect:rect]; - - if (obj->pluginHasFocus) { - [[NSColor blackColor] set]; - [NSBezierPath strokeRect:rect]; - } - - [[NSColor whiteColor] set]; - [NSBezierPath fillRect:obj->textFieldRect]; - - // Draw the text - NSRange glyphRange = [obj->layoutManager glyphRangeForTextContainer:obj->textContainer]; - if (glyphRange.length > 0) { - [obj->layoutManager drawBackgroundForGlyphRange:glyphRange atPoint:obj->textFieldRect.origin]; - [obj->layoutManager drawGlyphsForGlyphRange:glyphRange atPoint:obj->textFieldRect.origin]; - } - - NSBezierPath *textInputBorder = [NSBezierPath bezierPathWithRect:obj->textFieldRect]; - [[NSColor blackColor] set]; - - if (obj->pluginHasFocus && obj->textFieldHasFocus) - [textInputBorder setLineWidth:2]; - else - [textInputBorder setLineWidth:1]; - - [textInputBorder stroke]; - - if (obj->pluginHasFocus && obj->textFieldHasFocus) { - NSUInteger rectCount; - NSRect *rectArray = [obj->layoutManager rectArrayForCharacterRange:obj->selectedRange - withinSelectedCharacterRange:obj->selectedRange - inTextContainer:obj->textContainer - rectCount:&rectCount]; - - [[NSColor blackColor] set]; - for (unsigned i = 0; i < rectCount; i++) { - NSRect rect = rectArray[i]; - rect.origin.x += obj->textFieldRect.origin.x; - rect.origin.y += obj->textFieldRect.origin.y; - - [NSBezierPath strokeRect:rect]; - } - } - - [NSGraphicsContext setCurrentContext:oldContext]; -} - -static void invalidatePlugin(PluginObject *obj) -{ - NPRect rect; - rect.left = 0; - rect.top = 0; - rect.right = obj->window.width; - rect.bottom = obj->window.height; - - browser->invalidaterect(obj->npp, &rect); -} - -static void handleFocusChanged(NPCocoaEvent *cocoaEvent, PluginObject *obj) -{ - obj->pluginHasFocus = cocoaEvent->event.focus.hasFocus; - - invalidatePlugin(obj); -} - -static void handleMouseMoved(NPCocoaEvent *cocoaEvent, PluginObject *obj) -{ - NSPoint point = NSMakePoint(cocoaEvent->event.mouse.pluginX, cocoaEvent->event.mouse.pluginY); - - if (NSPointInRect(point, obj->textFieldRect)) - [[NSCursor IBeamCursor] set]; - else - [[NSCursor arrowCursor] set]; -} - -static void handleMouseDown(NPCocoaEvent *cocoaEvent, PluginObject *obj) -{ - NSPoint point = NSMakePoint(cocoaEvent->event.mouse.pluginX, cocoaEvent->event.mouse.pluginY); - - obj->textFieldHasFocus = NSPointInRect(point, obj->textFieldRect); - - invalidatePlugin(obj); -} - -int16 NPP_HandleEvent(NPP instance, void* event) -{ - PluginObject *obj = instance->pdata; - - NPCocoaEvent *cocoaEvent = event; - - switch (cocoaEvent->type) { - case NPCocoaEventDrawRect: - handleDraw(obj); - return 1; - case NPCocoaEventFocusChanged: - handleFocusChanged(cocoaEvent, obj); - return 1; - case NPCocoaEventMouseMoved: - handleMouseMoved(cocoaEvent, obj); - return 1; - case NPCocoaEventMouseDown: - handleMouseDown(cocoaEvent, obj); - return 1; - case NPCocoaEventKeyDown: - // If the text field has focus we ignore the event, causing it - // to be sent to the input manager. - if (obj->textFieldHasFocus) - return 0; - else - return 1; - - } - - return 0; -} - -void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData) -{ - -} - -static NSRange selectionRange(PluginObject *obj) -{ - if (obj->markedRange.location != NSNotFound) - return obj->markedRange; - else - return obj->selectedRange; -} - -/* Text Input */ - -void NPP_InsertText(NPP npp, id aString) -{ - PluginObject *obj = npp->pdata; - - NSRange range = selectionRange(obj); - - // Get rid of the marked text - if (NPP_HasMarkedText(npp)) { - [obj->textStorage deleteCharactersInRange:obj->markedRange]; - range.length = 0; - } - - [obj->textStorage replaceCharactersInRange:range withString:aString]; - - obj->selectedRange.location = range.location + [aString length]; - obj->selectedRange.length = 0; - - obj->markedRange = NSMakeRange(NSNotFound, 0); - - invalidatePlugin(obj); -} - -void NPP_DoCommandBySelector(NPP npp, SEL aSelector) -{ - PluginObject *obj = npp->pdata; - - if (aSelector == @selector(moveRight:)) { - if (obj->selectedRange.location == [obj->textStorage length]) - return; - - obj->selectedRange.location++; - invalidatePlugin(obj); - } else if (aSelector == @selector(moveLeft:)) { - if (obj->selectedRange.location == 0) - return; - - obj->selectedRange.location--; - invalidatePlugin(obj); - } -} - -static NSDictionary *markedTextAttributes() -{ - static NSDictionary *markedTextAttributes = nil; - if (!markedTextAttributes) { - NSTextView *tv = [[NSTextView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)]; - markedTextAttributes = [[tv markedTextAttributes] retain]; - [tv release]; - } - - return markedTextAttributes; -} - -void NPP_SetMarkedText(NPP npp, id aString, NSRange selRange) -{ - PluginObject *obj = npp->pdata; - - BOOL isAttributedString = [aString isKindOfClass:[NSAttributedString class]]; - - NSRange range = selectionRange(obj); - - if (!isAttributedString) - aString = [[[NSAttributedString alloc] initWithString:aString attributes:markedTextAttributes()] autorelease]; - - [obj->textStorage replaceCharactersInRange:range withAttributedString:aString]; - - obj->selectedRange.location = range.location + selRange.location; - obj->selectedRange.length = selRange.length; - - obj->markedRange = NSMakeRange(range.location, [aString length]); - - invalidatePlugin(obj); -} - -void NPP_UnmarkText(NPP npp) -{ -} - -BOOL NPP_HasMarkedText(NPP npp) -{ - PluginObject *obj = npp->pdata; - - return obj->markedRange.location != NSNotFound; -} - -NSAttributedString *NPP_AttributedSubstringFromRange(NPP npp, NSRange theRange) -{ - return nil; -} - -NSRange NPP_MarkedRange(NPP npp) -{ - PluginObject *obj = npp->pdata; - - return obj->markedRange; -} - -NSRange NPP_SelectedRange(NPP npp) -{ - PluginObject *obj = npp->pdata; - - return obj->selectedRange; -} - -NSRect NPP_FirstRectForCharacterRange(NPP npp, NSRange theRange) -{ - PluginObject *obj = npp->pdata; - - NSUInteger rectCount; - NSRect *rectArray = [obj->layoutManager rectArrayForCharacterRange:theRange - withinSelectedCharacterRange:theRange - inTextContainer:obj->textContainer - rectCount:&rectCount]; - - return rectArray[0]; -} - -static NPPluginTextInputFuncs* pluginTextInputFuncs() -{ - static NPPluginTextInputFuncs textInputFuncs; - static bool initialized = false; - - if (!initialized) { - textInputFuncs.version = 0; - textInputFuncs.size = sizeof(textInputFuncs); - - textInputFuncs.insertText = NPP_InsertText; - textInputFuncs.doCommandBySelector = NPP_DoCommandBySelector; - textInputFuncs.setMarkedText = NPP_SetMarkedText; - textInputFuncs.unmarkText = NPP_UnmarkText; - textInputFuncs.hasMarkedText = NPP_HasMarkedText; - textInputFuncs.attributedSubstringFromRange = NPP_AttributedSubstringFromRange; - textInputFuncs.markedRange = NPP_MarkedRange; - textInputFuncs.selectedRange = NPP_SelectedRange; - textInputFuncs.firstRectForCharacterRange = NPP_FirstRectForCharacterRange; - - initialized = true; - } - - return &textInputFuncs; -} - -NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value) -{ - switch (variable) { - case NPPVpluginTextInputFuncs: - *(NPPluginTextInputFuncs**)value = pluginTextInputFuncs(); - return NPERR_NO_ERROR; - } - - return NPERR_GENERIC_ERROR; -} - -NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value) -{ - return NPERR_GENERIC_ERROR; -} diff --git a/WebKitExamplePlugins/NetscapeInputMethodPlugin/test.html b/WebKitExamplePlugins/NetscapeInputMethodPlugin/test.html deleted file mode 100644 index d41a4c0..0000000 --- a/WebKitExamplePlugins/NetscapeInputMethodPlugin/test.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"> -<html> -<head> -<title>Netscape Input Method Plug-In</title> -</head> -<body> -<div> - <embed width="400" height="400" type="test/x-netscape-input-method-plugin"></embed> -</div> -</body> -</html> |