|
@@ -112,8 +112,7 @@ final class InAppBrowserWindowController: NSWindowController, NSWindowDelegate {
|
|
|
private var reloadButton: TitlebarIconButton!
|
|
private var reloadButton: TitlebarIconButton!
|
|
|
private var pinButton: TitlebarIconButton!
|
|
private var pinButton: TitlebarIconButton!
|
|
|
private var homeButton: TitlebarIconButton!
|
|
private var homeButton: TitlebarIconButton!
|
|
|
- private var gridButton: TitlebarIconButton!
|
|
|
|
|
- private var openInBrowserButton: TitlebarIconButton!
|
|
|
|
|
|
|
+ private var widgetButton: TitlebarIconButton!
|
|
|
private var handButton: TitlebarIconButton!
|
|
private var handButton: TitlebarIconButton!
|
|
|
private var downloadButton: TitlebarIconButton!
|
|
private var downloadButton: TitlebarIconButton!
|
|
|
private var moreButton: TitlebarIconButton!
|
|
private var moreButton: TitlebarIconButton!
|
|
@@ -218,11 +217,12 @@ final class InAppBrowserWindowController: NSWindowController, NSWindowDelegate {
|
|
|
action: #selector(goHome)
|
|
action: #selector(goHome)
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- // Grid (show launcher)
|
|
|
|
|
- gridButton = makeIconButton(
|
|
|
|
|
- symbolName: "square.grid.2x2",
|
|
|
|
|
- accessibility: "Show Launcher",
|
|
|
|
|
- action: #selector(showLauncher)
|
|
|
|
|
|
|
+ // Widget (placeholder — hook up when widget feature ships)
|
|
|
|
|
+ widgetButton = makeIconButton(
|
|
|
|
|
+ symbolName: "widget.small",
|
|
|
|
|
+ accessibility: "Widget",
|
|
|
|
|
+ action: #selector(widgetTapped),
|
|
|
|
|
+ fallbackSymbolName: "square.on.square"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
// Center site identity (logo + app/site name).
|
|
// Center site identity (logo + app/site name).
|
|
@@ -252,13 +252,6 @@ final class InAppBrowserWindowController: NSWindowController, NSWindowDelegate {
|
|
|
siteIconView.heightAnchor.constraint(equalToConstant: 14),
|
|
siteIconView.heightAnchor.constraint(equalToConstant: 14),
|
|
|
])
|
|
])
|
|
|
|
|
|
|
|
- // Open in external browser
|
|
|
|
|
- openInBrowserButton = makeIconButton(
|
|
|
|
|
- symbolName: "arrow.up.right.square",
|
|
|
|
|
- accessibility: "Open in Browser",
|
|
|
|
|
- action: #selector(openInBrowser)
|
|
|
|
|
- )
|
|
|
|
|
-
|
|
|
|
|
// Hand tool (toggle navigation gestures)
|
|
// Hand tool (toggle navigation gestures)
|
|
|
handButton = makeIconButton(
|
|
handButton = makeIconButton(
|
|
|
symbolName: "hand.raised",
|
|
symbolName: "hand.raised",
|
|
@@ -309,8 +302,7 @@ final class InAppBrowserWindowController: NSWindowController, NSWindowDelegate {
|
|
|
reloadButton.target = self
|
|
reloadButton.target = self
|
|
|
pinButton.target = self
|
|
pinButton.target = self
|
|
|
homeButton.target = self
|
|
homeButton.target = self
|
|
|
- gridButton.target = self
|
|
|
|
|
- openInBrowserButton.target = self
|
|
|
|
|
|
|
+ widgetButton.target = self
|
|
|
handButton.target = self
|
|
handButton.target = self
|
|
|
downloadButton.target = self
|
|
downloadButton.target = self
|
|
|
moreButton.target = self
|
|
moreButton.target = self
|
|
@@ -345,8 +337,7 @@ final class InAppBrowserWindowController: NSWindowController, NSWindowDelegate {
|
|
|
|
|
|
|
|
let rightStack = NSStackView(views: [
|
|
let rightStack = NSStackView(views: [
|
|
|
pinButton,
|
|
pinButton,
|
|
|
- gridButton,
|
|
|
|
|
- openInBrowserButton,
|
|
|
|
|
|
|
+ widgetButton,
|
|
|
handButton,
|
|
handButton,
|
|
|
downloadButton,
|
|
downloadButton,
|
|
|
moreButton,
|
|
moreButton,
|
|
@@ -443,21 +434,12 @@ final class InAppBrowserWindowController: NSWindowController, NSWindowDelegate {
|
|
|
webView.reload()
|
|
webView.reload()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- @objc private func openInBrowser() {
|
|
|
|
|
- guard let url = webView.url else { return }
|
|
|
|
|
- NSWorkspace.shared.open(url)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
@objc private func goHome() {
|
|
@objc private func goHome() {
|
|
|
webView.load(URLRequest(url: initialURL))
|
|
webView.load(URLRequest(url: initialURL))
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- @objc private func showLauncher() {
|
|
|
|
|
- // Bring the main app window (launcher) to front.
|
|
|
|
|
- if let main = NSApp.windows.first {
|
|
|
|
|
- main.makeKeyAndOrderFront(nil)
|
|
|
|
|
- }
|
|
|
|
|
- NSApp.activate(ignoringOtherApps: true)
|
|
|
|
|
|
|
+ @objc private func widgetTapped() {
|
|
|
|
|
+ // Reserved for widget functionality.
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@objc private func togglePinOnTop() {
|
|
@objc private func togglePinOnTop() {
|
|
@@ -497,12 +479,6 @@ final class InAppBrowserWindowController: NSWindowController, NSWindowDelegate {
|
|
|
@objc private func showMoreMenu() {
|
|
@objc private func showMoreMenu() {
|
|
|
let menu = NSMenu()
|
|
let menu = NSMenu()
|
|
|
|
|
|
|
|
- let copyURL = NSMenuItem(title: "Copy URL", action: #selector(copyCurrentURL), keyEquivalent: "c")
|
|
|
|
|
- copyURL.keyEquivalentModifierMask = [.command]
|
|
|
|
|
- menu.addItem(copyURL)
|
|
|
|
|
-
|
|
|
|
|
- menu.addItem(NSMenuItem.separator())
|
|
|
|
|
-
|
|
|
|
|
let reload = NSMenuItem(title: "Reload", action: #selector(reloadPage), keyEquivalent: "r")
|
|
let reload = NSMenuItem(title: "Reload", action: #selector(reloadPage), keyEquivalent: "r")
|
|
|
reload.keyEquivalentModifierMask = [.command]
|
|
reload.keyEquivalentModifierMask = [.command]
|
|
|
menu.addItem(reload)
|
|
menu.addItem(reload)
|
|
@@ -515,10 +491,6 @@ final class InAppBrowserWindowController: NSWindowController, NSWindowDelegate {
|
|
|
downloads.keyEquivalentModifierMask = [.command]
|
|
downloads.keyEquivalentModifierMask = [.command]
|
|
|
menu.addItem(downloads)
|
|
menu.addItem(downloads)
|
|
|
|
|
|
|
|
- let openExternal = NSMenuItem(title: "Open in Default Browser", action: #selector(openInBrowser), keyEquivalent: "o")
|
|
|
|
|
- openExternal.keyEquivalentModifierMask = [.command]
|
|
|
|
|
- menu.addItem(openExternal)
|
|
|
|
|
-
|
|
|
|
|
menu.addItem(NSMenuItem.separator())
|
|
menu.addItem(NSMenuItem.separator())
|
|
|
|
|
|
|
|
let close = NSMenuItem(title: "Close Window", action: #selector(closeWindowFromMenu), keyEquivalent: "w")
|
|
let close = NSMenuItem(title: "Close Window", action: #selector(closeWindowFromMenu), keyEquivalent: "w")
|
|
@@ -531,12 +503,6 @@ final class InAppBrowserWindowController: NSWindowController, NSWindowDelegate {
|
|
|
menu.popUp(positioning: nil, at: location, in: moreButton)
|
|
menu.popUp(positioning: nil, at: location, in: moreButton)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- @objc private func copyCurrentURL() {
|
|
|
|
|
- guard let s = webView.url?.absoluteString, !s.isEmpty else { return }
|
|
|
|
|
- NSPasteboard.general.clearContents()
|
|
|
|
|
- NSPasteboard.general.setString(s, forType: .string)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
@objc private func closeWindowFromMenu() {
|
|
@objc private func closeWindowFromMenu() {
|
|
|
window?.performClose(nil)
|
|
window?.performClose(nil)
|
|
|
}
|
|
}
|