diff options
Diffstat (limited to 'src/gui/widgets/qmdisubwindow_p.h')
-rw-r--r-- | src/gui/widgets/qmdisubwindow_p.h | 348 |
1 files changed, 0 insertions, 348 deletions
diff --git a/src/gui/widgets/qmdisubwindow_p.h b/src/gui/widgets/qmdisubwindow_p.h deleted file mode 100644 index e5b9d8091f..0000000000 --- a/src/gui/widgets/qmdisubwindow_p.h +++ /dev/null @@ -1,348 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QMDISUBWINDOW_P_H -#define QMDISUBWINDOW_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qmdisubwindow.h" - -#ifndef QT_NO_MDIAREA - -#include <QStyle> -#include <QStyleOptionTitleBar> -#include <QMenuBar> -#include <QSizeGrip> -#include <QPointer> -#include <QDebug> -#include <private/qwidget_p.h> - -QT_BEGIN_NAMESPACE - -class QVBoxLayout; -class QMouseEvent; - -namespace QMdi { -template<typename T> -class ControlElement : public T -{ -public: - ControlElement(QMdiSubWindow *child) : T(child, 0) - { - Q_ASSERT(child); - mdiChild = child; - } - - void *qt_metacast(const char *classname) - { - if (classname && strcmp(classname, "ControlElement") == 0) - return this; - return 0; - } - - QPointer<QMdiSubWindow> mdiChild; -}; - -class ControlContainer : public QObject -{ -public: - ControlContainer(QMdiSubWindow *mdiChild); - ~ControlContainer(); - -#ifndef QT_NO_MENUBAR - void showButtonsInMenuBar(QMenuBar *menuBar); - void removeButtonsFromMenuBar(QMenuBar *menuBar = 0); - QMenuBar *menuBar() const { return m_menuBar; } -#endif - void updateWindowIcon(const QIcon &windowIcon); - QWidget *controllerWidget() const { return m_controllerWidget; } - QWidget *systemMenuLabel() const { return m_menuLabel; } - -private: - QPointer<QWidget> previousLeft; - QPointer<QWidget> previousRight; -#ifndef QT_NO_MENUBAR - QPointer<QMenuBar> m_menuBar; -#endif - QPointer<QWidget> m_controllerWidget; - QPointer<QWidget> m_menuLabel; - QPointer<QMdiSubWindow> mdiChild; -}; -} // namespace QMdi - -class QMdiSubWindowPrivate : public QWidgetPrivate -{ - Q_DECLARE_PUBLIC(QMdiSubWindow) -public: - // Enums and typedefs. - enum Operation { - None, - Move, - TopResize, - BottomResize, - LeftResize, - RightResize, - TopLeftResize, - TopRightResize, - BottomLeftResize, - BottomRightResize - }; - - enum ChangeFlag { - HMove = 0x01, - VMove = 0x02, - HResize = 0x04, - VResize = 0x08, - HResizeReverse = 0x10, - VResizeReverse = 0x20 - }; - - enum WindowStateAction { - RestoreAction, - MoveAction, - ResizeAction, - MinimizeAction, - MaximizeAction, - StayOnTopAction, - CloseAction, - /* Add new states _above_ this line! */ - NumWindowStateActions - }; - - struct OperationInfo { - uint changeFlags; - Qt::CursorShape cursorShape; - QRegion region; - bool hover; - OperationInfo(uint changeFlags, Qt::CursorShape cursorShape, bool hover = true) - : changeFlags(changeFlags), - cursorShape(cursorShape), - hover(hover) - {} - }; - - typedef QMap<Operation, OperationInfo> OperationInfoMap; - - QMdiSubWindowPrivate(); - - // Variables. - QPointer<QWidget> baseWidget; - QPointer<QWidget> restoreFocusWidget; - QPointer<QMdi::ControlContainer> controlContainer; -#ifndef QT_NO_SIZEGRIP - QPointer<QSizeGrip> sizeGrip; -#endif -#ifndef QT_NO_RUBBERBAND - QRubberBand *rubberBand; -#endif - QPoint mousePressPosition; - QRect oldGeometry; - QSize internalMinimumSize; - QSize userMinimumSize; - QSize restoreSize; - bool resizeEnabled; - bool moveEnabled; - bool isInInteractiveMode; -#ifndef QT_NO_RUBBERBAND - bool isInRubberBandMode; -#endif - bool isShadeMode; - bool ignoreWindowTitleChange; - bool ignoreNextActivationEvent; - bool activationEnabled; - bool isShadeRequestFromMinimizeMode; - bool isMaximizeMode; - bool isWidgetHiddenByUs; - bool isActive; - bool isExplicitlyDeactivated; - int keyboardSingleStep; - int keyboardPageStep; - int resizeTimerId; - Operation currentOperation; - QStyle::SubControl hoveredSubControl; - QStyle::SubControl activeSubControl; - Qt::FocusReason focusInReason; - OperationInfoMap operationMap; - QPointer<QMenu> systemMenu; -#ifndef QT_NO_ACTIONS - QPointer<QAction> actions[NumWindowStateActions]; -#endif - QMdiSubWindow::SubWindowOptions options; - QString lastChildWindowTitle; - QPalette titleBarPalette; - QString windowTitle; - QFont font; - QIcon menuIcon; - QStyleOptionTitleBar cachedStyleOptions; - QString originalTitle; - - // Slots. - void _q_updateStaysOnTopHint(); - void _q_enterInteractiveMode(); - void _q_processFocusChanged(QWidget *old, QWidget *now); - - // Functions. - void leaveInteractiveMode(); - void removeBaseWidget(); - void initOperationMap(); -#ifndef QT_NO_MENU - void createSystemMenu(); -#endif - void updateCursor(); - void updateDirtyRegions(); - void updateGeometryConstraints(); - void updateMask(); - void setNewGeometry(const QPoint &pos); - void setMinimizeMode(); - void setNormalMode(); - void setMaximizeMode(); - void setActive(bool activate, bool changeFocus = true); - void processClickedSubControl(); - QRegion getRegion(Operation operation) const; - Operation getOperation(const QPoint &pos) const; - QStyleOptionTitleBar titleBarOptions() const; - void ensureWindowState(Qt::WindowState state); - int titleBarHeight(const QStyleOptionTitleBar &options) const; - void sizeParameters(int *margin, int *minWidth) const; - bool drawTitleBarWhenMaximized() const; -#ifndef QT_NO_MENUBAR - QMenuBar *menuBar() const; - void showButtonsInMenuBar(QMenuBar *menuBar); - void removeButtonsFromMenuBar(); -#endif - void updateWindowTitle(bool requestFromChild); -#ifndef QT_NO_RUBBERBAND - void enterRubberBandMode(); - void leaveRubberBandMode(); -#endif - QPalette desktopPalette() const; - void updateActions(); - void setFocusWidget(); - void restoreFocus(); - void setWindowFlags(Qt::WindowFlags windowFlags); - void setVisible(WindowStateAction, bool visible = true); -#ifndef QT_NO_ACTION - void setEnabled(WindowStateAction, bool enable = true); -#ifndef QT_NO_MENU - void addToSystemMenu(WindowStateAction, const QString &text, const char *slot); -#endif -#endif // QT_NO_ACTION - QSize iconSize() const; -#ifndef QT_NO_SIZEGRIP - void setSizeGrip(QSizeGrip *sizeGrip); - void setSizeGripVisible(bool visible = true) const; -#endif - void updateInternalWindowTitle(); - QString originalWindowTitle(); - void setNewWindowTitle(); - - inline int titleBarHeight() const - { - Q_Q(const QMdiSubWindow); - if (!parent || q->windowFlags() & Qt::FramelessWindowHint - || (q->isMaximized() && !drawTitleBarWhenMaximized())) { - return 0; - } - QStyleOptionTitleBar options = titleBarOptions(); - int height = options.rect.height(); - if (hasBorder(options)) - height += q->isMinimized() ? 8 : 4; - return height; - } - - inline QStyle::SubControl getSubControl(const QPoint &pos) const - { - Q_Q(const QMdiSubWindow); - QStyleOptionTitleBar titleBarOptions = this->titleBarOptions(); - return q->style()->hitTestComplexControl(QStyle::CC_TitleBar, &titleBarOptions, pos, q); - } - - inline void setNewGeometry(QRect *geometry) - { - Q_Q(QMdiSubWindow); - Q_ASSERT(parent); - geometry->setSize(geometry->size().expandedTo(internalMinimumSize)); -#ifndef QT_NO_RUBBERBAND - if (isInRubberBandMode) - rubberBand->setGeometry(*geometry); - else -#endif - q->setGeometry(*geometry); - } - - inline bool hasBorder(const QStyleOptionTitleBar &options) const - { - Q_Q(const QMdiSubWindow); - return !q->style()->styleHint(QStyle::SH_TitleBar_NoBorder, &options, q); - } - - inline bool autoRaise() const - { - Q_Q(const QMdiSubWindow); - return q->style()->styleHint(QStyle::SH_TitleBar_AutoRaise, 0, q); - } - - inline bool isResizeOperation() const - { - return currentOperation != None && currentOperation != Move; - } - - inline bool isMoveOperation() const - { - return currentOperation == Move; - } -}; - -#endif // QT_NO_MDIAREA - -QT_END_NAMESPACE - -#endif // QMDISUBWINDOW_P_H |