Revision: 16071
          http://sourceforge.net/p/skim-app/code/16071
Author:   hofman
Date:     2026-03-17 15:52:26 +0000 (Tue, 17 Mar 2026)
Log Message:
-----------
make last selected note type in add note toolbar items sticky

Modified Paths:
--------------
    trunk/InitialUserDefaults.plist
    trunk/SKMainToolbarController.m

Modified: trunk/InitialUserDefaults.plist
===================================================================
--- trunk/InitialUserDefaults.plist     2026-03-16 17:53:50 UTC (rev 16070)
+++ trunk/InitialUserDefaults.plist     2026-03-17 15:52:26 UTC (rev 16071)
@@ -63,6 +63,14 @@
                <integer>0</integer>
                <key>SKLastSecondarySelectsText</key>
                <false/>
+               <key>SKLastTextNoteType</key>
+               <integer>0</integer>
+               <key>SKLastShapeNoteType</key>
+               <integer>2</integer>
+               <key>SKLastMarkupNoteType</key>
+               <integer>4</integer>
+               <key>SKLastLineNoteType</key>
+               <integer>7</integer>
                <key>SKTableFontSize</key>
                <real>12</real>
                <key>SKSequentialPageNumbering</key>
@@ -324,6 +332,10 @@
                        <string>SKLastToolMode</string>
                        <string>SKLastAnnotationMode</string>
                        <string>SKLastSecondarySelectsText</string>
+                       <string>SKLastTextNoteType</string>
+                       <string>SKLastShapeNoteType</string>
+                       <string>SKLastMarkupNoteType</string>
+                       <string>SKLastLineNoteType</string>
                        <string>SKReadMissingNotesFromSkimFileOption</string>
                        <string>SKReadNonMissingNotesFromSkimFileOption</string>
                        <string>SKEnableAppleRemote</string>

Modified: trunk/SKMainToolbarController.m
===================================================================
--- trunk/SKMainToolbarController.m     2026-03-16 17:53:50 UTC (rev 16070)
+++ trunk/SKMainToolbarController.m     2026-03-17 15:52:26 UTC (rev 16071)
@@ -113,6 +113,11 @@
 #define SKDocumentToolbarSplitPDFItemIdentifier 
@"SKDocumentToolbarSplitPDFItemIdentifier"
 #define SKDocumentToolbarPrintItemIdentifier 
@"SKDocumentToolbarPrintItemIdentifier"
 
+#define SKLastTextNoteTypeKey   @"SKLastTextNoteType"
+#define SKLastShapeNoteTypeKey  @"SKLastShapeNoteType"
+#define SKLastMarkupNoteTypeKey @"SKLastMarkupNoteType"
+#define SKLastLineNoteTypeKey   @"SKLastLineNoteType"
+
 static NSString *noteToolImageNames[] = {@"ToolbarTextNoteMenu", 
@"ToolbarAnchoredNoteMenu", @"ToolbarCircleNoteMenu", @"ToolbarSquareNoteMenu", 
@"ToolbarHighlightNoteMenu", @"ToolbarUnderlineNoteMenu", 
@"ToolbarStrikeOutNoteMenu", @"ToolbarLineNoteMenu", @"ToolbarInkNoteMenu"};
 
 static NSString *addNoteToolImageNames[] = {@"ToolbarAddTextNoteMenu", 
@"ToolbarAddAnchoredNoteMenu", @"ToolbarAddCircleNoteMenu", 
@"ToolbarAddSquareNoteMenu", @"ToolbarAddHighlightNoteMenu", 
@"ToolbarAddUnderlineNoteMenu", @"ToolbarAddStrikeOutNoteMenu", 
@"ToolbarAddLineNoteMenu", @"ToolbarAddInkNoteMenu"};
@@ -143,6 +148,7 @@
 @interface SKMainToolbarController ()
 - (void)handleColorSwatchFrameChangedNotification:(NSNotification 
*)notification;
 - (void)updateColorsMenu:(NSMenu *)menu;
+- (void)setNoteType:(NSInteger)type forButton:(NSSegmentedControl *)button;
 @end
 
 
@@ -464,6 +470,8 @@
             
         } else if ([identifier 
isEqualToString:SKDocumentToolbarNewTextNoteItemIdentifier]) {
             
+            [self setNoteType:[[NSUserDefaults standardUserDefaults] 
integerForKey:SKLastTextNoteTypeKey] forButton:textNoteButton];
+            
             menu = [NSMenu menu];
             [menu addItemWithTitle:NSLocalizedString(@"Text Note", @"Menu item 
title") imageNamed:SKImageNameToolbarAddTextNote 
action:@selector(createNewTextNote:) target:self tag:SKNoteTypeFreeText];
             [menu addItemWithTitle:NSLocalizedString(@"Anchored Note", @"Menu 
item title") imageNamed:SKImageNameToolbarAddAnchoredNote 
action:@selector(createNewTextNote:) target:self tag:SKNoteTypeAnchored];
@@ -481,6 +489,8 @@
             
         } else if ([identifier 
isEqualToString:SKDocumentToolbarNewCircleNoteItemIdentifier]) {
             
+            [self setNoteType:[[NSUserDefaults standardUserDefaults] 
integerForKey:SKLastShapeNoteTypeKey] forButton:circleNoteButton];
+            
             menu = [NSMenu menu];
             [menu addItemWithTitle:NSLocalizedString(@"Circle", @"Menu item 
title") imageNamed:SKImageNameToolbarAddCircleNote 
action:@selector(createNewCircleNote:) target:self tag:SKNoteTypeCircle];
             [menu addItemWithTitle:NSLocalizedString(@"Box", @"Menu item 
title") imageNamed:SKImageNameToolbarAddSquareNote 
action:@selector(createNewCircleNote:) target:self tag:SKNoteTypeSquare];
@@ -498,6 +508,8 @@
             
         } else if ([identifier 
isEqualToString:SKDocumentToolbarNewMarkupItemIdentifier]) {
             
+            [self setNoteType:[[NSUserDefaults standardUserDefaults] 
integerForKey:SKLastMarkupNoteTypeKey] forButton:markupNoteButton];
+            
             menu = [NSMenu menu];
             [menu addItemWithTitle:NSLocalizedString(@"Highlight", @"Menu item 
title") imageNamed:SKImageNameToolbarAddHighlightNote 
action:@selector(createNewMarkupNote:) target:self tag:SKNoteTypeHighlight];
             [menu addItemWithTitle:NSLocalizedString(@"Underline", @"Menu item 
title") imageNamed:SKImageNameToolbarAddUnderlineNote 
action:@selector(createNewMarkupNote:) target:self tag:SKNoteTypeUnderline];
@@ -517,6 +529,8 @@
             
         } else if ([identifier 
isEqualToString:SKDocumentToolbarNewLineItemIdentifier]) {
             
+            [self setNoteType:[[NSUserDefaults standardUserDefaults] 
integerForKey:SKLastLineNoteTypeKey] forButton:lineNoteButton];
+            
             menu = [NSMenu menu];
             [menu addItemWithTitle:NSLocalizedString(@"Line", @"Menu item 
title") imageNamed:SKImageNameToolbarAddLineNote 
action:@selector(createNewLineNote:) target:self tag:SKNoteTypeLine];
             [menu addItemWithTitle:NSLocalizedString(@"Freehand", @"Menu item 
title") imageNamed:SKImageNameToolbarAddInkNote 
action:@selector(createNewLineNote:) target:self tag:SKNoteTypeInk];
@@ -1269,30 +1283,38 @@
     [mainController.pdfView setDisplaysPageBreaks:NO == 
[mainController.pdfView displaysPageBreaks]];
 }
 
+- (void)setNoteType:(NSInteger)type forButton:(NSSegmentedControl *)button {
+    if (type != [button tagForSegment:0]) {
+        [button setTag:type forSegment:0];
+        [button setImage:[NSImage imageNamed:addNoteToolImageNames[type]] 
forSegment:0];
+    }
+}
+
 - (void)createNewNoteWithType:(NSInteger)type forButton:(NSSegmentedControl 
*)button {
     if ([mainController.pdfView canSelectNote]) {
         [mainController.pdfView addAnnotationWithType:type];
-        if (type != [button tagForSegment:0]) {
-            [button setTag:type forSegment:0];
-            [button setImage:[NSImage imageNamed:addNoteToolImageNames[type]] 
forSegment:0];
-        }
+        [self setNoteType:type forButton:button];
     } else NSBeep();
 }
 
 - (void)createNewTextNote:(id)sender {
     [self createNewNoteWithType:[sender tag] forButton:textNoteButton];
+    [[NSUserDefaults standardUserDefaults] setInteger:[sender tag] 
forKey:SKLastTextNoteTypeKey];
 }
 
 - (void)createNewCircleNote:(id)sender {
     [self createNewNoteWithType:[sender tag] forButton:circleNoteButton];
+    [[NSUserDefaults standardUserDefaults] setInteger:[sender tag] 
forKey:SKLastShapeNoteTypeKey];
 }
 
 - (void)createNewMarkupNote:(id)sender {
     [self createNewNoteWithType:[sender tag] forButton:markupNoteButton];
+    [[NSUserDefaults standardUserDefaults] setInteger:[sender tag] 
forKey:SKLastMarkupNoteTypeKey];
 }
 
 - (void)createNewLineNote:(id)sender {
     [self createNewNoteWithType:[sender tag] forButton:lineNoteButton];
+    [[NSUserDefaults standardUserDefaults] setInteger:[sender tag] 
forKey:SKLastLineNoteTypeKey];
 }
 
 - (IBAction)createNewNote:(id)sender {

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

Reply via email to