@@ -287,8 +287,9 @@ Exec_stat MCClickCmd::exec(MCExecPoint &ep)
287287 MCeerror->add (EE_CLICK_BADLOCATION , line, pos);
288288 return ES_ERROR ;
289289 }
290- int2 x, y;
291- if (!MCU_stoi2x2 (ep.getsvalue (), x, y))
290+
291+ MCPoint t_clickloc;
292+ if (!MCU_stoi2x2 (ep.getsvalue (), t_clickloc.x , t_clickloc.y ))
292293 {
293294 MCeerror->add (EE_CLICK_NAP , line, pos, ep.getsvalue ());
294295 return ES_ERROR ;
@@ -299,26 +300,34 @@ Exec_stat MCClickCmd::exec(MCExecPoint &ep)
299300 MCeerror->add (EE_CLICK_STACKNOTOPEN , line, pos, ep.getsvalue ());
300301 return ES_ERROR ;
301302 }
303+
304+ // IM-2013-09-23: [[ FullscreenMode ]] get / set mouseloc & clickloc in view coords
305+ MCPoint t_view_clickloc;
306+ t_view_clickloc = MCdefaultstackptr->view_stacktoviewloc (t_clickloc);
307+
302308 uint2 oldmstate = MCmodifierstate;
303309 uint2 oldbstate = MCbuttonstate;
304- int2 oldmx = MCmousex;
305- int2 oldmy = MCmousey;
306- MCmousex = x;
307- MCmousey = y;
308- MCStack *oldms = MCmousestackptr;
310+
311+ MCStack *t_old_mousestack;
312+ MCPoint t_old_mouseloc;
313+
314+ MCscreen->getmouseloc (t_old_mousestack, t_old_mouseloc);
315+ MCscreen->setmouseloc (MCdefaultstackptr, t_view_clickloc);
316+
309317 MCmodifierstate = mstate;
310318 MCbuttonstate |= 0x1L << (which - 1 );
311- MCmousestackptr = MCdefaultstackptr;
312- MCdispatcher->wmfocus_stack (MCdefaultstackptr, x, y);
319+
320+ MCdispatcher->wmfocus_stack (MCdefaultstackptr, t_view_clickloc. x , t_view_clickloc. y );
313321 MCmodifierstate = mstate;
314322 MCbuttonstate |= 0x1L << (which - 1 );
315323 MCdispatcher->wmdown_stack (MCdefaultstackptr, which);
316324 // **** NULL POINTER FIX
317325 if (MCmousestackptr != NULL )
318326 MCscreen->sync (MCmousestackptr->getw ());
319327 Boolean abort = MCscreen->wait (CLICK_INTERVAL , False, False);
320- MCclicklocx = x;
321- MCclicklocy = y;
328+
329+ MCscreen->setclickloc (MCdefaultstackptr, t_view_clickloc);
330+
322331 MCmodifierstate = mstate;
323332 MCbuttonstate &= ~(0x1L << (which - 1 ));
324333 MCdispatcher->wmup_stack (MCdefaultstackptr, which);
@@ -331,13 +340,11 @@ Exec_stat MCClickCmd::exec(MCExecPoint &ep)
331340 || (mfocused->gettype () == CT_IMAGE && mfocused->getstate (CS_DRAW )
332341 && MCdefaultstackptr->gettool (mfocused) == T_POLYGON )))
333342 mfocused->doubleup (1 ); // cancel polygon create
334- if (oldms == NULL || oldms ->getmode () != 0 )
343+ if (t_old_mousestack == NULL || t_old_mousestack ->getmode () != 0 )
335344 {
336- MCmousestackptr = oldms;
337- MCmousex = oldmx;
338- MCmousey = oldmy;
339- if (oldms != NULL )
340- MCdispatcher->wmfocus_stack (oldms, oldmx, oldmy);
345+ MCscreen->setmouseloc (t_old_mousestack, t_old_mouseloc);
346+ if (t_old_mousestack != NULL )
347+ MCdispatcher->wmfocus_stack (t_old_mousestack, t_old_mouseloc.x , t_old_mouseloc.y );
341348 }
342349 if (abort)
343350 {
0 commit comments