Macintosh Drag and Drop (1.1) Copyright 1994 Apple Computer, Inc. The enclosed file is a self-extracting archive. To use, download, double-click the downloaded file (this decompresses it). Name: Macintosh Drag and Drop Version: 1.1 Released: 22-Apr-94 Description: Please refer to the Read Me below. Files included in the Macintosh Drag and Drop 1.1 self extracting archive: ------------------------------------------ File Name Version # ------------------------------------------ Bong Clipping Extension 7.1.4 CSample.make cursor.c Direct Manipulation document.c Drag and Drop H.I. Guidelines 1.0 Drag Manager ProgrammerÕs Guide 1.0 Drag.a drag.c Drag.h Drag.h Drag.p Dragging Enabler DragLib DragPeeker Dragster Read Me 1.0 Dragster 2.1 DragText Project DragText Project.rsrc 1.0a2 DragText 1.0 event.c file.c globals.h initialize.c Macintosh Drag and Drop 1.1 Macintosh Drag and Drop 1.1 main.c menus.c Offscreen.c Offscreen.h prototypes.h resources.h RGB Definition Sample Text Sample.c Sample.h Sample.r SampleInit.c TCSample TCSample.¹ TCSample.¹.rsrc teutilities.c utility.c windows.c World Map Ê From the Read Me: Dear Apple Developer, Macintosh Drag and Drop is new technology from Apple, which you should support. By using Macintosh Drag and Drop, you can easily implement intra and inter-application drag and drop in your applications. Your products will have an improved user interface, and your users will be able to manipulate and work with their data faster and more intuitively. Drag and drop is a skill all Macintosh users have mastered. They use it to quickly and directly organize files in the Finder. But users want to drag and drop data as easily as they drag and drop files. Macintosh Drag and Drop allows users to move data between different applications and windows, much like the Scrap ManagerÕs copy and paste. Drag and drop is a more intuitive and faster operation than copy and paste, and drag and drop is easier for novices to learn. DRAG MANAGER Macintosh Drag and Drop implements the new Drag Manager toolbox. Use the Drag Manager routines to add drag and drop behavior to your application. To provide the standard drag and drop interface, you only need to add a few new calls and provide two callback routines that are utilized during drag operations. The Drag ManagerÕs architecture is flexible, allowing you to support any drag and drop services youÕve already implemented. Apple provides ways to customize and override default behavior or will provide the standard drag and drop interface with minimal effort on your part. The Drag Manager improves on the Scrap Manager by allowing the streaming and delayed delivery of data. Users can drag and drop multiple items, each with different data types. Macintosh Easy Open integrates with the Drag Manager, providing data type translation services automatically and without any additional effort on your part. This means you can simply support your applicationÕs data types and count on Macintosh Easy Open to provide automatic translation for data that is dropped into and dragged out of application windows. The Drag Manager is integrated with the latest Finder (included in System 7 Pro and System 7.5), allowing users to drag and drop files from the Finder into any applicationsÕ windows and providing file information for those files. Applications can also find out where data was dropped in the Finder Ñ for example, that it was dropped into the Trash. The Drag Manager supports drag and drop of any data to the latest Finder. It creates ÒclippingÓ files that users can then use as clipboards and drag into an application when the data is needed. Users can keep common data handy as clipping files. INSTALLING Macintosh Drag and Drop is included with System 7.5 and you do not need to install it. To install Macintosh Drag and Drop on earlier systems, simply place the Macintosh Drag and Drop extension file in your Extensions folder and reboot. This will allow you to use all the programmatic interfaces described in the Drag Manager ProgrammerÕs Guide. To use clipping files on System 7 Pro (it does not load with earlier Finders), please install the Clipping Extension file. If you do not have System 7 Pro, then for development you may install the Finder version 7.1.3, Dragging Enabler, and Clipping Extension files on System 7.1. The AppleScript developer's kit also includes Finder version 7.1.3 and you should be careful to always install the Dragging Enabler file on System 7.1 with that Finder. You will not be able to drag any files on the Desktop without the Dragging Enabler on this development configuration. Note that the Finder 7.1.3 is only bundled with System 7 Pro or System 7.5 and has not been qualified to run on earlier configurations. We don't expect you to have any problems with it on System 7.1, but you may experience data losses or crashes. You may also wish to install the accompanying Network Extension and Finder Help, as earlier versions of these files will not operate with a newer Finder. For inter-application drag and drop on System 7.1, install the Dragging Enabler file in your extension folder. This file is not necessary on System 7 Pro or later versions of system software, but is needed to allow inter-application dragging on System version 7.1. COMPATIBILITY Macintosh Drag and Drop 1.1 requires System 7.0 or later to operate. On System 7.0 or 7.0.1 you may drag within your application windows or between them. The inter-application dragging features of Macintosh Drag and Drop require System 7 Pro or use of the Dragging Enabler file with System 7.1. Support for clipping files requires the Clipping Extension file with Finder version 7.1.3 or later. Finder version 7.1.3 is included in System 7 Pro and with this DeveloperÕs Kit. Note that Finder version 7.1.1 was released in the PowerBook File Assistant product, and with Macintosh Drag and Drop it allows you to receive and promise files, but does not create or support clipping files. For implicit data type translation, Macintosh Easy Open version 1.0.3 or later is required. Macintosh Drag and Drop is incompatible with the graphics acceleration of the 8¥24 GC video card. With this card and the 8¥24 GC control panel installed, Macintosh Drag and Drop may leave bits on the screen while dragging on the 8¥24Õs display. Remove the 8¥24 GC control panel to fix the problem. WHAT IS NEW Version 1.1 of Macintosh Drag and Drop adds support for native PowerPC applications and fixes a number of key bugs with version 1.0. To support native applications, we've included two new files for your development and we've improved the Macintosh Drag and Drop extension to provide PowerPC glue code. For development, we provide the DragLib library that you use to link with your application and we provide a universal Drag.h file for you to include. You do not need to include the DragLib file with your application as long as you start your Macintosh with the Macintosh Drag and Drop version 1.1 file in your extension folder. The extension will provide the DragLib code fragment that your application will link with at run time. There are a number of important bug fixes in version 1.1: ¥ Now you may install multiple window or process handlers and they will be correctly called in order of their installation. In version 1.0 only the first one would be called. ¥ When dragging to the Finder to create clipping files, you may now promise drag item flavors and the clipping file will be correctly created. ¥ When dragging multiple items with promise HFS flavors, now each item will be requested whereas in version 1.0 only the first was requested. ¥ When dragging large amounts of data to the Finder, occasionally the data would not be correctly stored in the resulting clipping file with version 1.0. This has now been fixed. ¥ When dragging multiple items to the Finder, now multiple clippings will be created. ¥ Now you may request senderOnly flavors from within your SendDataProc successfully. ¥ You may now drag clipping files out of AOCE letter enclosures successfully. ¥ The sender application's context is now set up during a dragRegionEnd message, which allows you to successfully deallocate temporary memory in this callback. ¥ A very rare and idiopathic crash was fixed. We're still not sure why it was happening. ¥ Windows created with the NewServiceWindow routine are now supported by Macintosh Drag and Drop. Also drags over system floating windows will correctly recognize the window, whereas before a drop on those windows would behave as if the drop occurred behind the window. You can determine that version 1.1 of Macintosh Drag and Drop is installed by calling gestalt with the selector gestaltDragMgrAttr. Then check the bit gestaltDragMgrFloatingWind which is named after the last bug described above. To determine if the PowerPC Drag Manager glue is available, check the bit gestaltPPCDragLibPresent. OTHER PROBLEMS When using Macintosh Drag and Drop version 1.1, you should be aware of the following known problems. If you find any additional problems please send an AppleLink to DEVSUPPORT describing the problem. Please also include your hardware and software configuration. If you drag a file to Finder version 7.1.3 using a flavorTypeHFS or flavorTypePromiseHFS flavor, and that file is currently displayed in a Finder window then that window will not be updated correctly. Also if that file is dragged to a different volume than the drop location than the Finder will produce an error and the drag will usually fail. These problems also occur with System Software version 7.5. These problems will be fixed in a later version of system software. LICENSING You may license Macintosh Drag and Drop 1.1 and include it with your products. Macintosh Drag and Drop 1.1 includes the Macintosh Drag and Drop file, the Clipping Extension file, and the Dragging Enabler file. You may not license any other files in the DeveloperÕs Kit. Please call Apple Software Licensing at (408) 974 4667 for information. CREDITS The Drag Manager is brought to you by the following people: Development Engineering: Rob Johnston and Dave Evans Quality Engineering: Keith Mortensen Human Interface: Mark Stern Management: Dave Fylstra Essential Thanks: Debi Holmes, Nick Kledzik and Andy Nicholas Essential Testing: Brent Horger, Jenny Kai, and Margarita Sang Software Management: Sue Kuo Special Thanks to: Greg Anderson, Dylan Ashe, Juan Bettaglio, Paul Bommarito, Pierre Cesarini, Jennifer Chaffee, Tom Conrad, Alex Dosher, Jim Dumont, Dave Falkenburg, Steve Fisher, Mary Harrington, Bob Hagenau, Andy Hammond, C.K. Haun, Sandy Horn, Phac Le Tuan, Brenda Lui, Elizabeth Moller, Dave Owens, David Pakman, Greg Robbins, Roger Rompot, Leonard Rosenthal, David Schroit, Eric Slosser, Rick Spitz, Francis Stanbach, Mitch Stein, Atticus Tysen, Dean Yu, and many others. Also thanks to the Blue Meanies, our seed developers, Taco Bell, and to AB Logic. ©1993-1994 Apple Computer, Inc. Apple, the Apple logo, and Macintosh are trademarks of Apple Computer, Inc., registered in the U.S. and other countries.