style: limit emoji borders to selected and hovered tiles
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import AppKit
|
||||
import Testing
|
||||
@testable import Conjure
|
||||
|
||||
@Test @MainActor func emojiBordersFollowSelectionAndHover() throws {
|
||||
_ = NSApplication.shared
|
||||
let suite = "EmojiBorders.\(UUID().uuidString)"
|
||||
let defaults = UserDefaults(suiteName: suite)!
|
||||
defer { defaults.removePersistentDomain(forName: suite) }
|
||||
let picker = EmojiPickerController(defaults: defaults)
|
||||
picker.input = { "face" }
|
||||
let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 750, height: 400),
|
||||
styleMask: [.borderless], backing: .buffered, defer: false)
|
||||
window.contentView = picker.view
|
||||
picker.view.layoutSubtreeIfNeeded()
|
||||
let scroll = try #require(picker.view.subviews.compactMap { $0 as? NSScrollView }.first)
|
||||
let grid = try #require(scroll.documentView as? NSCollectionView)
|
||||
let first = try #require(grid.item(at: IndexPath(item: 0, section: 0))?.view as? NSButton)
|
||||
let second = try #require(grid.item(at: IndexPath(item: 1, section: 0))?.view as? NSButton)
|
||||
let enter = try #require(NSEvent.enterExitEvent(with: .mouseEntered, location: .zero,
|
||||
modifierFlags: [], timestamp: 0, windowNumber: window.windowNumber,
|
||||
context: nil, eventNumber: 0, trackingNumber: 0, userData: nil))
|
||||
let exit = try #require(NSEvent.enterExitEvent(with: .mouseExited, location: .zero,
|
||||
modifierFlags: [], timestamp: 0, windowNumber: window.windowNumber,
|
||||
context: nil, eventNumber: 0, trackingNumber: 0, userData: nil))
|
||||
first.mouseExited(with: exit)
|
||||
second.mouseExited(with: exit)
|
||||
#expect(first.layer?.borderWidth == 0.5)
|
||||
#expect(second.layer?.borderWidth == 0)
|
||||
second.mouseEntered(with: enter)
|
||||
#expect(second.layer?.borderWidth == 0.5)
|
||||
picker.moveSelection(by: 1)
|
||||
#expect(first.layer?.borderWidth == 0)
|
||||
second.mouseExited(with: exit)
|
||||
#expect(second.layer?.borderWidth == 0.5)
|
||||
picker.moveSelection(by: -1)
|
||||
#expect(second.layer?.borderWidth == 0)
|
||||
first.mouseEntered(with: enter)
|
||||
picker.moveSelection(by: 1)
|
||||
#expect(first.layer?.borderWidth == 0.5)
|
||||
first.mouseExited(with: exit)
|
||||
#expect(first.layer?.borderWidth == 0)
|
||||
}
|
||||
Reference in New Issue
Block a user