tcocoa devdraw: activation on receiving Ttop messages - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
commit e89a71ffdd0b8807505db64ece9307f03252da51
parent 5ec2425b17766f20600e224b05988dcc7580ea18
Author: David Jeannot 
Date:   Mon, 16 Jan 2012 17:04:28 -0500

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
tthe renaming to avoid conflicts with simultaneous
Codereview issues.)

R=rsc
CC=plan9port.codebot
http://codereview.appspot.com/5504102

Diffstat:
  M src/cmd/devdraw/cocoa-screen.h      |       1 +
  M src/cmd/devdraw/cocoa-screen.m      |      16 +++++++++++++++-
  M src/cmd/devdraw/cocoa-srv.c         |       2 +-

3 files changed, 17 insertions(+), 2 deletions(-)
---
diff --git a/src/cmd/devdraw/cocoa-screen.h b/src/cmd/devdraw/cocoa-screen.h
t@@ -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);
diff --git a/src/cmd/devdraw/cocoa-screen.m b/src/cmd/devdraw/cocoa-screen.m
t@@ -105,6 +105,7 @@ struct
         int                mscroll;
         int                undo;
         int                touchevent;
+        int                willactivate;
 } in;
 
 static void hidebars(int);
t@@ -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
t@@ -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){
t@@ -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];
+}
diff --git a/src/cmd/devdraw/cocoa-srv.c b/src/cmd/devdraw/cocoa-srv.c
t@@ -212,7 +212,7 @@ runmsg(Wsysmsg *m)
                 break;
         
         case Ttop:
-        //        _xtopwindow();
+                topwin();
                 replymsg(m);
                 break;