Revision: 15076
http://sourceforge.net/p/skim-app/code/15076
Author: hofman
Date: 2025-04-03 16:21:42 +0000 (Thu, 03 Apr 2025)
Log Message:
-----------
Override mouseDown to start dragging, so it can start immediately when
dragging. Draw drag imae with current appearance.
Modified Paths:
--------------
trunk/SKFontWell.m
Modified: trunk/SKFontWell.m
===================================================================
--- trunk/SKFontWell.m 2025-04-03 15:58:07 UTC (rev 15075)
+++ trunk/SKFontWell.m 2025-04-03 16:21:42 UTC (rev 15076)
@@ -41,6 +41,7 @@
#import "NSColor_SKExtensions.h"
#import "NSObject_SKExtensions.h"
#import "NSImage_SKExtensions.h"
+#import "SKApplication.h"
#define SKNSFontPanelDescriptorsPboardType @"NSFontPanelDescriptorsPboardType"
#define SKNSFontPanelFamiliesPboardType @"NSFontPanelFamiliesPboardType"
@@ -259,6 +260,42 @@
}
}
+#pragma mark Dragging
+
+- (void)mouseDown:(NSEvent *)theEvent {
+ [[self cell] setHighlighted:YES];
+ [self setNeedsDisplay:YES];
+
+ if ([NSApp willDragMouse]) {
+ [[self cell] setHighlighted:NO];
+ [self setNeedsDisplay:YES];
+
+ NSRect bounds = [self bounds];
+
+ NSImage *dragImage = [NSImage bitmapImageWithSize:bounds.size
forView:self drawingHandler:^(NSRect rect){
+ SKRunWithAppearance(self, ^{
+ [[self cell] drawInteriorWithFrame:rect inView:self];
+ });
+ }];
+
+ NSDictionary *dict = @{SKNSFontCollectionFontDescriptors: @[[[self
font] fontDescriptor]], NSFontSizeAttribute: [NSNumber numberWithDouble:[[self
font] pointSize]]};
+ NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dict];
+ NSPasteboardItem *item = [[NSPasteboardItem alloc] init];
+ [item setData:data
forType:UTIForNSPboardType(SKNSFontPanelDescriptorsPboardType)];
+
+ NSDraggingItem *dragItem = [[NSDraggingItem alloc]
initWithPasteboardWriter:item];
+ [dragItem setDraggingFrame:bounds contents:dragImage];
+
+ [self beginDraggingSessionWithItems:@[dragItem] event:theEvent
source:self];
+ } else {
+ [super mouseDown:theEvent];
+ }
+}
+
+- (NSString *)accessibilitySubrole {
+ return @"AXFontWell";
+}
+
#pragma mark NSDraggingSource protocol
- (NSDragOperation)draggingSession:(NSDraggingSession *)session
sourceOperationMaskForDraggingContext:(NSDraggingContext)context {
@@ -420,32 +457,6 @@
}
}
-- (BOOL)trackMouse:(NSEvent *)event inRect:(NSRect)cellFrame ofView:(NSView
*)controlView untilMouseUp:(BOOL)flag {
- BOOL didTrack = [super trackMouse:event inRect:cellFrame
ofView:controlView untilMouseUp:flag];
- if (didTrack == NO) {
- NSRect bounds = [controlView bounds];
-
- NSImage *dragImage = [NSImage bitmapImageWithSize:bounds.size
forView:controlView drawingHandler:^(NSRect rect){
- [self drawInteriorWithFrame:rect inView:controlView];
- }];
-
- NSDictionary *dict = @{SKNSFontCollectionFontDescriptors: @[[[self
font] fontDescriptor]], NSFontSizeAttribute: [NSNumber numberWithDouble:[[self
font] pointSize]]};
- NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dict];
- NSPasteboardItem *item = [[NSPasteboardItem alloc] init];
- [item setData:data
forType:UTIForNSPboardType(SKNSFontPanelDescriptorsPboardType)];
-
- NSDraggingItem *dragItem = [[NSDraggingItem alloc]
initWithPasteboardWriter:item];
- [dragItem setDraggingFrame:bounds contents:dragImage];
-
- [controlView beginDraggingSessionWithItems:@[dragItem] event:event
source:(id<NSDraggingSource>)controlView];
- }
- return YES;
-}
-
-- (NSString *)accessibilitySubrole {
- return @"AXFontWell";
-}
-
- (NSString *)accessibilityRoleDescription {
return NSLocalizedString(@"font well", @"Accessibility description");
}
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