1
0
mirror of https://github.com/moparisthebest/Simba synced 2024-11-21 16:55:01 -05:00

Simba: Fix double-colour picking crash.

This commit is contained in:
Merlijn Wajer 2011-07-22 13:54:19 +02:00
parent 34eb23ba24
commit 297ea2abd8
2 changed files with 24 additions and 3 deletions

View File

@ -411,6 +411,7 @@ type
OpenFileData : TOpenFileData;
WriteFileData : TWriteFileData;
ScriptStartData : TScriptStartData;
procedure UpdateInterpreter;
procedure HandleConnectionData;
procedure HandleOpenFileData;
@ -2871,6 +2872,11 @@ var
c, x, y: Integer;
cobj: TColourPickerObject;
begin
if Picker.Picking then
begin
formWriteln('Error: Already picking a colour');
exit;
end;
Picker.Pick(c, x, y);
cobj := TColourPickerObject.Create(c, Classes.Point(x,y), '');

View File

@ -51,7 +51,12 @@ type
procedure ImageMainMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure ImageInfoMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
Procedure ColorPickUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
procedure ColorPickUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
private
{ Are we currently picking? }
FPicking: Boolean;
public
manager: TIOManager;
{ Form components }
@ -68,7 +73,9 @@ type
{ Handles }
InfoHandle, ImageHandle : HDC;
public
property Picking: Boolean read FPicking;
property OnPick: TColourPickEvent read FPickEvent write FPickEvent;
end;
@ -80,7 +87,8 @@ constructor TMColorPicker.Create(manager: TIOManager);
begin
inherited Create;
self.manager := manager;
Self.manager := manager;
Self.FPicking := False;
end;
destructor TMColorPicker.Destroy;
@ -103,12 +111,17 @@ var
begin
if self.FPicking then
raise Exception.Create('Pick() has not yet returned, but has been called'
+ 'again');
Self.FPicking := True;
{ Disable both of the color pick buttons }
w := 0;
h := 0;
{ If the target window isn't valid (closed etc), make the destkop the new window}
if not Self.Manager.TargetValid then
self.Manager.SetDesktop;
Self.Manager.SetDesktop;
{Desktop is needed for the whole picture}
Desktop := TIOManager.Create;
@ -214,6 +227,8 @@ begin
Desktop.free;
self.FPicking := False;
{ Re-enable the color pick buttons }
// Application.MainForm.Enabled := True;
// ColourHistoryForm.Enabled := True;