diff options
author | dynaflash <[email protected]> | 2008-09-26 18:57:38 +0000 |
---|---|---|
committer | dynaflash <[email protected]> | 2008-09-26 18:57:38 +0000 |
commit | 007dd35a0ca3909c7a6c80bd2e0c84962178082c (patch) | |
tree | 6ce6681d561f459a4d5033bdf76f481a6622e619 | |
parent | 0d5b2c5adbd056f0511331e52d097f232cbeb91d (diff) |
MacGui: Queue - Fix drag'n drop so that when dragging over an item, it doesn't auto expand.
- Also fix some really hosed up formatting
- Remove the unused moveObjectsInQueueArray method from HBQueueController ( we moved that to Controller.mm back in 1703 but left it "just in case").
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1778 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r-- | macosx/HBQueueController.h | 3 | ||||
-rw-r--r-- | macosx/HBQueueController.mm | 100 |
2 files changed, 34 insertions, 69 deletions
diff --git a/macosx/HBQueueController.h b/macosx/HBQueueController.h index 06856f096..51e01f66d 100644 --- a/macosx/HBQueueController.h +++ b/macosx/HBQueueController.h @@ -99,6 +99,7 @@ BOOL fIsDragging; IBOutlet HBQueueOutlineView *fOutlineView; IBOutlet NSTextField *fQueueCountField; NSArray *fDraggedNodes; + BOOL fIsDragging; #if HB_OUTLINE_METRIC_CONTROLS IBOutlet NSSlider *fIndentation; // debug IBOutlet NSSlider *fSpacing; // debug @@ -124,8 +125,6 @@ BOOL fIsDragging; - (void)outlineView:(NSOutlineView *)fOutlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item; -- (void)moveObjectsInQueueArray:(NSMutableArray *)array fromIndexes:(NSIndexSet *)indexSet toIndex:(unsigned)insertIndex; - /* Animate the icon for the current encode */ - (void) animateWorkingEncodeIconInQueue; - (void) startAnimatingCurrentWorkingEncodeInQueue; diff --git a/macosx/HBQueueController.mm b/macosx/HBQueueController.mm index 26a6a4a19..01167b717 100644 --- a/macosx/HBQueueController.mm +++ b/macosx/HBQueueController.mm @@ -118,21 +118,21 @@ static NSString* HBQueuePauseResumeToolbarIdentifier = @"HBQueuePauseRe - (void)setQueueArray: (NSMutableArray *)QueueFileArray { [fJobGroups setArray:QueueFileArray]; - + fIsDragging = NO; /* First stop any timer working now */ -[self stopAnimatingCurrentJobGroupInQueue]; - [fOutlineView reloadData]; - - - -/* lets get the stats on the status of the queue array */ - -fEncodingQueueItem = 0; -fPendingCount = 0; -fCompletedCount = 0; -fCanceledCount = 0; -fWorkingCount = 0; - + [self stopAnimatingCurrentJobGroupInQueue]; + [fOutlineView reloadData]; + + + + /* lets get the stats on the status of the queue array */ + + fEncodingQueueItem = 0; + fPendingCount = 0; + fCompletedCount = 0; + fCanceledCount = 0; + fWorkingCount = 0; + /* We use a number system to set the encode status of the queue item * in controller.mm * 0 == already encoded @@ -140,7 +140,7 @@ fWorkingCount = 0; * 2 == is yet to be encoded * 3 == cancelled */ - + int i = 0; NSEnumerator *enumerator = [fJobGroups objectEnumerator]; id tempObject; @@ -166,16 +166,16 @@ fWorkingCount = 0; } i++; } - -/* We should fire up the encoding timer here based on fWorkingCount */ - -if (fWorkingCount > 0) -{ - /* we have an encoding job so, lets start the animation timer */ - [self startAnimatingCurrentWorkingEncodeInQueue]; -} - -/* Set the queue status field in the queue window */ + + /* We should fire up the encoding timer here based on fWorkingCount */ + + if (fWorkingCount > 0) + { + /* we have an encoding job so, lets start the animation timer */ + [self startAnimatingCurrentWorkingEncodeInQueue]; + } + + /* Set the queue status field in the queue window */ NSMutableString * string; if (fPendingCount == 1) { @@ -186,7 +186,7 @@ if (fWorkingCount > 0) string = [NSMutableString stringWithFormat: NSLocalizedString( @"%d encode(s) pending", @"" ), fPendingCount]; } [fQueueCountField setStringValue:string]; - + } /* This method sets the status string in the queue window * and is called from Controller.mm (fHBController) @@ -708,16 +708,11 @@ if (fWorkingCount > 0) return YES; } -- (BOOL)outlineView:(NSOutlineView *)fOutlineView shouldExpandItem:(id)item +- (BOOL)outlineView:(NSOutlineView *)outlineView shouldExpandItem:(id)item { // Our outline view has no levels, but we can still expand every item. Doing so // just makes the row taller. See heightOfRowByItem below. - - // Don't autoexpand while dragging, since we can't drop into the items - // return ![(HBQueueOutlineView*)fOutlineView isDragging]; - - return YES; //<-- Needs to be YES to allow expanding - +return ![(HBQueueOutlineView*)outlineView isDragging]; } - (NSInteger)outlineView:(NSOutlineView *)fOutlineView numberOfChildrenOfItem:(id)item @@ -1250,15 +1245,17 @@ if (fWorkingCount > 0) // Don't allow dropping ONTO an item since they can't really contain any children. BOOL isOnDropTypeProposal = index == NSOutlineViewDropOnItemIndex; if (isOnDropTypeProposal) + { return NSDragOperationNone; - + } + // Don't allow dropping INTO an item since they can't really contain any children. if (item != nil) { index = [fOutlineView rowForItem: item] + 1; item = nil; } - + // NOTE: Should we allow dropping a pending job *above* the // finished or already encoded jobs ? // We do not let the user drop a pending job before or *above* @@ -1269,7 +1266,6 @@ if (fWorkingCount > 0) index = MAX (index, fEncodingQueueItem); } - [outlineView setDropItem:item dropChildIndex:index]; return NSDragOperationGeneric; } @@ -1286,43 +1282,13 @@ if (fWorkingCount > 0) { [moveItems addIndex:[fJobGroups indexOfObject:obj]]; } - // Successful drop, we use moveObjectsInQueueArray:... in fHBController // to properly rearrange the queue array, save it to plist and then send it back here. // since Controller.mm is handling all queue array manipulation. // We *could do this here, but I think we are better served keeping that code together. - [fHBController moveObjectsInQueueArray:fJobGroups fromIndexes:moveItems toIndex: index]; + [fHBController moveObjectsInQueueArray:fJobGroups fromIndexes:moveItems toIndex: index]; return YES; } -- (void)moveObjectsInQueueArray:(NSMutableArray *)array fromIndexes:(NSIndexSet *)indexSet toIndex:(unsigned)insertIndex -{ - unsigned index = [indexSet lastIndex]; - unsigned aboveInsertIndexCount = 0; - - while (index != NSNotFound) - { - unsigned removeIndex; - - if (index >= insertIndex) - { - removeIndex = index + aboveInsertIndexCount; - aboveInsertIndexCount++; - } - else - { - removeIndex = index; - insertIndex--; - } - - id object = [[array objectAtIndex:removeIndex] retain]; - [array removeObjectAtIndex:removeIndex]; - [array insertObject:object atIndex:insertIndex]; - [object release]; - - index = [indexSet indexLessThanIndex:index]; - } -} - @end |