Changeset 561 for trunk/src/gui/kernel/qcocoapanel_mac.mm
- Timestamp:
- Feb 11, 2010, 11:19:06 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/vendor/nokia/qt/4.6.1 merged eligible /branches/vendor/nokia/qt/current merged eligible /branches/vendor/trolltech/qt/current 3-149
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/src/gui/kernel/qcocoapanel_mac.mm
r2 r561 2 2 ** 3 3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 ** Contact: Qt Software Information (qt-info@nokia.com) 4 ** All rights reserved. 5 ** Contact: Nokia Corporation (qt-info@nokia.com) 5 6 ** 6 7 ** This file is part of the QtGui module of the Qt Toolkit. … … 21 22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 22 23 ** 23 ** In addition, as a special exception, Nokia gives you certain 24 ** additional rights. These rights are described in the Nokia Qt LGPL 25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this 26 ** package. 24 ** In addition, as a special exception, Nokia gives you certain additional 25 ** rights. These rights are described in the Nokia Qt LGPL Exception 26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 27 27 ** 28 28 ** GNU General Public License Usage … … 34 34 ** met: http://www.gnu.org/copyleft/gpl.html. 35 35 ** 36 ** If you are unsure which license is appropriate for your use, please37 ** contact the sales department at qt-sales@nokia.com.36 ** If you have questions regarding the use of this file, please contact 37 ** Nokia at qt-info@nokia.com. 38 38 ** $QT_END_LICENSE$ 39 39 ** … … 51 51 52 52 QT_FORWARD_DECLARE_CLASS(QWidget); 53 QT_BEGIN_NAMESPACE54 extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.mm55 QT_END_NAMESPACE56 53 QT_USE_NAMESPACE 57 54 58 55 @implementation QT_MANGLE_NAMESPACE(QCocoaPanel) 59 56 60 - (BOOL)canBecomeKeyWindow61 {62 QWidget *widget = [self QT_MANGLE_NAMESPACE(qt_qwidget)];63 64 bool isToolTip = (widget->windowType() == Qt::ToolTip);65 bool isPopup = (widget->windowType() == Qt::Popup);66 return !(isPopup || isToolTip);67 }68 69 57 /*********************************************************************** 70 BEGINCopy and Paste between QCocoaWindow and QCocoaPanel58 Copy and Paste between QCocoaWindow and QCocoaPanel 71 59 This is a bit unfortunate, but thanks to the dynamic dispatch we 72 60 have to duplicate this code or resort to really silly forwarding methods 73 61 **************************************************************************/ 74 75 /* 76 The methods keyDown, keyUp, and flagsChanged... These really shouldn't ever 77 get hit. We automatically say we can be first responder if we are a window. 78 So, the handling should get handled by the view. This is here more as a 79 last resort (i.e., this is code that can potentially be removed). 80 */ 81 82 - (void)keyDown:(NSEvent *)theEvent 83 { 84 bool keyOK = qt_dispatchKeyEvent(theEvent, [self QT_MANGLE_NAMESPACE(qt_qwidget)]); 85 if (!keyOK) 86 [super keyDown:theEvent]; 87 } 88 89 - (void)keyUp:(NSEvent *)theEvent 90 { 91 bool keyOK = qt_dispatchKeyEvent(theEvent, [self QT_MANGLE_NAMESPACE(qt_qwidget)]); 92 if (!keyOK) 93 [super keyUp:theEvent]; 94 } 95 96 - (void)flagsChanged:(NSEvent *)theEvent 97 { 98 qt_dispatchModifiersChanged(theEvent, [self QT_MANGLE_NAMESPACE(qt_qwidget)]); 99 [super flagsChanged:theEvent]; 100 } 101 102 103 - (void)tabletProximity:(NSEvent *)tabletEvent 104 { 105 qt_dispatchTabletProximityEvent(tabletEvent); 106 } 107 108 - (void)sendEvent:(NSEvent *)event 109 { 110 [self retain]; 111 112 QWidget *widget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self]; 113 QT_MANGLE_NAMESPACE(QCocoaView) *view = static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(qt_mac_nativeview_for(widget)); 114 Qt::MouseButton mouseButton = cocoaButton2QtButton([event buttonNumber]); 115 116 // sometimes need to redirect mouse events to the popup. 117 QWidget *popup = qAppInstance()->activePopupWidget(); 118 if (popup && popup != widget) { 119 switch([event type]) 120 { 121 case NSLeftMouseDown: 122 qt_mac_handleMouseEvent(view, event, QEvent::MouseButtonPress, mouseButton); 123 // Don't call super here. This prevents us from getting the mouseUp event, 124 // which we need to send even if the mouseDown event was not accepted. 125 // (this is standard Qt behavior.) 126 break; 127 case NSRightMouseDown: 128 case NSOtherMouseDown: 129 if (!qt_mac_handleMouseEvent(view, event, QEvent::MouseButtonPress, mouseButton)) 130 [super sendEvent:event]; 131 break; 132 case NSLeftMouseUp: 133 case NSRightMouseUp: 134 case NSOtherMouseUp: 135 if (!qt_mac_handleMouseEvent(view, event, QEvent::MouseButtonRelease, mouseButton)) 136 [super sendEvent:event]; 137 break; 138 case NSMouseMoved: 139 qt_mac_handleMouseEvent(view, event, QEvent::MouseMove, Qt::NoButton); 140 break; 141 case NSLeftMouseDragged: 142 case NSRightMouseDragged: 143 case NSOtherMouseDragged: 144 [QT_MANGLE_NAMESPACE(QCocoaView) currentMouseEvent]->view = view; 145 [QT_MANGLE_NAMESPACE(QCocoaView) currentMouseEvent]->theEvent = event; 146 if (!qt_mac_handleMouseEvent(view, event, QEvent::MouseMove, mouseButton)) 147 [super sendEvent:event]; 148 break; 149 default: 150 [super sendEvent:event]; 151 break; 152 } 153 } else { 154 [super sendEvent:event]; 155 } 156 qt_mac_dispatchNCMouseMessage(self, event, [self QT_MANGLE_NAMESPACE(qt_qwidget)], leftButtonIsRightButton); 157 158 159 [self release]; 160 } 161 162 - (BOOL)makeFirstResponder:(NSResponder *)responder 163 { 164 // For some reason Cocoa wants to flip the first responder 165 // when Qt doesn't want to, sorry, but "No" :-) 166 if (responder == nil && qApp->focusWidget()) 167 return NO; 168 return [super makeFirstResponder:responder]; 169 } 170 171 /*********************************************************************** 172 END Copy and Paste between QCocoaWindow and QCocoaPanel 173 ***********************************************************************/ 174 + (Class)frameViewClassForStyleMask:(NSUInteger)styleMask 175 { 176 if (styleMask & QtMacCustomizeWindow) 177 return [QT_MANGLE_NAMESPACE(QCocoaWindowCustomThemeFrame) class]; 178 return [super frameViewClassForStyleMask:styleMask]; 179 } 62 #include "qcocoasharedwindowmethods_mac_p.h" 180 63 181 64 @end
Note:
See TracChangeset
for help on using the changeset viewer.