[commit] r2281 - iOS 5.8b9 app quit and window close

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[commit] r2281 - iOS 5.8b9 app quit and window close

commits-3
 
Author: johnmci
Date: 2010-09-06 19:39:16 -0700 (Mon, 06 Sep 2010)
New Revision: 2281

Added:
   trunk/platforms/iOS/vm/OSX/plugins/HostWindowPlugin/
   trunk/platforms/iOS/vm/OSX/plugins/HostWindowPlugin/sqMacHostWindow.h
   trunk/platforms/iOS/vm/OSX/plugins/HostWindowPlugin/sqMacHostWindow.m
Modified:
   trunk/platforms/iOS/vm/English.lproj/MainMenu.xib
   trunk/platforms/iOS/vm/OSX/SqueakOSXAppDelegate.m
   trunk/platforms/iOS/vm/OSX/sqSqueakOSXApplication+attributes.m
   trunk/platforms/iOS/vm/OSX/sqSqueakOSXApplication+events.h
   trunk/platforms/iOS/vm/OSX/sqSqueakOSXApplication+events.m
   trunk/platforms/iOS/vm/OSX/sqSqueakOSXScreenAndWindow.m
   trunk/platforms/iOS/vm/SqueakPureObjc-InfoCOG.plist
Log:
iOS 5.8b9  app quit and window close
Ensure window close send a host window close window event. Ensure the default file quite just then attempts a close window. Smalltalk code has to handle what the host window close event means

Modified: trunk/platforms/iOS/vm/English.lproj/MainMenu.xib
===================================================================
--- trunk/platforms/iOS/vm/English.lproj/MainMenu.xib 2010-09-05 03:39:36 UTC (rev 2280)
+++ trunk/platforms/iOS/vm/English.lproj/MainMenu.xib 2010-09-07 02:39:16 UTC (rev 2281)
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
  <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10D573</string>
- <string key="IBDocument.InterfaceBuilderVersion">762</string>
+ <int key="IBDocument.SystemTarget">1060</int>
+ <string key="IBDocument.SystemVersion">10F569</string>
+ <string key="IBDocument.InterfaceBuilderVersion">804</string>
  <string key="IBDocument.AppKitVersion">1038.29</string>
- <string key="IBDocument.HIToolboxVersion">460.00</string>
+ <string key="IBDocument.HIToolboxVersion">461.00</string>
  <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
  <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">762</string>
+ <string key="NS.object.0">804</string>
  </object>
  <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
  <bool key="EncodedWithXMLCoder">YES</bool>
@@ -19,13 +19,8 @@
  <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
  </object>
  <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
  </object>
  <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
  <bool key="EncodedWithXMLCoder">YES</bool>
@@ -496,7 +491,7 @@
  <string key="NSName">_NSMainMenu</string>
  </object>
  <object class="NSWindowTemplate" id="972006081">
- <int key="NSWindowStyleMask">13</int>
+ <int key="NSWindowStyleMask">15</int>
  <int key="NSWindowBacking">2</int>
  <string key="NSWindowRect">{{335, 390}, {480, 360}}</string>
  <int key="NSWTFlags">880279552</int>
@@ -753,7 +748,9 @@
  <bool key="EncodedWithXMLCoder">YES</bool>
  <object class="IBObjectRecord">
  <int key="objectID">0</int>
- <reference key="object" ref="0"/>
+ <object class="NSArray" key="object" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
  <reference key="children" ref="1048"/>
  <nil key="parent"/>
  </object>
@@ -1418,9 +1415,28 @@
  <string>NSWindow</string>
  </object>
  </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>mainView</string>
+ <string>window</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">mainView</string>
+ <string key="candidateClassName">sqSqueakOSXNSView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">window</string>
+ <string key="candidateClassName">NSWindow</string>
+ </object>
+ </object>
+ </object>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">platforms/Mac OSObjC/vm/OSX/SqueakOSXAppDelegate.h</string>
+ <string key="minorKey">OSX/SqueakOSXAppDelegate.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
@@ -1428,7 +1444,7 @@
  <string key="superclassName">NSApplication</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">platforms/Mac OSObjC/vm/OSX/SqueakOSXApplication.h</string>
+ <string key="minorKey">OSX/SqueakOSXApplication.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
@@ -1436,29 +1452,29 @@
  <string key="superclassName">NSObject</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">platforms/Mac OSObjC/vm/Common/Classes/sqSqueakAppDelegate.h</string>
+ <string key="minorKey">Common/Classes/sqSqueakAppDelegate.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
  <string key="className">sqSqueakOSXNSView</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">platforms/Mac OSObjC/vm/OSX/SqViewBitmapConversion.h</string>
+ <string key="minorKey">OSX/SqViewBitmapConversion.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
  <string key="className">sqSqueakOSXNSView</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">platforms/Mac OSObjC/vm/OSX/SqViewClut.h</string>
+ <string key="minorKey">OSX/SqViewClut.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
  <string key="className">sqSqueakOSXNSView</string>
- <string key="superclassName">NSView</string>
+ <string key="superclassName">NSOpenGLView</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">platforms/Mac OSObjC/vm/OSX/sqSqueakOSXNSView.h</string>
+ <string key="minorKey">OSX/sqSqueakOSXNSView.h</string>
  </object>
  </object>
  </object>
@@ -1547,6 +1563,45 @@
  <string>id</string>
  </object>
  </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>printDocument:</string>
+ <string>revertDocumentToSaved:</string>
+ <string>runPageLayout:</string>
+ <string>saveDocument:</string>
+ <string>saveDocumentAs:</string>
+ <string>saveDocumentTo:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">printDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">revertDocumentToSaved:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">runPageLayout:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">saveDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">saveDocumentAs:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">saveDocumentTo:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
  <string key="minorKey">AppKit.framework/Headers/NSDocument.h</string>
@@ -1579,6 +1634,35 @@
  <string>id</string>
  </object>
  </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>clearRecentDocuments:</string>
+ <string>newDocument:</string>
+ <string>openDocument:</string>
+ <string>saveAllDocuments:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">clearRecentDocuments:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">newDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">openDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">saveAllDocuments:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
  <string key="minorKey">AppKit.framework/Headers/NSDocumentController.h</string>
@@ -1744,20 +1828,6 @@
  <string key="className">NSObject</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
  <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
  </object>
  </object>
@@ -1800,20 +1870,6 @@
  <string key="className">NSObject</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
  <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
  </object>
  </object>
@@ -1821,87 +1877,81 @@
  <string key="className">NSObject</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
  <string key="className">NSObject</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
  <string key="className">NSObject</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
  <string key="className">NSObject</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
+ <string key="minorKey">PrintCore.framework/Headers/PDEPluginInterface.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
  <string key="className">NSObject</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
  <string key="className">NSObject</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
  <string key="className">NSObject</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ <string key="minorKey">QuartzCore.framework/Headers/CIImageProvider.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
  <string key="className">NSObject</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
+ <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
  <string key="className">NSObject</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">PrintCore.framework/Headers/PDEPluginInterface.h</string>
+ <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
  <string key="className">NSObject</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
+ <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
+ <string key="className">NSOpenGLView</string>
+ <string key="superclassName">NSView</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
+ <string key="minorKey">AppKit.framework/Headers/NSOpenGLView.h</string>
  </object>
  </object>
  <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">QuartzCore.framework/Headers/CIImageProvider.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
  <string key="className">NSResponder</string>
  <object class="IBClassDescriptionSource" key="sourceIdentifier">
  <string key="majorKey">IBFrameworkSource</string>
@@ -1980,14 +2030,14 @@
  <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
  <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
  <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1050" key="NS.object.0"/>
+ <integer value="1060" key="NS.object.0"/>
  </object>
  <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
  <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
  <integer value="3000" key="NS.object.0"/>
  </object>
  <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">../SqueakPureObjc.xcodeproj</string>
+ <string key="IBDocument.LastKnownRelativeProjectPath">../SqueakPureObjcCOGVM.xcodeproj</string>
  <int key="IBDocument.defaultPropertyAccessControl">3</int>
  <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
  <bool key="EncodedWithXMLCoder">YES</bool>

Modified: trunk/platforms/iOS/vm/OSX/SqueakOSXAppDelegate.m
===================================================================
--- trunk/platforms/iOS/vm/OSX/SqueakOSXAppDelegate.m 2010-09-05 03:39:36 UTC (rev 2280)
+++ trunk/platforms/iOS/vm/OSX/SqueakOSXAppDelegate.m 2010-09-07 02:39:16 UTC (rev 2281)
@@ -76,6 +76,15 @@
 
 }
 
+- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender {
+ return NO;
+}
+
+- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
+ [self.window performClose: self.window];
+ return NSTerminateCancel;
+}
+
 - (id) createPossibleWindow {
  sqInt width,height;
  extern sqInt getSavedWindowSize(void); //This is VM Callback

Added: trunk/platforms/iOS/vm/OSX/plugins/HostWindowPlugin/sqMacHostWindow.h
===================================================================
--- trunk/platforms/iOS/vm/OSX/plugins/HostWindowPlugin/sqMacHostWindow.h                        (rev 0)
+++ trunk/platforms/iOS/vm/OSX/plugins/HostWindowPlugin/sqMacHostWindow.h 2010-09-07 02:39:16 UTC (rev 2281)
@@ -0,0 +1,71 @@
+/*
+ *  sqMacHostWindow.h
+ *  SqueakVMForCarbon
+ *
+ *  Created by John M McIntosh on Tue Jul 20 2004.
+ *
+
+   3.8.15b3  Feb 19th, 2007 JMM add cursor set logic
+   Altered for IPhone
+
+ */
+/*
+ Copyright (c) 2008 Corporate Smalltalk Consulting Ltd. All rights reserved.
+ MIT License
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+ The end-user documentation included with the redistribution, if any, must include the following acknowledgment:
+ "This product includes software developed by Corporate Smalltalk Consulting Ltd (http://www.smalltalkconsulting.com)
+ and its contributors", in the same place and form as other third-party acknowledgments.
+ Alternately, this acknowledgment may appear in the software itself, in the same form and location as other
+ such third-party acknowledgments.
+ */
+//
+
+#include "HostWindowPlugin.h"
+#ifdef BUILD_FOR_OSX
+#include <ApplicationServices/ApplicationServices.h>
+#else
+#include <CoreGraphics/CoreGraphics.h>
+#endif
+/* window handle type */
+#define wHandleType void *
+#define wIndexType sqInt
+
+typedef struct windowDescriptorBlock {
+ struct windowDescriptorBlock * next;
+ wHandleType handle;
+ wIndexType windowIndex;
+ /* extra fields to support your platform needs */
+ void * context;
+ CGRect updateArea;
+ sqInt width;
+ sqInt height;
+} windowDescriptorBlock;
+
+windowDescriptorBlock *windowBlockFromHandle(wHandleType windowHandle);
+sqInt windowIndexFromBlock( windowDescriptorBlock * thisWindow);
+sqInt windowIndexFromHandle(wHandleType windowHandle);
+wHandleType windowHandleFromIndex(wIndexType windowIndex);
+windowDescriptorBlock *AddWindowBlock(void);
+windowDescriptorBlock *windowBlockFromIndex(sqInt windowIndex);
+sqInt getCurrentIndexInUse(void);

Added: trunk/platforms/iOS/vm/OSX/plugins/HostWindowPlugin/sqMacHostWindow.m
===================================================================
--- trunk/platforms/iOS/vm/OSX/plugins/HostWindowPlugin/sqMacHostWindow.m                        (rev 0)
+++ trunk/platforms/iOS/vm/OSX/plugins/HostWindowPlugin/sqMacHostWindow.m 2010-09-07 02:39:16 UTC (rev 2281)
@@ -0,0 +1,219 @@
+/*
+ *  sqMacHostWindow.m
+ *  SqueakVMForCarbon
+ *
+ *  Created by John M McIntosh on Tue Jul 20 2004.
+ *  Copyright Corporate Smalltalk Consulting Ltd 2008. All rights reserved.
+ *
+ July 15th 2005 add logic to flush QD buffers for os-x 10.4
+ 3.8.15b3  Feb 19th, 2007 JMM add cursor set logic
+ May 15th, 2008 IPhone
+ Sept 6th, 2010 Cocoa
+
+ */
+/*
+ Copyright (c) 2008 Corporate Smalltalk Consulting Ltd. All rights reserved.
+ MIT License
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+ The end-user documentation included with the redistribution, if any, must include the following acknowledgment:
+ "This product includes software developed by Corporate Smalltalk Consulting Ltd (http://www.smalltalkconsulting.com)
+ and its contributors", in the same place and form as other third-party acknowledgments.
+ Alternately, this acknowledgment may appear in the software itself, in the same form and location as other
+ such third-party acknowledgments.
+ */
+
+//
+#include <Cocoa/Cocoa.h>
+#include "sqVirtualMachine.h"
+#include "sqMacHostWindow.h"
+#include <stdlib.h>
+
+extern struct VirtualMachine *interpreterProxy;
+sqInt RemoveWindowBlock(windowDescriptorBlock * thisWindow);
+
+sqInt createWindowWidthheightoriginXyattrlength(sqInt w,sqInt h,sqInt x,sqInt y,  char * list, sqInt listLength) {
+ return -1;
+}
+
+int closeWindow(int windowIndex) {
+ NSWindow *windowHandle;
+ windowHandle = windowHandleFromIndex(windowIndex);
+ if(windowHandle == NULL)
+ return 0;
+ windowBlockFromIndex(windowIndex)->context = NULL;
+ RemoveWindowBlock(windowBlockFromIndex(windowIndex));
+ [windowHandle close];
+ return 1;
+}
+
+sqInt ioPositionOfWindow(wIndexType windowIndex)
+{
+ if (windowHandleFromIndex(windowIndex) == NULL)
+ return -1;
+ return (0 << 16) | (0 & 0xFFFF);  /* left is high 16 bits; top is low 16 bits */
+}
+
+sqInt ioPositionOfWindowSetxy(wIndexType windowIndex, sqInt x, sqInt y)
+{
+ return -1;
+}
+
+sqInt ioSizeOfWindow(wIndexType windowIndex)
+{
+ sqInt w=0, h=0;
+ return (w << 16) | (h & 0xFFFF);  /* w is high 16 bits; h is low 16 bits */
+}
+
+int ioPositionOfNativeDisplay(unsigned long windowHandle)
+{
+ sqInt w=0, h=0;
+ return (w << 16) | (h & 0xFFFF);  /* w is high 16 bits; h is low 16 bits */
+}
+
+sqInt ioSizeOfWindowSetxy(wIndexType windowIndex, sqInt x, sqInt y)
+{
+ return (0);  /* w is high 16 bits; h is low 16 bits */
+}
+
+sqInt ioSetTitleOfWindow(sqInt windowIndex, char * newTitle, sqInt sizeOfTitle) {
+ return 1;
+}
+
+sqInt ioCloseAllWindows(void) {
+ return 1;
+}
+
+
+
+/* addendum to sqPlatformSpecific.h */
+/* multiple host windows stuff */
+
+static windowDescriptorBlock *windowListRoot = NULL;
+
+/* end addendum to sqPlatformSpecific.h */
+
+/* simple linked list management code */
+/* window list management */
+
+windowDescriptorBlock *windowBlockFromIndex(sqInt windowIndex) {
+windowDescriptorBlock *entry;
+ entry = windowListRoot;
+ while(entry) {
+ if(entry->windowIndex == windowIndex) return entry;
+ entry = entry->next;
+ }
+ return NULL;
+}
+
+windowDescriptorBlock *windowBlockFromHandle(wHandleType windowHandle) {
+windowDescriptorBlock *entry;
+ entry = windowListRoot;
+ while(entry) {
+ if(entry->handle == windowHandle) return entry;
+ entry = entry->next;
+ }
+ return NULL;
+}
+
+
+wHandleType windowHandleFromIndex(sqInt windowIndex)  {
+windowDescriptorBlock *entry;
+ entry = windowListRoot;
+ while(entry) {
+ if(entry->windowIndex == windowIndex) return entry->handle;
+ entry = entry->next;
+ }
+ return NULL;
+}
+
+sqInt windowIndexFromHandle(wHandleType windowHandle) {
+windowDescriptorBlock *entry;
+ entry = windowListRoot;
+ while(entry) {
+ if(entry->handle == windowHandle) return entry->windowIndex;
+ entry = entry->next;
+ }
+ return 0;
+}
+
+sqInt windowIndexFromBlock( windowDescriptorBlock * thisWindow) {
+windowDescriptorBlock *entry;
+ entry = windowListRoot;
+ while(entry) {
+ if(entry == thisWindow) return entry->windowIndex;
+ entry = entry->next;
+ }
+ return 0;
+}
+
+static sqInt nextIndex = 1;
+
+windowDescriptorBlock *AddWindowBlock(void) {
+/* create a new entry in the linkedlist of windows.
+ * If the calloc fails, return NULL which will then go back to the
+ * prim and fail it cleanly.
+ * Initialize the block to a sensible state
+ */
+windowDescriptorBlock *thisWindow;
+
+ thisWindow = (windowDescriptorBlock*) calloc(1, sizeof(windowDescriptorBlock));
+ if ( thisWindow == NULL) {
+ return NULL;
+ }
+ thisWindow->next = windowListRoot;
+ thisWindow->windowIndex = nextIndex++;
+ thisWindow->handle = NULL;
+ windowListRoot = thisWindow;
+
+ return windowListRoot;
+}
+
+/*
+ * RemoveWindowBlock:
+ * Remove the given entry from the list of windows.
+ * free it, if found.
+ */
+ sqInt RemoveWindowBlock(windowDescriptorBlock * thisWindow) {
+windowDescriptorBlock *prevEntry;
+
+
+ /* Unlink the entry from the module chain */
+ if(thisWindow == windowListRoot) {
+ windowListRoot = thisWindow->next;
+ } else {
+ prevEntry = windowListRoot;
+ while(prevEntry->next != thisWindow) {
+ prevEntry = prevEntry->next;
+ if (prevEntry == NULL) {
+ return 0;
+ }
+ }
+ prevEntry->next = thisWindow->next;
+ }
+ free(thisWindow);
+ return 1;
+}
+
+sqInt getCurrentIndexInUse(void) {
+ return nextIndex-1;
+}

Modified: trunk/platforms/iOS/vm/OSX/sqSqueakOSXApplication+attributes.m
===================================================================
--- trunk/platforms/iOS/vm/OSX/sqSqueakOSXApplication+attributes.m 2010-09-05 03:39:36 UTC (rev 2280)
+++ trunk/platforms/iOS/vm/OSX/sqSqueakOSXApplication+attributes.m 2010-09-07 02:39:16 UTC (rev 2281)
@@ -83,7 +83,8 @@
 
 #if STACKVM
 
- return "Mac Cocoa Cog 5.8b8 04-Sep-10 >8A66B7E0-B578-4E5F-97B4-6195547A35F5<";
+ return "Mac Cocoa Cog 5.8b9 06-Sep-10 >01641B99-1842-4422-A99D-43153BEDEFFA<";
+// return "Mac Cocoa Cog 5.8b8 04-Sep-10 >8A66B7E0-B578-4E5F-97B4-6195547A35F5<";
 // return "Mac Cocoa Cog 5.8b7 02-Sep-10 >4EBF00E3-453E-4010-9AC8-6B64C292984B<";
 // return "Mac Cocoa Cog 5.8b6 31-Aug-10 >DFB49E57-40FB-44B9-97D3-B7CA51608429<";
 // return "Mac Cocoa Cog 5.8b5 30-Aug-10 >0A92B82A-9AC1-4B0E-9DEE-440C3FFAE568<";

Modified: trunk/platforms/iOS/vm/OSX/sqSqueakOSXApplication+events.h
===================================================================
--- trunk/platforms/iOS/vm/OSX/sqSqueakOSXApplication+events.h 2010-09-05 03:39:36 UTC (rev 2280)
+++ trunk/platforms/iOS/vm/OSX/sqSqueakOSXApplication+events.h 2010-09-07 02:39:16 UTC (rev 2281)
@@ -38,7 +38,7 @@
 #import "sqSqueakOSXApplication.h"
 #import "sqSqueakMainApplication+events.h"
 #import "sqSqueakOSXNSView.h"
-
+@class NSWIndow;
 @interface sqSqueakOSXApplication (events)
 
 - (void) recordCharEvent:(NSString *) unicodeString fromView: (sqSqueakOSXNSView *) mainView;
@@ -51,4 +51,5 @@
 - (NSUInteger) translateCocoaModifiersToCarbonModifiers: (NSUInteger) modifiers;
 - (int) translateCocoaModifiersToSqueakModifiers: (NSUInteger) modifiers;
 - (void) recordDragEvent: (int) dragType numberOfFiles: (int) numFiles where: (NSPoint) local_point windowIndex: (sqInt) windowIndex;
+- (void) recordWindowEvent: (int) type window: (NSWIndow *) window;
 @end

Modified: trunk/platforms/iOS/vm/OSX/sqSqueakOSXApplication+events.m
===================================================================
--- trunk/platforms/iOS/vm/OSX/sqSqueakOSXApplication+events.m 2010-09-05 03:39:36 UTC (rev 2280)
+++ trunk/platforms/iOS/vm/OSX/sqSqueakOSXApplication+events.m 2010-09-07 02:39:16 UTC (rev 2281)
@@ -43,6 +43,7 @@
 #import "sqSqueakOSXInfoPlistInterface.h"
 #import "keyBoardStrokeDetails.h"
 #import "sqSqueakOSXNSView.h"
+#import "sqMacHostWindow.h"
 
 extern struct VirtualMachine* interpreterProxy;
 extern SqueakOSXAppDelegate *gDelegateApp;
@@ -390,4 +391,20 @@
  interpreterProxy->signalSemaphoreWithIndex(gDelegateApp.squeakApplication.inputSemaphoreIndex);
 }
 
+- (void) recordWindowEvent: (int) windowType window: (NSWIndow *) window {
+ sqWindowEvent evt;
+
+ evt.type= WindowEventClose;
+ evt.timeStamp= (int) ioMSecs();
+ evt.action= windowType;
+ evt.value1 =  0;
+ evt.value2 =  0;
+ evt.value3 =  0;
+ evt.value4 =  0;
+ evt.windowIndex = windowIndexFromHandle((wHandleType)window);
+ [self pushEventToQueue: (sqInputEvent *) &evt];
+
+ interpreterProxy->signalSemaphoreWithIndex(gDelegateApp.squeakApplication.inputSemaphoreIndex);
+}
+
 @end

Modified: trunk/platforms/iOS/vm/OSX/sqSqueakOSXScreenAndWindow.m
===================================================================
--- trunk/platforms/iOS/vm/OSX/sqSqueakOSXScreenAndWindow.m 2010-09-05 03:39:36 UTC (rev 2280)
+++ trunk/platforms/iOS/vm/OSX/sqSqueakOSXScreenAndWindow.m 2010-09-07 02:39:16 UTC (rev 2281)
@@ -43,7 +43,6 @@
 #import "SqViewBitmapConversion.h"
 
 extern SqueakOSXAppDelegate *gDelegateApp;
-wHandleType windowHandleFromIndex(sqInt windowIndex);
 
 @implementation sqSqueakOSXScreenAndWindow
 @synthesize mainViewOnWindow;
@@ -67,4 +66,8 @@
  return false;
 }
 
+- (BOOL)windowShouldClose:(id)window {
+ [gDelegateApp.squeakApplication recordWindowEvent: WindowEventClose window: window];
+ return NO;
+}
 @end

Modified: trunk/platforms/iOS/vm/SqueakPureObjc-InfoCOG.plist
===================================================================
--- trunk/platforms/iOS/vm/SqueakPureObjc-InfoCOG.plist 2010-09-05 03:39:36 UTC (rev 2280)
+++ trunk/platforms/iOS/vm/SqueakPureObjc-InfoCOG.plist 2010-09-07 02:39:16 UTC (rev 2281)
@@ -350,7 +350,7 @@
  <key>CFBundleExecutable</key>
  <string>${EXECUTABLE_NAME}</string>
  <key>CFBundleGetInfoString</key>
- <string>Squeak VM 5.8b8 http://www.squeak.org</string>
+ <string>Squeak VM 5.8b9 http://www.squeak.org</string>
  <key>CFBundleIconFile</key>
  <string>Squeak.icns</string>
  <key>CFBundleIdentifier</key>
@@ -362,11 +362,11 @@
  <key>CFBundlePackageType</key>
  <string>APPL</string>
  <key>CFBundleShortVersionString</key>
- <string>5.8b8</string>
+ <string>5.8b9</string>
  <key>CFBundleSignature</key>
  <string>FAST</string>
  <key>CFBundleVersion</key>
- <string>26.0</string>
+ <string>27.0</string>
  <key>LSBackgroundOnly</key>
  <false/>
  <key>LSMinimumSystemVersion</key>