cocoa devdraw: activation on receiving Ttop messages

(The new variable "willactivate" is in the input
structure "in", which is illogical.  But this
structure will soon be renamed "app".  I postpone
the renaming to avoid conflicts with simultaneous
Codereview issues.)

R=rsc
CC=plan9port.codebot
http://codereview.appspot.com/5504102
This commit is contained in:
David Jeannot 2012-01-16 17:04:28 -05:00 committed by Russ Cox
parent 5ec2425b17
commit e89a71ffdd
3 changed files with 17 additions and 2 deletions

View file

@ -6,6 +6,7 @@ void setcursor(Cursor*);
void setlabel(char*);
char* getsnarf(void);
void putsnarf(char*);
void topwin(void);
void mousetrack(int, int, int, uint);
void keystroke(int);

View file

@ -105,6 +105,7 @@ struct
int mscroll;
int undo;
int touchevent;
int willactivate;
} in;
static void hidebars(int);
@ -165,6 +166,7 @@ static NSCursor* makecursor(Cursor*);
{
return YES;
}
- (void)applicationDidBecomeActive:(id)arg{ in.willactivate = 0;}
- (void)windowDidEnterFullScreen:(id)arg{ win.isnfs = 1; hidebars(1);}
- (void)windowWillExitFullScreen:(id)arg{ win.isnfs = 0; hidebars(0);}
- (void)windowDidExitFullScreen:(id)arg
@ -1014,7 +1016,7 @@ setmouse(Point p)
NSPoint q;
NSRect r;
if([NSApp isActive] == 0)
if([NSApp isActive]==0 && in.willactivate==0)
return;
if(first){
@ -1282,3 +1284,15 @@ makecursor(Cursor *c)
[i release];
return d;
}
void
topwin(void)
{
[WIN performSelectorOnMainThread:
@selector(makeKeyAndOrderFront:)
withObject:nil
waitUntilDone:NO];
in.willactivate = 1;
[NSApp activateIgnoringOtherApps:YES];
}

View file

@ -212,7 +212,7 @@ runmsg(Wsysmsg *m)
break;
case Ttop:
// _xtopwindow();
topwin();
replymsg(m);
break;