diff --git a/Cocoa/Document.xib b/Cocoa/Document.xib
index c237073..db6e96c 100644
--- a/Cocoa/Document.xib
+++ b/Cocoa/Document.xib
@@ -162,7 +162,7 @@
diff --git a/Cocoa/GBToolbarFieldCell.h b/Cocoa/GBToolbarFieldCell.h
new file mode 100644
index 0000000..e33398a
--- /dev/null
+++ b/Cocoa/GBToolbarFieldCell.h
@@ -0,0 +1,5 @@
+#import
+
+@interface GBToolbarFieldCell : NSSearchFieldCell
+
+@end
diff --git a/Cocoa/GBToolbarFieldCell.m b/Cocoa/GBToolbarFieldCell.m
new file mode 100644
index 0000000..a58e9d3
--- /dev/null
+++ b/Cocoa/GBToolbarFieldCell.m
@@ -0,0 +1,23 @@
+#import "GBToolbarFieldCell.h"
+#import
+
+@interface NSTextFieldCell()
+- (void)textDidChange:(id)sender;
+@end
+
+@implementation GBToolbarFieldCell
+
+- (void)textDidChange:(id)sender
+{
+ IMP imp = [NSTextFieldCell instanceMethodForSelector:_cmd];
+ method_setImplementation(class_getInstanceMethod([GBToolbarFieldCell class], _cmd), imp);
+ ((void(*)(id, SEL, id))imp)(self, _cmd, sender);
+}
+
+- (void)endEditing:(NSText *)textObj
+{
+ IMP imp = [NSTextFieldCell instanceMethodForSelector:_cmd];
+ method_setImplementation(class_getInstanceMethod([GBToolbarFieldCell class], _cmd), imp);
+ ((void(*)(id, SEL, id))imp)(self, _cmd, textObj);
+}
+@end
diff --git a/Cocoa/NSControl+SolariumFixer.m b/Cocoa/SolariumFixer.m
similarity index 74%
rename from Cocoa/NSControl+SolariumFixer.m
rename to Cocoa/SolariumFixer.m
index 0e8c415..079bc22 100644
--- a/Cocoa/NSControl+SolariumFixer.m
+++ b/Cocoa/SolariumFixer.m
@@ -1,7 +1,7 @@
#import
#import
-// Uncomment to debug
+// Comment out to debug
#define NSLog(...)
// Solarium has weird proportions, we need to fix them.
@@ -106,3 +106,51 @@
}
@end
+
+@implementation NSToolbarItem (SolariumFixer)
+
+- (void)awakeFromNib
+{
+ if (@available(macOS 26.0, *)) {
+ NSLog(@"Toolbar item %@ has view %@", self.label, self.view);
+ if ([self.view isKindOfClass:[NSTextField class]]) {
+ NSLog(@"Handling (Text field)");
+ self.bordered = true;
+
+ NSSize maxSize = self.maxSize;
+ maxSize.height = 36;
+ self.maxSize = maxSize;
+
+ NSSize minSize = self.minSize;
+ minSize.height = 36;
+ self.minSize = minSize;
+
+ ((NSTextField *)self.view).backgroundColor = [NSColor clearColor];
+ ((NSTextField *)self.view).bezeled = false;
+ ((NSTextField *)self.view).bordered = true;
+
+ // Work around even more AppKit bugs
+ self.toolbar.displayMode++;
+ self.toolbar.displayMode--;
+ }
+ else if ([self.view isKindOfClass:[NSPopUpButton class]]) {
+ NSLog(@"Handling (Pop up button)");
+ self.bordered = true;
+
+ NSSize maxSize = self.maxSize;
+ maxSize.height = 28;
+ self.maxSize = maxSize;
+
+ NSSize minSize = self.minSize;
+ minSize.height = 28;
+ self.minSize = minSize;
+ }
+ }
+ else if (@available(macOS 11.0, *)) { // While at it, make macOS 11-15 a bit more consistent
+ if ([self.view isKindOfClass:[NSTextField class]]) {
+ ((NSTextField *)self.view).bezelStyle = NSTextFieldRoundedBezel;
+ }
+ }
+}
+
+@end
diff --git a/HexFiend/HFController.m b/HexFiend/HFController.m
index 9d4b1ae..1bb2057 100644
--- a/HexFiend/HFController.m
+++ b/HexFiend/HFController.m
@@ -473,7 +473,7 @@ static inline Class preferredByteArrayClass(void) {
}
- (void)_setSingleSelectedContentsRange:(HFRange)newSelection {
- HFASSERT(HFRangeIsSubrangeOfRange(newSelection, HFRangeMake(0, [self contentsLength])));
+ if (!HFRangeIsSubrangeOfRange(newSelection, HFRangeMake(0, [self contentsLength]))) return;
BOOL selectionChanged;
if ([selectedContentsRanges count] == 1) {
selectionChanged = ! HFRangeEqualsRange([selectedContentsRanges[0] HFRange], newSelection);