mirror of
https://github.com/xi-editor/xi-mac.git
synced 2024-10-05 19:49:12 +03:00
Fix #475: Add status bar to EditView hiearchy
This makes the status bar a part of the edit view hierachy, causing it to no longer block the edit view.
This commit is contained in:
parent
89b87397a8
commit
8a8a1e0d8b
@ -82,7 +82,9 @@ class EditViewController: NSViewController, EditViewDataSource, FindDelegate, Sc
|
|||||||
@IBOutlet weak var editContainerView: EditContainerView!
|
@IBOutlet weak var editContainerView: EditContainerView!
|
||||||
@IBOutlet var editView: EditView!
|
@IBOutlet var editView: EditView!
|
||||||
@IBOutlet weak var shadowView: ShadowView!
|
@IBOutlet weak var shadowView: ShadowView!
|
||||||
|
@IBOutlet weak var statusBar: StatusBar!
|
||||||
|
|
||||||
|
@IBOutlet weak var statusBarHeight: NSLayoutConstraint!
|
||||||
@IBOutlet weak var editViewHeight: NSLayoutConstraint!
|
@IBOutlet weak var editViewHeight: NSLayoutConstraint!
|
||||||
@IBOutlet weak var editViewWidth: NSLayoutConstraint!
|
@IBOutlet weak var editViewWidth: NSLayoutConstraint!
|
||||||
|
|
||||||
@ -227,8 +229,6 @@ class EditViewController: NSViewController, EditViewDataSource, FindDelegate, Sc
|
|||||||
|
|
||||||
var hoverEvent: NSEvent?
|
var hoverEvent: NSEvent?
|
||||||
|
|
||||||
let statusBar = StatusBar(frame: .zero)
|
|
||||||
|
|
||||||
// Popover that manages hover views.
|
// Popover that manages hover views.
|
||||||
lazy var infoPopover: NSPopover = {
|
lazy var infoPopover: NSPopover = {
|
||||||
let popover = NSPopover()
|
let popover = NSPopover()
|
||||||
@ -245,6 +245,7 @@ class EditViewController: NSViewController, EditViewDataSource, FindDelegate, Sc
|
|||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
|
statusBar.delegate = self
|
||||||
shadowView.wantsLayer = true
|
shadowView.wantsLayer = true
|
||||||
editView.dataSource = self
|
editView.dataSource = self
|
||||||
editContainerView.contextMenu = contextMenu
|
editContainerView.contextMenu = contextMenu
|
||||||
@ -272,14 +273,7 @@ class EditViewController: NSViewController, EditViewDataSource, FindDelegate, Sc
|
|||||||
|
|
||||||
func setupStatusBar() {
|
func setupStatusBar() {
|
||||||
statusBar.hasUnifiedTitlebar = unifiedTitlebar
|
statusBar.hasUnifiedTitlebar = unifiedTitlebar
|
||||||
self.view.addSubview(statusBar)
|
hideStatusBar()
|
||||||
|
|
||||||
NSLayoutConstraint.activate([
|
|
||||||
statusBar.heightAnchor.constraint(equalToConstant: statusBar.statusBarHeight),
|
|
||||||
statusBar.leadingAnchor.constraint(equalTo: editView.leadingAnchor),
|
|
||||||
statusBar.trailingAnchor.constraint(equalTo: editView.trailingAnchor),
|
|
||||||
statusBar.bottomAnchor.constraint(equalTo: editView.bottomAnchor)
|
|
||||||
])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateGutterWidth() {
|
func updateGutterWidth() {
|
||||||
@ -494,10 +488,12 @@ class EditViewController: NSViewController, EditViewDataSource, FindDelegate, Sc
|
|||||||
|
|
||||||
override func uppercaseWord(_ sender: Any?) {
|
override func uppercaseWord(_ sender: Any?) {
|
||||||
xiView.uppercase()
|
xiView.uppercase()
|
||||||
|
self.showStatusBar()
|
||||||
}
|
}
|
||||||
|
|
||||||
override func lowercaseWord(_ sender: Any?) {
|
override func lowercaseWord(_ sender: Any?) {
|
||||||
xiView.lowercase()
|
xiView.lowercase()
|
||||||
|
self.hideStatusBar()
|
||||||
}
|
}
|
||||||
|
|
||||||
override func capitalizeWord(_ sender: Any?) {
|
override func capitalizeWord(_ sender: Any?) {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15702"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<scenes>
|
<scenes>
|
||||||
@ -61,27 +61,36 @@
|
|||||||
</constraints>
|
</constraints>
|
||||||
</clipView>
|
</clipView>
|
||||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="hEG-a6-BYd">
|
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="hEG-a6-BYd">
|
||||||
<rect key="frame" x="0.0" y="255" width="465" height="15"/>
|
<rect key="frame" x="0.0" y="231" width="465" height="15"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="O02-Lc-5gg" customClass="MarkerBar" customModule="XiEditor" customModuleProvider="target">
|
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="O02-Lc-5gg" customClass="MarkerBar" customModule="XiEditor" customModuleProvider="target">
|
||||||
<rect key="frame" x="465" y="0.0" width="15" height="255"/>
|
<rect key="frame" x="465" y="0.0" width="15" height="231"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
|
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Tjs-fk-d3S" customClass="StatusBar" customModule="XiEditor" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="480" height="0.0"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" id="DO3-dq-Ibg"/>
|
||||||
|
</constraints>
|
||||||
|
</customView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="x8W-KD-KOP" firstAttribute="leading" secondItem="q1P-kd-995" secondAttribute="leading" id="0m0-0O-Llk"/>
|
<constraint firstItem="x8W-KD-KOP" firstAttribute="leading" secondItem="q1P-kd-995" secondAttribute="leading" id="0m0-0O-Llk"/>
|
||||||
<constraint firstItem="x8W-KD-KOP" firstAttribute="top" secondItem="q1P-kd-995" secondAttribute="top" id="4lN-9b-wSx"/>
|
<constraint firstItem="x8W-KD-KOP" firstAttribute="top" secondItem="q1P-kd-995" secondAttribute="top" id="4lN-9b-wSx"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="q1P-kd-995" secondAttribute="trailing" id="5IG-vx-2rb"/>
|
<constraint firstAttribute="trailing" secondItem="q1P-kd-995" secondAttribute="trailing" id="5IG-vx-2rb"/>
|
||||||
|
<constraint firstItem="Tjs-fk-d3S" firstAttribute="leading" secondItem="3ye-5b-Ab2" secondAttribute="leading" id="Cav-5o-0ue"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="Tjs-fk-d3S" secondAttribute="bottom" id="F95-nZ-7H5"/>
|
||||||
<constraint firstItem="Qwv-ci-fVA" firstAttribute="leading" secondItem="q1P-kd-995" secondAttribute="leading" id="Pyq-kX-0wa"/>
|
<constraint firstItem="Qwv-ci-fVA" firstAttribute="leading" secondItem="q1P-kd-995" secondAttribute="leading" id="Pyq-kX-0wa"/>
|
||||||
<constraint firstItem="x8W-KD-KOP" firstAttribute="bottom" secondItem="q1P-kd-995" secondAttribute="bottom" id="Qak-2E-Fy6"/>
|
<constraint firstItem="x8W-KD-KOP" firstAttribute="bottom" secondItem="q1P-kd-995" secondAttribute="bottom" id="Qak-2E-Fy6"/>
|
||||||
<constraint firstItem="Qwv-ci-fVA" firstAttribute="top" secondItem="q1P-kd-995" secondAttribute="top" id="Qwh-xz-kUZ"/>
|
<constraint firstItem="Qwv-ci-fVA" firstAttribute="top" secondItem="q1P-kd-995" secondAttribute="top" id="Qwh-xz-kUZ"/>
|
||||||
<constraint firstItem="Qwv-ci-fVA" firstAttribute="bottom" secondItem="q1P-kd-995" secondAttribute="bottom" id="Sdy-8S-2NP"/>
|
<constraint firstItem="Qwv-ci-fVA" firstAttribute="bottom" secondItem="q1P-kd-995" secondAttribute="bottom" id="Sdy-8S-2NP"/>
|
||||||
|
<constraint firstItem="Tjs-fk-d3S" firstAttribute="top" secondItem="q1P-kd-995" secondAttribute="bottom" id="ZnH-DY-sje"/>
|
||||||
<constraint firstItem="x8W-KD-KOP" firstAttribute="trailing" secondItem="q1P-kd-995" secondAttribute="trailing" id="dL4-Ba-yMB"/>
|
<constraint firstItem="x8W-KD-KOP" firstAttribute="trailing" secondItem="q1P-kd-995" secondAttribute="trailing" id="dL4-Ba-yMB"/>
|
||||||
<constraint firstItem="q1P-kd-995" firstAttribute="top" secondItem="3ye-5b-Ab2" secondAttribute="top" id="gHb-9s-5Ki"/>
|
<constraint firstItem="q1P-kd-995" firstAttribute="top" secondItem="3ye-5b-Ab2" secondAttribute="top" id="gWG-JW-SJf"/>
|
||||||
<constraint firstItem="q1P-kd-995" firstAttribute="leading" secondItem="3ye-5b-Ab2" secondAttribute="leading" id="kaS-IB-LV9"/>
|
<constraint firstItem="q1P-kd-995" firstAttribute="leading" secondItem="3ye-5b-Ab2" secondAttribute="leading" id="kaS-IB-LV9"/>
|
||||||
<constraint firstAttribute="bottom" secondItem="q1P-kd-995" secondAttribute="bottom" id="ngA-1s-M67"/>
|
<constraint firstAttribute="trailing" secondItem="Tjs-fk-d3S" secondAttribute="trailing" id="kg5-PT-wI0"/>
|
||||||
<constraint firstItem="Qwv-ci-fVA" firstAttribute="trailing" secondItem="q1P-kd-995" secondAttribute="trailing" id="w93-aW-WKu"/>
|
<constraint firstItem="Qwv-ci-fVA" firstAttribute="trailing" secondItem="q1P-kd-995" secondAttribute="trailing" id="w93-aW-WKu"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
@ -92,6 +101,8 @@
|
|||||||
<outlet property="editViewWidth" destination="1Gd-zC-FVY" id="DtT-d0-KdH"/>
|
<outlet property="editViewWidth" destination="1Gd-zC-FVY" id="DtT-d0-KdH"/>
|
||||||
<outlet property="scrollView" destination="Qwv-ci-fVA" id="4cE-10-pSP"/>
|
<outlet property="scrollView" destination="Qwv-ci-fVA" id="4cE-10-pSP"/>
|
||||||
<outlet property="shadowView" destination="x8W-KD-KOP" id="mme-7Z-x1H"/>
|
<outlet property="shadowView" destination="x8W-KD-KOP" id="mme-7Z-x1H"/>
|
||||||
|
<outlet property="statusBar" destination="Tjs-fk-d3S" id="MX5-p8-dzb"/>
|
||||||
|
<outlet property="statusBarHeight" destination="DO3-dq-Ibg" id="JwM-iA-km2"/>
|
||||||
<segue destination="9Ak-VM-8lJ" kind="modal" identifier="UserInputSegue" id="GqW-PV-ZCy"/>
|
<segue destination="9Ak-VM-8lJ" kind="modal" identifier="UserInputSegue" id="GqW-PV-ZCy"/>
|
||||||
</connections>
|
</connections>
|
||||||
</viewController>
|
</viewController>
|
||||||
@ -121,7 +132,7 @@ DQ
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<textField hidden="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Di9-5Q-3Ia">
|
<textField hidden="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Di9-5Q-3Ia">
|
||||||
<rect key="frame" x="20" y="20" width="275" height="22"/>
|
<rect key="frame" x="20" y="20" width="275" height="21"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="zlO-6u-liO">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="zlO-6u-liO">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@ -142,7 +153,7 @@ Gw
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<comboBox hidden="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AHD-SX-Tuj">
|
<comboBox hidden="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AHD-SX-Tuj">
|
||||||
<rect key="frame" x="21" y="16" width="277" height="26"/>
|
<rect key="frame" x="21" y="16" width="277" height="25"/>
|
||||||
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="nnP-RF-Vev">
|
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="nnP-RF-Vev">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
@ -303,7 +314,7 @@ Gw
|
|||||||
</subviews>
|
</subviews>
|
||||||
<visibilityPriorities>
|
<visibilityPriorities>
|
||||||
<integer value="1000"/>
|
<integer value="1000"/>
|
||||||
<real value="1000"/>
|
<integer value="1000"/>
|
||||||
</visibilityPriorities>
|
</visibilityPriorities>
|
||||||
<customSpacing>
|
<customSpacing>
|
||||||
<real value="3.4028234663852886e+38"/>
|
<real value="3.4028234663852886e+38"/>
|
||||||
@ -386,7 +397,7 @@ Gw
|
|||||||
<rect key="frame" x="4" y="-1" width="32" height="19"/>
|
<rect key="frame" x="4" y="-1" width="32" height="19"/>
|
||||||
<buttonCell key="cell" type="roundRect" title="+" bezelStyle="roundedRect" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8uK-5I-cZg">
|
<buttonCell key="cell" type="roundRect" title="+" bezelStyle="roundedRect" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8uK-5I-cZg">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system" size="16"/>
|
<font key="font" metaFont="label" size="16"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="addSearchField:" target="uoL-yg-E2H" id="0zi-0Z-ZCs"/>
|
<action selector="addSearchField:" target="uoL-yg-E2H" id="0zi-0Z-ZCs"/>
|
||||||
@ -396,7 +407,7 @@ Gw
|
|||||||
<rect key="frame" x="38" y="-1" width="31" height="19"/>
|
<rect key="frame" x="38" y="-1" width="31" height="19"/>
|
||||||
<buttonCell key="cell" type="roundRect" title="-" bezelStyle="roundedRect" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="0dQ-No-w5x">
|
<buttonCell key="cell" type="roundRect" title="-" bezelStyle="roundedRect" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="0dQ-No-w5x">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system" size="16"/>
|
<font key="font" metaFont="label" size="16"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="removeSearchField:" target="uoL-yg-E2H" id="9Wq-QC-w07"/>
|
<action selector="removeSearchField:" target="uoL-yg-E2H" id="9Wq-QC-w07"/>
|
||||||
|
@ -15,6 +15,11 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import Cocoa
|
import Cocoa
|
||||||
|
|
||||||
|
protocol StatusBarDelegate: class {
|
||||||
|
func showStatusBar()
|
||||||
|
func hideStatusBar()
|
||||||
|
}
|
||||||
|
|
||||||
enum StatusItemAlignment: String {
|
enum StatusItemAlignment: String {
|
||||||
case left = "left"
|
case left = "left"
|
||||||
case right = "right"
|
case right = "right"
|
||||||
@ -52,6 +57,8 @@ class StatusItem: NSTextField {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class StatusBar: NSView {
|
class StatusBar: NSView {
|
||||||
|
|
||||||
|
weak var delegate: StatusBarDelegate?
|
||||||
|
|
||||||
var currentItems = [String : StatusItem]()
|
var currentItems = [String : StatusItem]()
|
||||||
var hiddenItems: [StatusItem] {
|
var hiddenItems: [StatusItem] {
|
||||||
@ -80,8 +87,9 @@ class StatusBar: NSView {
|
|||||||
var backgroundColor: NSColor = NSColor.windowBackgroundColor
|
var backgroundColor: NSColor = NSColor.windowBackgroundColor
|
||||||
var itemTextColor: NSColor = NSColor.labelColor
|
var itemTextColor: NSColor = NSColor.labelColor
|
||||||
var borderColor: NSColor = NSColor.systemGray
|
var borderColor: NSColor = NSColor.systemGray
|
||||||
|
|
||||||
|
static let statusBarHeight: CGFloat = 20
|
||||||
let statusBarPadding: CGFloat = 10
|
let statusBarPadding: CGFloat = 10
|
||||||
let statusBarHeight: CGFloat = 24
|
|
||||||
let firstItemMargin: CGFloat = 5
|
let firstItemMargin: CGFloat = 5
|
||||||
|
|
||||||
// Difference (in points) to compensate for when status bar is resized
|
// Difference (in points) to compensate for when status bar is resized
|
||||||
@ -96,21 +104,12 @@ class StatusBar: NSView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override var isFlipped: Bool {
|
override var isFlipped: Bool {
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
override init(frame frameRect: NSRect) {
|
super.init(coder: coder)
|
||||||
super.init(frame: .zero)
|
|
||||||
self.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
self.isHidden = true
|
|
||||||
updateStatusBarVisibility()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(*, unavailable)
|
|
||||||
required init?(coder decoder: NSCoder) {
|
|
||||||
fatalError("init(coder:) has not been implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Adds a status bar item.
|
// Adds a status bar item.
|
||||||
func addStatusItem(_ item: StatusItem) {
|
func addStatusItem(_ item: StatusItem) {
|
||||||
if let existingItem = currentItems[item.key] {
|
if let existingItem = currentItems[item.key] {
|
||||||
@ -219,14 +218,16 @@ class StatusBar: NSView {
|
|||||||
func updateStatusBarVisibility() {
|
func updateStatusBarVisibility() {
|
||||||
if !currentItems.isEmpty {
|
if !currentItems.isEmpty {
|
||||||
self.hideTimer?.invalidate()
|
self.hideTimer?.invalidate()
|
||||||
self.isHidden = false
|
delegate?.showStatusBar()
|
||||||
} else if !self.isHidden {
|
} else if !self.isHidden {
|
||||||
// Wait a moment before hiding the bar to avoid blinking in the case
|
// Wait a moment before hiding the bar to avoid blinking in the case
|
||||||
// that a single item is added and removed repeatedly in rapid succession.
|
// that a single item is added and removed repeatedly in rapid succession.
|
||||||
if #available(OSX 10.12, *) {
|
if #available(OSX 10.12, *) {
|
||||||
hideTimer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: false) { _ in self.isHidden = true }
|
hideTimer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: false) { _ in
|
||||||
|
self.delegate?.hideStatusBar()
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self.isHidden = true
|
delegate?.hideStatusBar()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -285,5 +286,14 @@ class StatusBar: NSView {
|
|||||||
path.line(to: CGPoint(x: dirtyRect.maxX, y: dirtyRect.minY))
|
path.line(to: CGPoint(x: dirtyRect.maxX, y: dirtyRect.minY))
|
||||||
path.stroke()
|
path.stroke()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension EditViewController: StatusBarDelegate {
|
||||||
|
func showStatusBar() {
|
||||||
|
statusBarHeight.constant = StatusBar.statusBarHeight
|
||||||
|
}
|
||||||
|
|
||||||
|
func hideStatusBar() {
|
||||||
|
statusBarHeight.constant = 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit a58509934eeab8dc10a0ccf8b68b6d10c78a856c
|
Subproject commit a4c82f26056bebd05627565beb0089e7ca14e1d1
|
Loading…
Reference in New Issue
Block a user