Revision: 16437
http://sourceforge.net/p/skim-app/code/16437
Author: hofman
Date: 2026-09-09 21:30:54 +0000 (Wed, 09 Sep 2026)
Log Message:
-----------
Add Turkish localization files to subprojects
Modified Paths:
--------------
trunk/NSWindowController_SKExtensions.m
trunk/NSWindow_SKExtensions.h
trunk/NSWindow_SKExtensions.m
trunk/QuickLook-Skim/QuickLook-Skim.xcodeproj/project.pbxproj
trunk/SKMainWindowController.m
trunk/SKMainWindowController_UI.m
trunk/SkimImporter/SkimImporter.xcodeproj/project.pbxproj
trunk/SkimNotes/SkimNotes.xcodeproj/project.pbxproj
trunk/SkimTransitions/SkimTransitions.xcodeproj/project.pbxproj
Modified: trunk/NSWindowController_SKExtensions.m
===================================================================
--- trunk/NSWindowController_SKExtensions.m 2026-09-08 17:18:47 UTC (rev
16436)
+++ trunk/NSWindowController_SKExtensions.m 2026-09-09 21:30:54 UTC (rev
16437)
@@ -40,6 +40,7 @@
#import "NSPointerArray_SKExtensions.h"
#import "NSPointerFunctions_SKExtensions.h"
#import "NSGeometry_SKExtensions.h"
+#import "NSWindow_SKExtensions.h"
@implementation NSWindowController (SKExtensions)
@@ -54,8 +55,8 @@
NSPoint point;
[self setShouldCascadeWindows:NO];
- [window setFrameUsingName:name];
- if ([window setFrameAutosaveName:name] || pointPtr == NULL) {
+ [window setSafeFrameUsingName:name];
+ if ([window setSafeFrameAutosaveName:name] || pointPtr == NULL) {
point = SKTopLeftPoint([window frame]);
} else {
point = *pointPtr;
Modified: trunk/NSWindow_SKExtensions.h
===================================================================
--- trunk/NSWindow_SKExtensions.h 2026-09-08 17:18:47 UTC (rev 16436)
+++ trunk/NSWindow_SKExtensions.h 2026-09-09 21:30:54 UTC (rev 16437)
@@ -54,6 +54,12 @@
- (BOOL)firstResponderIsDescendantOf:(NSView *)aView;
+- (void)saveSafeFrameUsingName:(NSString *)name;
+- (BOOL)setSafeFrameUsingName:(nullable NSString *)name;
+
+- (nullable NSString *)safeFrameAutosaveName;
+- (BOOL)setSafeFrameAutosaveName:(nullable NSString *)name;
+
@end
NS_ASSUME_NONNULL_END
Modified: trunk/NSWindow_SKExtensions.m
===================================================================
--- trunk/NSWindow_SKExtensions.m 2026-09-08 17:18:47 UTC (rev 16436)
+++ trunk/NSWindow_SKExtensions.m 2026-09-09 21:30:54 UTC (rev 16437)
@@ -39,9 +39,63 @@
#import "NSWindow_SKExtensions.h"
#import "NSDocument_SKExtensions.h"
#import "NSString_SKExtensions.h"
+#import <objc/objc-runtime.h>
@implementation NSWindow (SKExtensions)
+static NSMutableSet *autosaveNames = nil;
+
+static char SKFrameAutosaveNameKey;
+
+- (void)handleAutosavedFrameDidChangeNotification:(NSNotification *)note {
+ NSString *name = [self safeFrameAutosaveName];
+ if ([name length])
+ [self saveSafeFrameUsingName:name];
+}
+
+- (void)saveSafeFrameUsingName:(NSString *)name {
+ NSString *key = [NSString stringWithFormat:@"NSWindow Frame %@", name];
+ NSString *string = [self stringWithSavedFrame];
+ [[NSUserDefaults standardUserDefaults] setObject:string forKey:key];
+}
+
+- (BOOL)setSafeFrameUsingName:(NSString *)name {
+ NSString *key = [NSString stringWithFormat:@"NSWindow Frame %@", name];
+ NSString *string = [[NSUserDefaults standardUserDefaults]
objectForKey:key];
+ if (string == nil)
+ return NO;
+ [self setFrameFromString:string];
+ return YES;
+}
+
+- (NSString *)safeFrameAutosaveName {
+ return objc_getAssociatedObject(self, &SKFrameAutosaveNameKey);
+}
+
+- (BOOL)setSafeFrameAutosaveName:(NSString *)name {
+ NSString *currentName = [self safeFrameAutosaveName];
+ if ([name ?: @"" isEqualToString:currentName ?: @""])
+ return YES;
+ NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
+ if ([currentName length]) {
+ [autosaveNames removeObject:currentName];
+ objc_setAssociatedObject(self, &SKFrameAutosaveNameKey, nil,
OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+ [nc removeObserver:self name:NSWindowDidMoveNotification object:self];
+ [nc removeObserver:self name:NSWindowDidResizeNotification
object:self];
+ }
+ if ([name length] == 0 || [autosaveNames containsObject:name])
+ return NO;
+ if (autosaveNames == nil)
+ autosaveNames = [NSMutableSet set];
+ [autosaveNames addObject:name];
+ objc_setAssociatedObject(self, &SKFrameAutosaveNameKey, name,
OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+ if ([self setSafeFrameUsingName:name] == NO)
+ [self saveSafeFrameUsingName:name];
+ [nc addObserver:self
selector:@selector(handleAutosavedFrameDidChangeNotification:)
name:NSWindowDidMoveNotification object:self];
+ [nc addObserver:self
selector:@selector(handleAutosavedFrameDidChangeNotification:)
name:NSWindowDidResizeNotification object:self];
+ return YES;
+}
+
+ (void)addTabs:(NSArray *)tabInfos forWindows:(NSArray *)windows {
if ([windows count] < 2)
return;
Modified: trunk/QuickLook-Skim/QuickLook-Skim.xcodeproj/project.pbxproj
===================================================================
--- trunk/QuickLook-Skim/QuickLook-Skim.xcodeproj/project.pbxproj
2026-09-08 17:18:47 UTC (rev 16436)
+++ trunk/QuickLook-Skim/QuickLook-Skim.xcodeproj/project.pbxproj
2026-09-09 21:30:54 UTC (rev 16437)
@@ -44,6 +44,7 @@
CE1632CD1582ACE000CFF419 /* zh_CN */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = zh_CN; path =
zh_CN.lproj/InfoPlist.strings; sourceTree = "<group>"; };
CE4F80E90CFB06EE00DBEA14 /* SKQLConverter.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
SKQLConverter.h; sourceTree = "<group>"; };
CE4F80EA0CFB06EE00DBEA14 /* SKQLConverter.m */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path
= SKQLConverter.m; sourceTree = "<group>"; };
+ CE6E4B1D305206CA00910DD5 /* tr */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = tr; path =
tr.lproj/InfoPlist.strings; sourceTree = "<group>"; };
CE82D0AA0ED347B100020950 /* Ink.png */ = {isa =
PBXFileReference; lastKnownFileType = image.png; path = Ink.png; sourceTree =
"<group>"; };
CE861AAD2A0AABE6002FFA1D /* Widget.png */ = {isa =
PBXFileReference; lastKnownFileType = image.png; path = Widget.png; sourceTree
= "<group>"; };
CE90B6602B4028DA00187C8F /* Skim-QuickLook.xcconfig */ = {isa =
PBXFileReference; lastKnownFileType = text.xcconfig; path =
"Skim-QuickLook.xcconfig"; sourceTree = "<group>"; };
@@ -224,6 +225,7 @@
zh_TW,
pl,
zh_CN,
+ tr,
);
mainGroup = 089C166AFE841209C02AAC07 /* QuickLookSkim
*/;
projectDirPath = "";
@@ -285,15 +287,16 @@
children = (
089C167EFE841241C02AAC07 /* en */,
CECB02690DC5EB2D0000B16B /* nl */,
+ CECB026C0DC5EB3B0000B16B /* de */,
+ CECB026B0DC5EB370000B16B /* fr */,
CECB026A0DC5EB320000B16B /* it */,
- CECB026B0DC5EB370000B16B /* fr */,
- CECB026C0DC5EB3B0000B16B /* de */,
- CECB026D0DC5EB3E0000B16B /* ru */,
CECB027F0DC5EB5D0000B16B /* es */,
- CEB5409B0F261EEF00723C1F /* zh_TW */,
CEF8779E11905C53006436A2 /* pl */,
+ CECB026D0DC5EB3E0000B16B /* ru */,
+ CE6E4B1D305206CA00910DD5 /* tr */,
CE157F3512D4EE6900515B85 /* ja */,
CE1632CD1582ACE000CFF419 /* zh_CN */,
+ CEB5409B0F261EEF00723C1F /* zh_TW */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2026-09-08 17:18:47 UTC (rev 16436)
+++ trunk/SKMainWindowController.m 2026-09-09 21:30:54 UTC (rev 16437)
@@ -311,6 +311,8 @@
[noteTypeSheetController setDelegate:nil];
[[pdfView document] setContainingDocument:nil];
[self setPresentationNotesDocument:nil];
+ if ([[[self window] safeFrameAutosaveName] length])
+ [[self window] setSafeFrameAutosaveName:nil];
}
- (void)windowDidLoad{
@@ -2757,7 +2759,7 @@
[toolbarController leftSidePaneDidShowOrHide:[item
isCollapsed] == NO];
else if ([item viewController] == rightSideController)
[toolbarController rightSidePaneDidShowOrHide:[item
isCollapsed] == NO];
- if ([[[self window] frameAutosaveName] length])
+ if (0&[[[self window] frameAutosaveName] length])
[self performSelectorOnce:@selector(sidePaneWidthDidChange)
afterDelay:0.0];
}
Modified: trunk/SKMainWindowController_UI.m
===================================================================
--- trunk/SKMainWindowController_UI.m 2026-09-08 17:18:47 UTC (rev 16436)
+++ trunk/SKMainWindowController_UI.m 2026-09-09 21:30:54 UTC (rev 16437)
@@ -88,6 +88,7 @@
#import "SKBookmarkController.h"
#import "SKNoteToolbarController.h"
#import "SKPresentationNotesAuxiliary.h"
+#import "NSWindow_SKExtensions.h"
#define NOTES_KEY @"notes"
#define SNAPSHOTS_KEY @"snapshots"
@@ -2137,11 +2138,11 @@
[nc addObserver:self
selector:@selector(handlePageLabelsChangedNotification:)
name:SKPDFPageLabelsChangedNotification
object:nil];
// NSSplitView
- if ([[[self window] frameAutosaveName] length]) {
+ if ([[[self window] safeFrameAutosaveName] length]) {
[nc addObserver:self
selector:@selector(handleSidePaneViewFrameDidChangeNotification:)
- name:NSViewFrameDidChangeNotification
object:leftSideController.view];
- [nc addObserver:self
selector:@selector(handleSidePaneViewFrameDidChangeNotification:)
- name:NSViewFrameDidChangeNotification
object:rightSideController.view];
+ name:NSSplitViewDidResizeSubviewsNotification
object:splitViewController.splitView];
+ //[nc addObserver:self
selector:@selector(handleSidePaneViewFrameDidChangeNotification:)
+ // name:NSViewFrameDidChangeNotification
object:rightSideController.view];
}
}
Modified: trunk/SkimImporter/SkimImporter.xcodeproj/project.pbxproj
===================================================================
--- trunk/SkimImporter/SkimImporter.xcodeproj/project.pbxproj 2026-09-08
17:18:47 UTC (rev 16436)
+++ trunk/SkimImporter/SkimImporter.xcodeproj/project.pbxproj 2026-09-09
21:30:54 UTC (rev 16437)
@@ -113,6 +113,8 @@
CE4F972B0CFB4B9D00DBEA14 /* ru */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = ru; path =
ru.lproj/InfoPlist.strings; sourceTree = "<group>"; };
CE68C69E0CEF8A3C00B082F1 /* de */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = de; path =
de.lproj/schema.strings; sourceTree = "<group>"; };
CE68C6A10CEF8A4300B082F1 /* de */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = de; path =
de.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ CE6E4B08305205E900910DD5 /* tr */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = tr; path =
tr.lproj/schema.strings; sourceTree = "<group>"; };
+ CE6E4B09305205E900910DD5 /* tr */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = tr; path =
tr.lproj/InfoPlist.strings; sourceTree = "<group>"; };
CE90B6692B402C6400187C8F /* Skim-Importer.xcconfig */ = {isa =
PBXFileReference; lastKnownFileType = text.xcconfig; path =
"Skim-Importer.xcconfig"; sourceTree = "<group>"; };
CEB540AF0F261F1F00723C1F /* zh_TW */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = zh_TW; path =
zh_TW.lproj/InfoPlist.strings; sourceTree = "<group>"; };
CEB540B00F261F1F00723C1F /* zh_TW */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = zh_TW; path =
zh_TW.lproj/schema.strings; sourceTree = "<group>"; };
@@ -294,6 +296,7 @@
zh_TW,
pl,
zh_CN,
+ tr,
);
mainGroup = 089C166AFE841209C02AAC07 /* SkimImporter */;
projectDirPath = "";
@@ -428,15 +431,16 @@
children = (
089C167EFE841241C02AAC07 /* en */,
CEFD6C660C01EF820027B933 /* nl */,
+ CE68C6A10CEF8A4300B082F1 /* de */,
+ CECD97A50C57A40C0026AAEC /* fr */,
CEFD6C670C01EF850027B933 /* it */,
- CECD97A50C57A40C0026AAEC /* fr */,
CEC4BE4B0CA90A9700299397 /* es */,
- CE68C6A10CEF8A4300B082F1 /* de */,
+ CEF877B511905CB1006436A2 /* pl */,
CE4F972B0CFB4B9D00DBEA14 /* ru */,
- CEB540AF0F261F1F00723C1F /* zh_TW */,
- CEF877B511905CB1006436A2 /* pl */,
+ CE6E4B09305205E900910DD5 /* tr */,
CE157F5D12D4EEFD00515B85 /* ja */,
CE1632DA1582AD0000CFF419 /* zh_CN */,
+ CEB540AF0F261F1F00723C1F /* zh_TW */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
@@ -446,15 +450,16 @@
children = (
C88FB7DB0674470F006EBB30 /* en */,
CEFD6C620C01EF770027B933 /* nl */,
+ CE68C69E0CEF8A3C00B082F1 /* de */,
+ CECD97A20C57A4050026AAEC /* fr */,
CEFD6C630C01EF7A0027B933 /* it */,
- CECD97A20C57A4050026AAEC /* fr */,
CEC4BE480CA90A9000299397 /* es */,
- CE68C69E0CEF8A3C00B082F1 /* de */,
+ CEF877AF11905C8A006436A2 /* pl */,
CE4F97280CFB4B9300DBEA14 /* ru */,
- CEB540B00F261F1F00723C1F /* zh_TW */,
- CEF877AF11905C8A006436A2 /* pl */,
+ CE6E4B08305205E900910DD5 /* tr */,
CE157F5E12D4EEFD00515B85 /* ja */,
CE1632D31582ACFC00CFF419 /* zh_CN */,
+ CEB540B00F261F1F00723C1F /* zh_TW */,
);
name = schema.strings;
sourceTree = "<group>";
Modified: trunk/SkimNotes/SkimNotes.xcodeproj/project.pbxproj
===================================================================
--- trunk/SkimNotes/SkimNotes.xcodeproj/project.pbxproj 2026-09-08 17:18:47 UTC
(rev 16436)
+++ trunk/SkimNotes/SkimNotes.xcodeproj/project.pbxproj 2026-09-09 21:30:54 UTC
(rev 16437)
@@ -238,6 +238,7 @@
CE5280B10E41C137000F9CAC /* SkimNotes-Common.xcconfig */ = {isa
= PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path =
"SkimNotes-Common.xcconfig"; sourceTree = "<group>"; };
CE5280B60E41C20A000F9CAC /* SkimNotesBase-Framework.xcconfig */
= {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig;
path = "SkimNotesBase-Framework.xcconfig"; sourceTree = "<group>"; };
CE5A82DD0E6C5403008C0AA9 /* it */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = it; path =
it.lproj/SkimNotes.strings; sourceTree = "<group>"; };
+ CE6E4B063052044600910DD5 /* tr */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = tr; path =
tr.lproj/SkimNotes.strings; sourceTree = "<group>"; };
CE83E4251059A831007E3D28 /* ReleaseNotes.rtf */ = {isa =
PBXFileReference; lastKnownFileType = text.rtf; path = ReleaseNotes.rtf;
sourceTree = "<group>"; };
CEA5F53D0E2CED0E00F65088 /* SkimNotesBase.framework */ = {isa =
PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0;
path = SkimNotesBase.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CEA5F5490E2CED6D00F65088 /* SkimNotesBase.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
SkimNotesBase.h; sourceTree = "<group>"; };
@@ -774,6 +775,7 @@
zh_TW,
pl,
zh_CN,
+ tr,
);
mainGroup = 0867D691FE84028FC02AAC07 /* SkimNotes */;
productRefGroup = 034768DFFF38A50411DB9C8B /* Products
*/;
@@ -1007,12 +1009,13 @@
CE3907B50E082C930015B0B7 /* fr */,
CE3907B70E082C9A0015B0B7 /* de */,
CE3907B80E082CAD0015B0B7 /* es */,
- CE3907BA0E082CB40015B0B7 /* ru */,
CE5A82DD0E6C5403008C0AA9 /* it */,
- CEB540910F261E9D00723C1F /* zh_TW */,
CEF877D211905CED006436A2 /* pl */,
+ CE3907BA0E082CB40015B0B7 /* ru */,
+ CE6E4B063052044600910DD5 /* tr */,
CE157F2712D4EDC700515B85 /* ja */,
CE1632C71582ACC600CFF419 /* zh_CN */,
+ CEB540910F261E9D00723C1F /* zh_TW */,
);
name = SkimNotes.strings;
sourceTree = "<group>";
Modified: trunk/SkimTransitions/SkimTransitions.xcodeproj/project.pbxproj
===================================================================
--- trunk/SkimTransitions/SkimTransitions.xcodeproj/project.pbxproj
2026-09-08 17:18:47 UTC (rev 16436)
+++ trunk/SkimTransitions/SkimTransitions.xcodeproj/project.pbxproj
2026-09-09 21:30:54 UTC (rev 16437)
@@ -66,6 +66,7 @@
/* Begin PBXFileReference section */
CE399C2227B32B6200B454EB /* SKTTransitions.cikernel */ = {isa =
PBXFileReference; lastKnownFileType = text; path = SKTTransitions.cikernel;
sourceTree = "<group>"; };
+ CE6E4B073052053300910DD5 /* tr */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = tr; path =
tr.lproj/Description.strings; sourceTree = "<group>"; };
CE9C4B8F296D6AAA001D73C6 /* QuartzCore.framework */ = {isa =
PBXFileReference; lastKnownFileType = wrapper.framework; name =
QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework;
sourceTree = SDKROOT; };
CE9C4B91296D7047001D73C6 /* CoreImage.framework */ = {isa =
PBXFileReference; lastKnownFileType = wrapper.framework; name =
CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework;
sourceTree = SDKROOT; };
CEB35B3E22A32FA70033E232 /* SKTRadialSwipeTransition.m */ =
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
sourcecode.c.objc; path = SKTRadialSwipeTransition.m; sourceTree = "<group>"; };
@@ -517,6 +518,7 @@
zh_TW,
"zh-Hant",
ja,
+ tr,
);
mainGroup = CEDA02742295829B00881DE1;
productRefGroup = CEDA027F2295829B00881DE1 /* Products
*/;
@@ -587,11 +589,12 @@
CEDA052722959EE100881DE1 /* nl */,
CEDA052A22959EE900881DE1 /* es */,
CEDA052B22959EF500881DE1 /* it */,
+ CEDA053022959F0800881DE1 /* pl */,
CEDA052D22959EFF00881DE1 /* ru */,
- CEDA053022959F0800881DE1 /* pl */,
+ CE6E4B073052053300910DD5 /* tr */,
+ CEDA053722959F6900881DE1 /* ja */,
CEDA053422959F1800881DE1 /* zh_CN */,
CEDA053522959F2000881DE1 /* zh_TW */,
- CEDA053722959F6900881DE1 /* ja */,
);
name = Description.strings;
sourceTree = "<group>";
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit