equal
deleted
inserted
replaced
200 if (!(qwidget->windowState() & (Qt::WindowMaximized | Qt::WindowFullScreen)) && [window isZoomed]) { |
200 if (!(qwidget->windowState() & (Qt::WindowMaximized | Qt::WindowFullScreen)) && [window isZoomed]) { |
201 widgetData->window_state = widgetData->window_state | Qt::WindowMaximized; |
201 widgetData->window_state = widgetData->window_state | Qt::WindowMaximized; |
202 QWindowStateChangeEvent e(Qt::WindowStates(widgetData->window_state |
202 QWindowStateChangeEvent e(Qt::WindowStates(widgetData->window_state |
203 & ~Qt::WindowMaximized)); |
203 & ~Qt::WindowMaximized)); |
204 qt_sendSpontaneousEvent(qwidget, &e); |
204 qt_sendSpontaneousEvent(qwidget, &e); |
|
205 } else { |
|
206 widgetData->window_state = widgetData->window_state & ~Qt::WindowMaximized; |
|
207 QWindowStateChangeEvent e(Qt::WindowStates(widgetData->window_state |
|
208 | Qt::WindowMaximized)); |
|
209 qt_sendSpontaneousEvent(qwidget, &e); |
205 } |
210 } |
206 NSRect rect = [[window contentView] frame]; |
211 NSRect rect = [[window contentView] frame]; |
207 const QSize newSize(rect.size.width, rect.size.height); |
212 const QSize newSize(rect.size.width, rect.size.height); |
208 const QSize &oldSize = widgetData->crect.size(); |
213 const QSize &oldSize = widgetData->crect.size(); |
209 if (newSize != oldSize) { |
214 if (newSize != oldSize) { |
267 |
272 |
268 -(void)windowDidBecomeMain:(NSNotification*)notification |
273 -(void)windowDidBecomeMain:(NSNotification*)notification |
269 { |
274 { |
270 QWidget *qwidget = m_windowHash->value([notification object]); |
275 QWidget *qwidget = m_windowHash->value([notification object]); |
271 Q_ASSERT(qwidget); |
276 Q_ASSERT(qwidget); |
272 if (qwidget->isActiveWindow()) |
|
273 return; // Widget is already active, no need to go through re-activation. |
|
274 |
|
275 onApplicationWindowChangedActivation(qwidget, true); |
277 onApplicationWindowChangedActivation(qwidget, true); |
276 } |
278 } |
277 |
279 |
278 -(void)windowDidResignMain:(NSNotification*)notification |
280 -(void)windowDidResignMain:(NSNotification*)notification |
279 { |
281 { |
286 // tiny difference between main and key windows. |
288 // tiny difference between main and key windows. |
287 -(void)windowDidBecomeKey:(NSNotification*)notification |
289 -(void)windowDidBecomeKey:(NSNotification*)notification |
288 { |
290 { |
289 QWidget *qwidget = m_windowHash->value([notification object]); |
291 QWidget *qwidget = m_windowHash->value([notification object]); |
290 Q_ASSERT(qwidget); |
292 Q_ASSERT(qwidget); |
291 if (qwidget->isActiveWindow()) |
|
292 return; // Widget is already active, no need to go through re-activation |
|
293 |
|
294 |
|
295 onApplicationWindowChangedActivation(qwidget, true); |
293 onApplicationWindowChangedActivation(qwidget, true); |
296 } |
294 } |
297 |
295 |
298 -(void)windowDidResignKey:(NSNotification*)notification |
296 -(void)windowDidResignKey:(NSNotification*)notification |
299 { |
297 { |
310 - (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame |
308 - (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame |
311 { |
309 { |
312 Q_UNUSED(newFrame); |
310 Q_UNUSED(newFrame); |
313 // saving the current window geometry before the window is maximized |
311 // saving the current window geometry before the window is maximized |
314 QWidget *qwidget = m_windowHash->value(window); |
312 QWidget *qwidget = m_windowHash->value(window); |
315 if (qwidget->isWindow() && !(qwidget->windowState() & Qt::WindowMaximized)) { |
313 QWidgetPrivate *widgetPrivate = qt_widget_private(qwidget); |
316 QWidgetPrivate *widgetPrivate = qt_widget_private(qwidget); |
314 if (qwidget->isWindow()) { |
317 widgetPrivate->topData()->normalGeometry = qwidget->geometry(); |
315 if(qwidget->windowState() & Qt::WindowMaximized) { |
|
316 // Restoring |
|
317 widgetPrivate->topData()->wasMaximized = false; |
|
318 } else { |
|
319 // Maximizing |
|
320 widgetPrivate->topData()->normalGeometry = qwidget->geometry(); |
|
321 // If the window was maximized we need to update the coordinates since now it will start at 0,0. |
|
322 // We do this in a special field that is only used when not restoring but manually resizing the window. |
|
323 // Since the coordinates are fixed we just set a boolean flag. |
|
324 widgetPrivate->topData()->wasMaximized = true; |
|
325 } |
318 } |
326 } |
319 return YES; |
327 return YES; |
320 } |
328 } |
321 |
329 |
322 - (NSRect)windowWillUseStandardFrame:(NSWindow *)window defaultFrame:(NSRect)defaultFrame |
330 - (NSRect)windowWillUseStandardFrame:(NSWindow *)window defaultFrame:(NSRect)defaultFrame |