Skip to content

Commit

Permalink
ide (ecere)/FormDesigner: Fixed crash on dragging custom control onto…
Browse files Browse the repository at this point in the history
… form (#779)

- This resolves http://ecere.com/mantis/view.php?id=779
  • Loading branch information
jerstlouis committed Feb 8, 2013
1 parent 1bf187a commit 314fabd
Showing 1 changed file with 36 additions and 29 deletions.
65 changes: 36 additions & 29 deletions ecere/src/gui/FormDesigner.ec
Expand Up @@ -583,45 +583,52 @@ class FormDesigner : ClassDesignerBase
if(parent)
{
ObjectInfo object;
Window control = (Window)eInstance_New(eSystem_FindClass(form._class.module, objectClass));
Window control;
Class c = eSystem_FindClass(form._class.module, objectClass);
if(!c)
c = eSystem_FindClass(form._class.module.application, objectClass);
if(c)
{
control = (Window)eInstance_New(c);

activeDesigner.CodeAddObject(control, &object);
activeDesigner.CodeAddObject(control, &object);

while(!parent.name)
{
x += parent.position.x + parent.clientStart.x;
y += parent.position.y + parent.clientStart.y;
parent = parent.parent;
}
while(!parent.name)
{
x += parent.position.x + parent.clientStart.x;
y += parent.position.y + parent.clientStart.y;
parent = parent.parent;
}

control.object = object;
control.object = object;

control.parent = parent;
control.master = form;
control.parent = parent;
control.master = form;

x -= x % GridSnap;
y -= y % GridSnap;
x -= x % GridSnap;
y -= y % GridSnap;

control.position.x = x;
control.position.y = y;
control.caption = object.name;
control.position.x = x;
control.position.y = y;
control.caption = object.name;

LockControls(control, control);
LockControls(control, control);

control.Create();
if(parent == form)
{
ObjectInfo previous = control.object;
while((previous = previous.prev) && ((Window)previous.instance).parent != form);
if(previous)
control.parent.children.Move(control, (Window)previous.instance);
}
control.Create();
if(parent == form)
{
ObjectInfo previous = control.object;
while((previous = previous.prev) && ((Window)previous.instance).parent != form);
if(previous)
control.parent.children.Move(control, (Window)previous.instance);
}

activeDesigner.SheetAddObject(object);
activeDesigner.SheetAddObject(object);

//selected = control;
//activeDesigner.Update(null);
Update(null);
//selected = control;
//activeDesigner.Update(null);
Update(null);
}
}
}
}
Expand Down

0 comments on commit 314fabd

Please sign in to comment.