|
@@ -7480,6 +7480,23 @@ int laOperatorAvailableSafe(char *ID, laPropPack *This, void *Real_FromInstance,
|
|
|
return laOperatorAvailablePSafe(at, This, Real_FromInstance, Instructions);
|
|
|
}
|
|
|
|
|
|
+void la_EnsureLocalizedEvent(laOperator *From, laOperator *a, laEvent *e){
|
|
|
+ laOperatorType *at=a->Type;
|
|
|
+ if (e&&!e->Localized && at->ExtraMark & LA_EXTRA_TO_PANEL){
|
|
|
+ laWindowToLocal(0, a->ToPanel, &e->x, &e->y);
|
|
|
+ e->Localized = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (e&&e->Localized){
|
|
|
+ if (!at->ExtraMark & LA_EXTRA_TO_PANEL){
|
|
|
+ laLocalToWindow(From, From->ToPanel, &e->x, &e->y);
|
|
|
+ e->Localized = 0;
|
|
|
+ }else{
|
|
|
+ laLocalToWindow(From, From->ToPanel, &e->x, &e->y);
|
|
|
+ laWindowToLocal(a, a->ToPanel, &e->x, &e->y);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
int laInvokeP(laOperator *From, laOperatorType *at, laEvent *e, laPropPack *This, char *args, char *args2){
|
|
|
laOperator *a, *f = From;
|
|
|
int rev;
|
|
@@ -7501,20 +7518,7 @@ int laInvokeP(laOperator *From, laOperatorType *at, laEvent *e, laPropPack *This
|
|
|
|
|
|
lstGeneratePointerList(f ? &f->LocalUiLists : 0, 0, &a->LocalUiLists);
|
|
|
|
|
|
- if (e&&!e->Localized && at->ExtraMark & LA_EXTRA_TO_PANEL){
|
|
|
- laWindowToLocal(0, a->ToPanel, &e->x, &e->y);
|
|
|
- e->Localized = 1;
|
|
|
- }
|
|
|
-
|
|
|
- if (e&&e->Localized){
|
|
|
- if (!at->ExtraMark & LA_EXTRA_TO_PANEL){
|
|
|
- laLocalToWindow(f, f->ToPanel, &e->x, &e->y);
|
|
|
- e->Localized = 0;
|
|
|
- }else{
|
|
|
- laLocalToWindow(f, f->ToPanel, &e->x, &e->y);
|
|
|
- laWindowToLocal(a, a->ToPanel, &e->x, &e->y);
|
|
|
- }
|
|
|
- }
|
|
|
+ la_EnsureLocalizedEvent(From,a,e);
|
|
|
|
|
|
if (From) f->Child = a;
|
|
|
|
|
@@ -7580,7 +7584,7 @@ int laInvokePCreateThis(laOperator *From, laOperatorType *at, laEvent *e, laProp
|
|
|
|
|
|
lstGeneratePointerList(f ? &f->LocalUiLists : 0, 0, &a->LocalUiLists);
|
|
|
|
|
|
- if (e&&!e->Localized && at->ExtraMark & LA_EXTRA_TO_PANEL) laWindowToLocal(0, a->ToPanel, &e->x, &e->y);
|
|
|
+ la_EnsureLocalizedEvent(From,a,e);
|
|
|
|
|
|
if (From) f->Child = a;
|
|
|
|
|
@@ -7616,6 +7620,8 @@ int laInvokeUiP(laOperator *From, laOperatorType *at, laEvent *e, void *inst, la
|
|
|
a->ToPanel = MAIN.ToPanel;
|
|
|
if (!IgnoreLocals) lstGeneratePointerList(f ? &f->LocalUiLists : 0, Locals, &a->LocalUiLists);
|
|
|
|
|
|
+ la_EnsureLocalizedEvent(From,a,e);
|
|
|
+
|
|
|
if (From) f->Child = a;
|
|
|
|
|
|
a->Using = 1;
|