[vlc-commits] macosx: drag and drop cleanup
Felix Paul Kühne
git at videolan.org
Mon Jul 8 21:38:05 CEST 2019
vlc | branch: master | Felix Paul Kühne <felix at feepk.net> | Mon Jul 8 19:53:22 2019 +0200| [0def47bd2533cd74519990e2948a3b9e386e7196] | committer: Felix Paul Kühne
macosx: drag and drop cleanup
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0def47bd2533cd74519990e2948a3b9e386e7196
---
modules/gui/macosx/library/VLCLibraryDataTypes.h | 2 +
modules/gui/macosx/library/VLCLibraryDataTypes.m | 2 +
.../gui/macosx/library/VLCLibraryVideoDataSource.m | 5 +--
.../gui/macosx/playlist/VLCPlaylistDataSource.m | 6 +--
modules/gui/macosx/views/VLCDragDropView.m | 2 +-
.../VLCConvertAndSaveWindowController.m | 48 ++++------------------
6 files changed, 17 insertions(+), 48 deletions(-)
diff --git a/modules/gui/macosx/library/VLCLibraryDataTypes.h b/modules/gui/macosx/library/VLCLibraryDataTypes.h
index f496d60dd9..d81be57384 100644
--- a/modules/gui/macosx/library/VLCLibraryDataTypes.h
+++ b/modules/gui/macosx/library/VLCLibraryDataTypes.h
@@ -25,6 +25,8 @@
NS_ASSUME_NONNULL_BEGIN
+extern NSString *VLCMediaLibraryMediaItemPasteboardType;
+
@class VLCMediaLibraryMediaItem;
@class VLCInputItem;
diff --git a/modules/gui/macosx/library/VLCLibraryDataTypes.m b/modules/gui/macosx/library/VLCLibraryDataTypes.m
index ffced77f9e..eb56aca49a 100644
--- a/modules/gui/macosx/library/VLCLibraryDataTypes.m
+++ b/modules/gui/macosx/library/VLCLibraryDataTypes.m
@@ -28,6 +28,8 @@
#import <vlc_url.h>
+NSString *VLCMediaLibraryMediaItemPasteboardType = @"VLCMediaLibraryMediaItemPasteboardType";
+
const CGFloat VLCMediaLibrary4KWidth = 3840.;
const CGFloat VLCMediaLibrary4KHeight = 2160.;
const CGFloat VLCMediaLibrary720pWidth = 1280.;
diff --git a/modules/gui/macosx/library/VLCLibraryVideoDataSource.m b/modules/gui/macosx/library/VLCLibraryVideoDataSource.m
index fd3f6afb09..b6939fa5bc 100644
--- a/modules/gui/macosx/library/VLCLibraryVideoDataSource.m
+++ b/modules/gui/macosx/library/VLCLibraryVideoDataSource.m
@@ -111,9 +111,8 @@ writeItemsAtIndexPaths:(NSSet<NSIndexPath *> *)indexPaths
}
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:mutableArray];
- NSString *pasteboardType = NSStringFromClass([VLCMediaLibraryMediaItem class]);
- [pasteboard declareTypes:@[pasteboardType] owner:self];
- [pasteboard setData:data forType:pasteboardType];
+ [pasteboard declareTypes:@[VLCMediaLibraryMediaItemPasteboardType] owner:self];
+ [pasteboard setData:data forType:VLCMediaLibraryMediaItemPasteboardType];
return YES;
}
diff --git a/modules/gui/macosx/playlist/VLCPlaylistDataSource.m b/modules/gui/macosx/playlist/VLCPlaylistDataSource.m
index d10c4b61b7..61a8b39391 100644
--- a/modules/gui/macosx/playlist/VLCPlaylistDataSource.m
+++ b/modules/gui/macosx/playlist/VLCPlaylistDataSource.m
@@ -50,8 +50,7 @@ static NSString *VLCPlaylistCellIdentifier = @"VLCPlaylistCellIdentifier";
- (void)prepareForUse
{
- NSString *pasteboardType = NSStringFromClass([VLCMediaLibraryMediaItem class]);
- [_tableView registerForDraggedTypes:@[pasteboardType, NSFilenamesPboardType]];
+ [_tableView registerForDraggedTypes:@[VLCMediaLibraryMediaItemPasteboardType, NSFilenamesPboardType]];
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
@@ -116,8 +115,7 @@ static NSString *VLCPlaylistCellIdentifier = @"VLCPlaylistCellIdentifier";
row:(NSInteger)row
dropOperation:(NSTableViewDropOperation)dropOperation
{
- NSString *pasteboardType = NSStringFromClass([VLCMediaLibraryMediaItem class]);
- NSData *data = [info.draggingPasteboard dataForType:pasteboardType];
+ NSData *data = [info.draggingPasteboard dataForType:VLCMediaLibraryMediaItemPasteboardType];
if (!data) {
id propertyList = [info.draggingPasteboard propertyListForType:NSFilenamesPboardType];
if (propertyList == nil) {
diff --git a/modules/gui/macosx/views/VLCDragDropView.m b/modules/gui/macosx/views/VLCDragDropView.m
index 5daa1f5e77..7c96461be2 100644
--- a/modules/gui/macosx/views/VLCDragDropView.m
+++ b/modules/gui/macosx/views/VLCDragDropView.m
@@ -47,7 +47,7 @@
- (void)enablePlaylistItems
{
- [self registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, @"VLCPlaylistItemPboardType", nil]];
+ [self registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, nil]];
}
- (BOOL)mouseDownCanMoveWindow
diff --git a/modules/gui/macosx/windows/convertandsave/VLCConvertAndSaveWindowController.m b/modules/gui/macosx/windows/convertandsave/VLCConvertAndSaveWindowController.m
index 13a4248dcd..c60a964286 100644
--- a/modules/gui/macosx/windows/convertandsave/VLCConvertAndSaveWindowController.m
+++ b/modules/gui/macosx/windows/convertandsave/VLCConvertAndSaveWindowController.m
@@ -331,9 +331,8 @@ NSString *VLCConvertAndSaveProfileNamesKey = @"CASProfileNames";
[openPanel setResolvesAliases:YES];
[openPanel setAllowsMultipleSelection:NO];
[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger returnCode) {
- if (returnCode == NSModalResponseOK)
- {
- [self setMRL: toNSStr(vlc_path2uri([[[openPanel URL] path] UTF8String], NULL))];
+ if (returnCode == NSModalResponseOK) {
+ [self setMRL: [[openPanel URL] absoluteString]];
[self updateOKButton];
[self updateDropView];
}
@@ -641,7 +640,7 @@ NSString *VLCConvertAndSaveProfileNamesKey = @"CASProfileNames";
- (BOOL)handlePasteBoardFromDragSession:(NSPasteboard *)paste
{
- NSArray *types = [NSArray arrayWithObjects:NSFilenamesPboardType, @"VLCPlaylistItemPboardType", nil];
+ NSArray *types = [NSArray arrayWithObjects:NSFilenamesPboardType, nil];
NSString *desired_type = [paste availableTypeFromArray: types];
NSData *carried_data = [paste dataForType: desired_type];
@@ -652,48 +651,17 @@ NSString *VLCConvertAndSaveProfileNamesKey = @"CASProfileNames";
NSArray *values = [[paste propertyListForType: NSFilenamesPboardType] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
if ([values count] > 0) {
- [self setMRL: toNSStr(vlc_path2uri([[values firstObject] UTF8String], NULL))];
+ NSURL *url = [NSURL fileURLWithPath:[values firstObject] isDirectory:NO];
+ if (!url) {
+ return NO;
+ }
+ [self setMRL:url.absoluteString];
[self updateOKButton];
[self updateDropView];
return YES;
}
}
-#if 0
- // FIXME: re-implement drag-n-drop from the new playlist
- else if ([desired_type isEqualToString:@"VLCPlaylistItemPboardType"]) {
- NSArray *draggedItems = [[[VLCMain sharedInstance] playlist] draggedItems];
-
- // Return early to prevent unnecessary playlist access/locking
- if ([draggedItems count] <= 0) {
- return NO;
- }
-
- playlist_t *p_playlist = pl_Get(getIntf());
- playlist_item_t *p_item = NULL;
-
- PL_LOCK;
- for (VLCPLItem *draggedItem in draggedItems) {
- p_item = playlist_ItemGetById(p_playlist, [draggedItem plItemId]);
-
- // Check if the item is usable
- if (!p_item || !p_item->p_input || !p_item->p_input->psz_uri) {
- // Item not usable, reset it.
- p_item = NULL;
- continue;
- }
-
- // First usable item found
- [self setMRL: toNSStr(p_item->p_input->psz_uri)];
- [self updateDropView];
- [self updateOKButton];
- break;
- }
- PL_UNLOCK;
-
- return (p_item != NULL) ? YES : NO;
- }
-#endif
return NO;
}
More information about the vlc-commits
mailing list