Smart Drag  -  Solid icon dragging for any application

by Matt Browne

This application requires RISC OS 3.1 or later

Smart Drag is a utility to greatly improve the look of your RISC OS 3
desktop.

You will probably have noticed that RISC OS 3 provides a module called
DragASprite. This little module allows applications written specifically
for RISC OS 3 (or later versions) to provide icons (such as draggable icons
in save boxes) which show a trendy shadowed sprite (or even a ghosted one on RISC OS 3.5
or later), instead of a boring old rotating dash-box when being
dragged.

Smart Drag allows you to enter the groovy realm of DragASprite even if
you are using an application that doesnt support it! When loaded, it checks
to see if any icons that are being dragged have a relevant sprite. If they
do, Smart Drag activates DragASprite to drag a nice sprite, or otherwise an
ordinary rotating dash-box is used. Just load Smart Drag and get on with
using your machine as normal. Youll soon see what a nice effect it has!

Smart Drag is written in 100% ARM Assembler for speed and efficiency. The
front end uses DoggySofts excellent WimpExtension module (for the latest
version of WimpExtension, please contact DoggySoft).

It follows normal RISC OS conventions - so if you cant work out how to use
Smart Drags user interface, please consult your Welcome Guide!

Using Smart Drag
Smart Drag is a relocatable module. It provides a Star (*) Command that
allows you to control it. This is documented later. A front end application for the module is also included.

Running the item from the RISC User menu system installs the module and front end, and opens an archive containing the application. The module is in a subdirectory Resource.Modules within the !SmartDrag application directory. You are recommended to transfer the application from the archive to a suitable place on your hard disc. You will probably want to install Smart Drag on power-up, in which case you should place an appropriate command in your desktop boot file.

When you first load the module or load up the SmartDrag application, they
are set to provide automatic DragASprite usage; i.e. its on!

The Smart Drag Front End
The Smart Drag front end is loaded by double-clicking on the !SmartDrag
icon. It will place an icon on the icon bar. If the icon is slabbed in and
orange, the automatic DragASprite usage system is active. If the icon is
slabbed out, it is switched off.

Clicking on the icon with Menu brings up the Smart Drag menu. It allows you
to turn on or off the automatic DragASprite usage system. If DragASprite
is ticked, it is active. Just click on the menu option to toggle whether the
facility is on or not.

If you click on the icon with Select or Adjust, the Smart Drag module is
toggled between being functional and not.

To quit the application, select Quit from the icon bar menu. If you move
to the menu to the right of the Quit entry, another submenu will be
displayed. Choosing All will quit both the front end and remove the
Smart Drag module from memory. Choosing Front end will quit the front end
but leave the Smart Drag module as it is.

The module doesnt have to have the front end running at the same time for it
to work... The front end is merely a method of controlling the module.

The Smart Drag Module
The module provides a Star (*) Command so that it can be controlled:
    *SmartDrag
This command allows the universal DragASprite usage system to be turned on or off. It should be postfixed with On or Off depending on your requirements. If the command is issued without anything after it, the current state of the Smart Drag module will be shown.

Limitations of Smart Drag
Unfortunately some applications are written in such a way that Smart Drag
cant work out which sprite is being dragged. In cases like this, Smart Drag
has to revert to an ordinary, boring rotating dash-box. However these
applications are very much in a minority, and the problem is always due to
unconventional programming anyway, not a bug in Smart Drag.

The two major cases are:
1) Acorns Filer (on RISC OS 3.1 or earlier).
2) Any ABI-based application. This accounts for most Computer Concepts applications.

Thanks
Thanks are due to Andrew Clover and Robert McLachlan, for
helping me with writing the Risc PC-compatible code in version 1.01 and later
of Smart Drag.

Copyright  RISC User 1995

Author	Matt Browne
		rover@arcade.demon.co.uk
