tcocoa devdraw: activation on receiving Ttop messages - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit e89a71ffdd0b8807505db64ece9307f03252da51
 (DIR) parent 5ec2425b17766f20600e224b05988dcc7580ea18
 (HTM) Author: David Jeannot <djeannot24@gmail.com>
       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(-)
       ---
 (DIR) 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);
 (DIR) 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];
       +}
 (DIR) 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;