src/gui/kernel/qcocoasharedwindowmethods_mac_p.h
changeset 37 758a864f9613
parent 33 3e2da88830cd
--- a/src/gui/kernel/qcocoasharedwindowmethods_mac_p.h	Fri Sep 17 08:34:18 2010 +0300
+++ b/src/gui/kernel/qcocoasharedwindowmethods_mac_p.h	Mon Oct 04 01:19:32 2010 +0300
@@ -58,6 +58,8 @@
 extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.mm
 extern QPointer<QWidget> qt_button_down; //qapplication_mac.cpp
 extern const QStringList& qEnabledDraggedTypes(); // qmime_mac.cpp
+extern void qt_event_request_window_change(QWidget *); // qapplication_mac.mm
+extern void qt_mac_send_posted_gl_updates(QWidget *widget); // qapplication_mac.mm
 
 Q_GLOBAL_STATIC(QPointer<QWidget>, currentDragTarget);
 
@@ -227,6 +229,19 @@
     [self release];
 }
 
+- (void)setInitialFirstResponder:(NSView *)view
+{
+    // This method is called the first time the window is placed on screen and
+    // is the earliest point in time we can connect OpenGL contexts to NSViews.
+    QWidget *qwidget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self];
+    if (qwidget) {
+        qt_event_request_window_change(qwidget);
+        qt_mac_send_posted_gl_updates(qwidget);
+    }
+
+    [super setInitialFirstResponder:view];
+}
+
 - (BOOL)makeFirstResponder:(NSResponder *)responder
 {
     // For some reason Cocoa wants to flip the first responder