Fix compatibility with Catalina and older versions of macOS, improve printer UI

This commit is contained in:
Lior Halphon
2023-12-18 22:41:15 +02:00
parent 00e1c925a4
commit 27d42146ba
3 changed files with 48 additions and 9 deletions

View File

@@ -783,16 +783,22 @@ static unsigned *multiplication_table_for_frequency(unsigned frequency)
if (@available(macOS 11.0, *)) {
self.memoryWindow.toolbarStyle = NSWindowToolbarStyleExpanded;
self.printerFeedWindow.toolbarStyle = NSWindowToolbarStyleUnifiedCompact;
self.printerFeedWindow.toolbar.items[0].image =
self.printerFeedWindow.toolbar.items[1].image =
[NSImage imageWithSystemSymbolName:@"square.and.arrow.down"
accessibilityDescription:@"Save"];
self.printerFeedWindow.toolbar.items[1].image =
self.printerFeedWindow.toolbar.items[2].image =
[NSImage imageWithSystemSymbolName:@"printer"
accessibilityDescription:@"Print"];
self.printerFeedWindow.toolbar.items[0].bordered = false;
self.printerFeedWindow.toolbar.items[1].bordered = false;
self.printerFeedWindow.toolbar.items[2].bordered = false;
}
else {
NSToolbarItem *spinner = self.printerFeedWindow.toolbar.items[0];
[self.printerFeedWindow.toolbar removeItemAtIndex:0];
[self.printerFeedWindow.toolbar insertItemWithItemIdentifier:spinner.itemIdentifier atIndex:2];
[self.printerFeedWindow.toolbar removeItemAtIndex:1];
[self.printerFeedWindow.toolbar insertItemWithItemIdentifier:NSToolbarPrintItemIdentifier
atIndex:1];
[self.printerFeedWindow.toolbar insertItemWithItemIdentifier:NSToolbarFlexibleSpaceItemIdentifier
atIndex:2];
}
@@ -2239,9 +2245,11 @@ enum GBWindowResizeAction
height:_currentPrinterImageData.length / 160 / sizeof(imageBytes[0])
scale:2.0];
NSRect frame = self.printerFeedWindow.frame;
double oldHeight = frame.size.height;
frame.size = self.feedImageView.image.size;
[self.printerFeedWindow setContentMaxSize:frame.size];
frame.size.height += self.printerFeedWindow.frame.size.height - self.printerFeedWindow.contentView.frame.size.height;
frame.origin.y -= frame.size.height - oldHeight;
[self.printerFeedWindow setFrame:frame display:false animate: self.printerFeedWindow.isVisible];
[self.printerFeedWindow orderFront:NULL];
});

View File

@@ -694,21 +694,27 @@
<action selector="savePrinterFeed:" target="-2" id="Dm3-h0-ch4"/>
</connections>
</toolbarItem>
<toolbarItem implicitItemIdentifier="NSToolbarPrintItem" explicitItemIdentifier="Print" id="mtd-zS-DXa"/>
<toolbarItem implicitItemIdentifier="0496ED81-2A03-445D-9818-97386BC78CBC" label="Print" paletteLabel="Print" tag="-1" image="printer" catalog="system" bordered="YES" id="L6N-6G-UWl">
<size key="minSize" width="30" height="25"/>
<size key="maxSize" width="30" height="25"/>
<connections>
<action selector="printDocument:" target="-1" id="RLy-7k-iIR"/>
</connections>
</toolbarItem>
<toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="AoG-LH-J4b"/>
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="Q0x-n5-Q2Y"/>
<toolbarItem implicitItemIdentifier="E8F74F8F-6DE2-4774-A690-F71D92CD932E" label="" paletteLabel="" tag="-1" sizingBehavior="auto" id="CJX-Ff-7iQ">
<toolbarItem implicitItemIdentifier="E8F74F8F-6DE2-4774-A690-F71D92CD932E" label="" paletteLabel="" tag="-1" title="wtf" sizingBehavior="auto" id="CJX-Ff-7iQ">
<nil key="toolTip"/>
<progressIndicator key="view" wantsLayer="YES" maxValue="100" displayedWhenStopped="NO" indeterminate="YES" style="spinning" id="rrz-Uh-Nae">
<rect key="frame" x="0.0" y="14" width="32" height="32"/>
<progressIndicator key="view" wantsLayer="YES" maxValue="100" displayedWhenStopped="NO" indeterminate="YES" controlSize="small" style="spinning" id="rrz-Uh-Nae">
<rect key="frame" x="0.0" y="14" width="16" height="16"/>
<autoresizingMask key="autoresizingMask"/>
</progressIndicator>
</toolbarItem>
</allowedToolbarItems>
<defaultToolbarItems>
<toolbarItem reference="CBz-1N-o0Q"/>
<toolbarItem reference="mtd-zS-DXa"/>
<toolbarItem reference="CJX-Ff-7iQ"/>
<toolbarItem reference="CBz-1N-o0Q"/>
<toolbarItem reference="L6N-6G-UWl"/>
</defaultToolbarItems>
</toolbar>
<point key="canvasLocation" x="-159" y="356"/>
@@ -972,5 +978,6 @@
<image name="NSStopProgressFreestandingTemplate" width="15" height="15"/>
<image name="NextTemplate" width="14" height="14"/>
<image name="StepTemplate" width="14" height="14"/>
<image name="printer" catalog="system" width="18" height="16"/>
</resources>
</document>

View File

@@ -0,0 +1,24 @@
#import <AppKit/AppKit.h>
#import <objc/runtime.h>
static id nop(id self, SEL _cmd)
{
return nil;
}
static double blah(id self, SEL _cmd)
{
return 80.0;
}
@implementation NSToolbarItem (NoOverflow)
+ (void)load
{
// Prevent collapsing toolbar items into menu items, they don't work in that form
method_setImplementation(class_getInstanceMethod(self, @selector(menuFormRepresentation)), (IMP)nop);
// Prevent over-agressive collapsing of the Printer Feed menu
method_setImplementation(class_getInstanceMethod(NSClassFromString(@"NSToolbarTitleView"), @selector(minSize)), (IMP)blah);
}
@end