}
#endif
+//! Extension for Cocoa_Window::InvalidateContent().
+#if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
+ @interface UIView (UIViewOcctAdditions)
+ - (void )invalidateContentOcct: (id )theSender;
+ @end
+ @implementation UIView (UIViewOcctAdditions)
+ - (void )invalidateContentOcct: (id )theSender
+ {
+ (void )theSender;
+ [self setNeedsDisplay];
+ }
+ @end
+#else
+ @interface NSView (NSViewOcctAdditions)
+ - (void )invalidateContentOcct: (id )theSender;
+ @end
+ @implementation NSView (NSViewOcctAdditions)
+ - (void )invalidateContentOcct: (id )theSender
+ {
+ (void )theSender;
+ [self setNeedsDisplay: YES];
+ }
+ @end
+#endif
+
// =======================================================================
// function : Cocoa_Window
// purpose :
theWidth = (Standard_Integer )aBounds.size.width;
theHeight = (Standard_Integer )aBounds.size.height;
}
+
+// =======================================================================
+// function : SetTitle
+// purpose :
+// =======================================================================
+void Cocoa_Window::SetTitle (const TCollection_AsciiString& theTitle)
+{
+ if (myHView == NULL)
+ {
+ return;
+ }
+
+#if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
+ (void )theTitle;
+#else
+ NSWindow* aWindow = [myHView window];
+ NSString* aTitleNS = [[NSString alloc] initWithUTF8String: theTitle.ToCString()];
+ [aWindow setTitle: aTitleNS];
+ [aTitleNS release];
+#endif
+}
+
+// =======================================================================
+// function : InvalidateContent
+// purpose :
+// =======================================================================
+void Cocoa_Window::InvalidateContent (const Handle(Aspect_DisplayConnection)& )
+{
+ if (myHView == NULL)
+ {
+ return;
+ }
+
+ if ([NSThread isMainThread])
+ {
+ #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
+ [myHView setNeedsDisplay];
+ #else
+ [myHView setNeedsDisplay: YES];
+ #endif
+ }
+ else
+ {
+ [myHView performSelectorOnMainThread: @selector(invalidateContentOcct:)
+ withObject: NULL
+ waitUntilDone: NO];
+ }
+}
+
+// =======================================================================
+// function : VirtualKeyFromNative
+// purpose :
+// =======================================================================
+Aspect_VKey Cocoa_Window::VirtualKeyFromNative (Standard_Integer theKey)
+{
+ switch (theKey)
+ {
+ case 0x00: return Aspect_VKey_A;
+ case 0x01: return Aspect_VKey_S;
+ case 0x02: return Aspect_VKey_D;
+ case 0x03: return Aspect_VKey_F;
+ case 0x04: return Aspect_VKey_H;
+ case 0x05: return Aspect_VKey_G;
+ case 0x06: return Aspect_VKey_Z;
+ case 0x07: return Aspect_VKey_X;
+ case 0x08: return Aspect_VKey_C;
+ case 0x09: return Aspect_VKey_V;
+ case 0x0A: return Aspect_VKey_UNKNOWN;
+ case 0x0B: return Aspect_VKey_B;
+ case 0x0C: return Aspect_VKey_Q;
+ case 0x0D: return Aspect_VKey_W;
+ case 0x0E: return Aspect_VKey_E;
+ case 0x0F: return Aspect_VKey_R;
+ case 0x10: return Aspect_VKey_Y;
+ case 0x11: return Aspect_VKey_T;
+ case 0x12: return Aspect_VKey_1;
+ case 0x13: return Aspect_VKey_2;
+ case 0x14: return Aspect_VKey_3;
+ case 0x15: return Aspect_VKey_4;
+ case 0x16: return Aspect_VKey_6;
+ case 0x17: return Aspect_VKey_5;
+ case 0x18: return Aspect_VKey_Plus;
+ case 0x19: return Aspect_VKey_9;
+ case 0x1A: return Aspect_VKey_7;
+ case 0x1B: return Aspect_VKey_Minus;
+ case 0x1C: return Aspect_VKey_8;
+ case 0x1D: return Aspect_VKey_0;
+ case 0x1E: return Aspect_VKey_BracketRight;
+ case 0x1F: return Aspect_VKey_O;
+ case 0x20: return Aspect_VKey_U;
+ case 0x21: return Aspect_VKey_BracketLeft;
+ case 0x22: return Aspect_VKey_I;
+ case 0x23: return Aspect_VKey_P;
+ case 0x24: return Aspect_VKey_Enter;
+ case 0x25: return Aspect_VKey_L;
+ case 0x26: return Aspect_VKey_J;
+ case 0x27: return Aspect_VKey_Apostrophe;
+ case 0x28: return Aspect_VKey_K;
+ case 0x29: return Aspect_VKey_Semicolon;
+ case 0x2A: return Aspect_VKey_Backslash;
+ case 0x2B: return Aspect_VKey_Comma; // 43, ',<'
+ case 0x2C: return Aspect_VKey_Slash; //ST_VK_OEM_2, // 44, '?/'
+ case 0x2D: return Aspect_VKey_N;
+ case 0x2E: return Aspect_VKey_M;
+ case 0x2F: return Aspect_VKey_Period; // 47, '.>'
+ case 0x30: return Aspect_VKey_Tab;
+ case 0x31: return Aspect_VKey_Space;
+ case 0x32: return Aspect_VKey_Tilde; // '~`'
+ case 0x33: return Aspect_VKey_Backspace;
+ case 0x34: return Aspect_VKey_UNKNOWN;
+ case 0x35: return Aspect_VKey_Escape;
+ case 0x36: return Aspect_VKey_UNKNOWN; // Aspect_VKey_Cmd, right Command
+ case 0x37: return Aspect_VKey_UNKNOWN; // Aspect_VKey_Cmd, left Command
+ case 0x38: return Aspect_VKey_Shift; // left shift
+ case 0x39: return Aspect_VKey_UNKNOWN;
+ case 0x3A: return Aspect_VKey_Alt; // left alt/option
+ case 0x3B: return Aspect_VKey_Control;
+ case 0x3C: return Aspect_VKey_Shift; // right shift
+ case 0x3D: return Aspect_VKey_Alt; // right alt/option
+ case 0x3E: return Aspect_VKey_UNKNOWN;
+ case 0x3F: return Aspect_VKey_UNKNOWN; // Aspect_VKey_Func, fn
+ case 0x40:
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ case 0x44:
+ case 0x45:
+ case 0x46:
+ case 0x47:
+ case 0x48:
+ case 0x49:
+ case 0x4A:
+ case 0x4B: return Aspect_VKey_UNKNOWN;
+ case 0x4C: return Aspect_VKey_Enter; // fn + return
+ case 0x4D:
+ case 0x4E:
+ case 0x4F:
+ case 0x50:
+ case 0x51:
+ case 0x52:
+ case 0x53:
+ case 0x54:
+ case 0x55:
+ case 0x56:
+ case 0x57:
+ case 0x58:
+ case 0x59:
+ case 0x5A:
+ case 0x5B:
+ case 0x5C:
+ case 0x5D:
+ case 0x5E:
+ case 0x5F: return Aspect_VKey_UNKNOWN;
+ case 0x60: return Aspect_VKey_F5;
+ case 0x61: return Aspect_VKey_F6;
+ case 0x62: return Aspect_VKey_F7;
+ case 0x63: return Aspect_VKey_F3;
+ case 0x64: return Aspect_VKey_F8;
+ case 0x65: return Aspect_VKey_F9;
+ //case 0x66: return Aspect_VKey_UNKNOWN;
+ case 0x67: return Aspect_VKey_F11;
+ //case 0x68: return Aspect_VKey_UNKNOWN;
+ //case 0x69: return Aspect_VKey_UNKNOWN;
+ //case 0x6A: return Aspect_VKey_UNKNOWN;
+ //case 0x6B: return Aspect_VKey_UNKNOWN;
+ //case 0x6C: return Aspect_VKey_UNKNOWN;
+ case 0x6D: return Aspect_VKey_F10;
+ //case 0x6E: return Aspect_VKey_UNKNOWN;
+ case 0x6F: return Aspect_VKey_F12;
+ //case 0x70: return Aspect_VKey_UNKNOWN;
+ //case 0x71: return Aspect_VKey_UNKNOWN;
+ //case 0x72: return Aspect_VKey_UNKNOWN;
+ case 0x73: return Aspect_VKey_Home;
+ case 0x74: return Aspect_VKey_PageUp;
+ case 0x75: return Aspect_VKey_Delete;
+ case 0x76: return Aspect_VKey_F4;
+ case 0x77: return Aspect_VKey_End;
+ case 0x78: return Aspect_VKey_F2;
+ case 0x79: return Aspect_VKey_PageDown;
+ case 0x7A: return Aspect_VKey_F1;
+ case 0x7B: return Aspect_VKey_Left;
+ case 0x7C: return Aspect_VKey_Right;
+ case 0x7D: return Aspect_VKey_Down;
+ case 0x7E: return Aspect_VKey_Up;
+ case 0x7F: return Aspect_VKey_UNKNOWN;
+ }
+ return Aspect_VKey_UNKNOWN;
+}