Changeset 209

Show
Ignore:
Timestamp:
04/28/08 07:15:08 (8 months ago)
Author:
tal
Message:
Dragging rework.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • packages/defconAppKit/trunk/Lib/defconAppKit/views/glyphCellView.py

    r208 r209  
    1212 
    1313 
    14 DefconAppKitGlyphPboardType = "DefconAppKitGlyphPboardType" 
     14DefconAppKitSelectedGlyphIndexesPboardType = "DefconAppKitSelectedGlyphIndexesPboardType" 
    1515 
    1616 
     
    121121    def setAllowsDrop_(self, value): 
    122122        if value: 
    123             self.registerForDraggedTypes_([DefconAppKitGlyphPboardType]) 
     123            self.registerForDraggedTypes_([DefconAppKitSelectedGlyphIndexesPboardType]) 
    124124        else: 
    125125            self.unregisterDraggedTypes() 
     
    133133        self._subscribeToGlyphs() 
    134134        self.recalculateFrame() 
     135 
     136    def getGlyphsAtIndexes_(self, indexes): 
     137        return [self._glyphs[i] for i in indexes] 
    135138 
    136139    def setCellSize_(self, (width, height)): 
     
    645648 
    646649        pboard = NSPasteboard.pasteboardWithName_(NSDragPboard) 
    647         pboard.declareTypes_owner_([DefconAppKitGlyphPboardType], self) 
    648         pboard.setPropertyList_forType_(indexes, DefconAppKitGlyphPboardType) 
     650        pboard.declareTypes_owner_([DefconAppKitSelectedGlyphIndexesPboardType], self) 
     651        pboard.setPropertyList_forType_(indexes, DefconAppKitSelectedGlyphIndexesPboardType) 
    649652 
    650653        self.dragImage_at_offset_event_pasteboard_source_slideBack_( 
     
    653656        ) 
    654657 
    655     def getGlyphsFromDragPasteboard_(self, pboard): 
    656         indexes = pboard.propertyListForType_(DefconAppKitGlyphPboardType) 
    657         glyphs = [self._glyphs[i] for i in indexes] 
     658    def getGlyphsFromDraggingInfo_(self, draggingInfo): 
     659        source = draggingInfo.draggingSource() 
     660        if source != self: 
     661            return None 
     662        pboard = draggingInfo.draggingPasteboard() 
     663        indexes = pboard.propertyListForType_("DefconAppKitSelectedGlyphIndexesPboardType") 
     664        glyphs = self.getGlyphsAtIndexes_(indexes) 
    658665        return glyphs 
    659666 
     
    679686        if source == self: 
    680687            return NSDragOperationNone 
    681         glyphs = source.getGlyphsFromDragPasteboard_(sender.draggingPasteboard()
     688        glyphs = source.getGlyphsFromDraggingInfo_(sender
    682689        return self.vanillaWrapper()._proposeDrop(glyphs, testing=True) 
    683690 
     
    686693        if source == self: 
    687694            return NSDragOperationNone 
    688         glyphs = source.getGlyphsFromDragPasteboard_(sender.draggingPasteboard()
     695        glyphs = source.getGlyphsFromDraggingInfo_(sender
    689696        return self.vanillaWrapper()._proposeDrop(glyphs, testing=False) 
    690697 
  • packages/defconAppKit/trunk/Lib/defconAppKit/views/glyphLineView.py

    r145 r209  
    251251        if source == self: 
    252252            return NSDragOperationNone 
    253         glyphs = source.getGlyphsFromDragPasteboard_(sender.draggingPasteboard()
     253        glyphs = source.getGlyphsFromDraggingInfo_(sender
    254254        return self.vanillaWrapper()._proposeDrop(glyphs, testing=True) 
    255255 
     
    258258        if source == self: 
    259259            return NSDragOperationNone 
    260         glyphs = source.getGlyphsFromDragPasteboard_(sender.draggingPasteboard()
     260        glyphs = source.getGlyphsFromDraggingInfo_(sender
    261261        return self.vanillaWrapper()._proposeDrop(glyphs, testing=False) 
    262262