Add the ability to create empty contentEditable windows in MiniBrowser
[WebKit-https.git] / Tools / MiniBrowser / mac / AppDelegate.m
index 7811b77..846a76f 100644 (file)
@@ -44,7 +44,9 @@
 
 enum {
     WebKit1NewWindowTag = 1,
-    WebKit2NewWindowTag = 2
+    WebKit2NewWindowTag = 2,
+    WebKit1NewEditorTag = 3,
+    WebKit2NewEditorTag = 4
 };
 
 @interface NSApplication (TouchBar)
@@ -120,30 +122,44 @@ WKPreferences *defaultPreferences()
 
 #endif
 
-
-- (IBAction)newWindow:(id)sender
+- (BrowserWindowController *)createBrowserWindowController:(id)sender
 {
     BrowserWindowController *controller = nil;
-
     BOOL useWebKit2 = NO;
+    BOOL makeEditable = NO;
 
     if (![sender respondsToSelector:@selector(tag)])
         useWebKit2 = [SettingsController shared].useWebKit2ByDefault;
-    else
-        useWebKit2 = [sender tag] == WebKit2NewWindowTag;
-    
+    else {
+        useWebKit2 = [sender tag] == WebKit2NewWindowTag || [sender tag] == WebKit2NewEditorTag;
+        makeEditable = [sender tag] == WebKit1NewEditorTag || [sender tag] == WebKit2NewEditorTag;
+    }
+
     if (!useWebKit2)
         controller = [[WK1BrowserWindowController alloc] initWithWindowNibName:@"BrowserWindow"];
 #if WK_API_ENABLED
     else
         controller = [[WK2BrowserWindowController alloc] initWithConfiguration:defaultConfiguration()];
 #endif
+
+    if (makeEditable)
+        controller.editable = YES;
+
+    if (!controller)
+        return nil;
+
+    [_browserWindowControllers addObject:controller];
+
+    return controller;
+}
+
+- (IBAction)newWindow:(id)sender
+{
+    BrowserWindowController *controller = [self createBrowserWindowController:sender];
     if (!controller)
         return;
 
     [[controller window] makeKeyAndOrderFront:sender];
-    [_browserWindowControllers addObject:controller];
-    
     [controller loadURLString:[SettingsController shared].defaultURL];
 }
 
@@ -163,6 +179,16 @@ WKPreferences *defaultPreferences()
 #endif
 }
 
+- (IBAction)newEditorWindow:(id)sender
+{
+    BrowserWindowController *controller = [self createBrowserWindowController:sender];
+    if (!controller)
+        return;
+
+    [[controller window] makeKeyAndOrderFront:sender];
+    [controller loadHTMLString:@"<html><body></body></html>"];
+}
+
 - (void)browserWindowWillClose:(NSWindow *)window
 {
     [_browserWindowControllers removeObject:window.windowController];
@@ -222,11 +248,11 @@ WKPreferences *defaultPreferences()
         if (result != NSFileHandlingPanelOKButton)
             return;
 
-        BrowserWindowController *newBrowserWindowController = [[WK1BrowserWindowController alloc] initWithWindowNibName:@"BrowserWindow"];
-        [newBrowserWindowController.window makeKeyAndOrderFront:self];
+        BrowserWindowController *controller = [self createBrowserWindowController:nil];
+        [controller.window makeKeyAndOrderFront:self];
 
         NSURL *url = [openPanel.URLs objectAtIndex:0];
-        [newBrowserWindowController loadURLString:[url absoluteString]];
+        [controller loadURLString:[url absoluteString]];
     }];
 }
 
@@ -241,13 +267,13 @@ WKPreferences *defaultPreferences()
 
 - (void)_updateNewWindowKeyEquivalents
 {
-    if ([[SettingsController shared] useWebKit2ByDefault]) {
-        [_newWebKit1WindowItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand | NSEventModifierFlagOption];
-        [_newWebKit2WindowItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand];
-    } else {
-        [_newWebKit1WindowItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand];
-        [_newWebKit2WindowItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand | NSEventModifierFlagOption];
-    }
+    NSEventModifierFlags webKit1Flags = [SettingsController shared].useWebKit2ByDefault ? NSEventModifierFlagOption : 0;
+    NSEventModifierFlags webKit2Flags = [SettingsController shared].useWebKit2ByDefault ? 0 : NSEventModifierFlagOption;
+
+    _newWebKit1WindowItem.keyEquivalentModifierMask = NSEventModifierFlagCommand | webKit1Flags;
+    _newWebKit2WindowItem.keyEquivalentModifierMask = NSEventModifierFlagCommand | webKit2Flags;
+    _newWebKit1EditorItem.keyEquivalentModifierMask = NSEventModifierFlagCommand | webKit1Flags;
+    _newWebKit2EditorItem.keyEquivalentModifierMask = NSEventModifierFlagCommand | webKit2Flags;
 }
 
 - (IBAction)showExtensionsManager:(id)sender