~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/gui/kernel/qshortcutmap.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Alessandro Ghersi
  • Date: 2009-11-02 18:30:08 UTC
  • mfrom: (1.2.2 upstream)
  • mto: (15.2.5 experimental)
  • mto: This revision was merged to the branch mainline in revision 88.
  • Revision ID: james.westby@ubuntu.com-20091102183008-b6a4gcs128mvfb3m
Tags: upstream-4.6.0~beta1
ImportĀ upstreamĀ versionĀ 4.6.0~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/****************************************************************************
2
2
**
3
3
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
 
4
** All rights reserved.
4
5
** Contact: Nokia Corporation (qt-info@nokia.com)
5
6
**
6
7
** This file is part of the QtGui module of the Qt Toolkit.
7
8
**
8
9
** $QT_BEGIN_LICENSE:LGPL$
9
 
** Commercial Usage
10
 
** Licensees holding valid Qt Commercial licenses may use this file in
11
 
** accordance with the Qt Commercial License Agreement provided with the
12
 
** Software or, alternatively, in accordance with the terms contained in
13
 
** a written agreement between you and Nokia.
 
10
** No Commercial Usage
 
11
** This file contains pre-release code and may not be distributed.
 
12
** You may use this file in accordance with the terms and conditions
 
13
** contained in the Technology Preview License Agreement accompanying
 
14
** this package.
14
15
**
15
16
** GNU Lesser General Public License Usage
16
17
** Alternatively, this file may be used under the terms of the GNU Lesser
20
21
** ensure the GNU Lesser General Public License version 2.1 requirements
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.
27
 
**
28
 
** GNU General Public License Usage
29
 
** Alternatively, this file may be used under the terms of the GNU
30
 
** General Public License version 3.0 as published by the Free Software
31
 
** Foundation and appearing in the file LICENSE.GPL included in the
32
 
** packaging of this file.  Please review the following information to
33
 
** ensure the GNU General Public License version 3.0 requirements will be
34
 
** met: http://www.gnu.org/copyleft/gpl.html.
35
 
**
36
 
** If you are unsure which license is appropriate for your use, please
37
 
** contact the sales department at http://www.qtsoftware.com/contact.
 
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
**
 
28
** If you have questions regarding the use of this file, please contact
 
29
** Nokia at qt-info@nokia.com.
 
30
**
 
31
**
 
32
**
 
33
**
 
34
**
 
35
**
 
36
**
 
37
**
38
38
** $QT_END_LICENSE$
39
39
**
40
40
****************************************************************************/
61
61
 
62
62
QT_BEGIN_NAMESPACE
63
63
 
64
 
extern bool qt_mac_no_native_menubar; // qmenu_mac.cpp
65
 
 
66
64
// To enable verbose output uncomment below
67
65
//#define DEBUG_QSHORTCUTMAP
68
66
 
101
99
    QObject *owner;
102
100
};
103
101
 
104
 
#ifndef QT_NO_DEBUG_STREAM
 
102
#if 0 //ndef QT_NO_DEBUG_STREAM
105
103
/*! \internal
106
104
    QDebug operator<< for easy debug output of the shortcut entries.
107
105
*/
108
 
QDebug &operator<<(QDebug &dbg, const QShortcutEntry *se) {
 
106
static QDebug &operator<<(QDebug &dbg, const QShortcutEntry *se) {
109
107
    if (!se)
110
108
        return dbg << "QShortcutEntry(0x0)";
111
109
    dbg.nospace()
112
110
        << "QShortcutEntry(" << se->keyseq
113
111
        << "), id(" << se->id << "), enabled(" << se->enabled << "), autorepeat(" << se->autorepeat
114
 
        << "), owner(" << se->owner << ")";
 
112
        << "), owner(" << se->owner << ')';
115
113
    return dbg.space();
116
114
}
117
115
#endif // QT_NO_DEBUGSTREAM
148
146
    QShortcutMap constructor.
149
147
*/
150
148
QShortcutMap::QShortcutMap()
 
149
    : d_ptr(new QShortcutMapPrivate(this))
151
150
{
152
 
    d_ptr = new QShortcutMapPrivate(this);
153
 
    Q_ASSERT(d_ptr != 0);
154
151
    resetState();
155
152
}
156
153
 
159
156
*/
160
157
QShortcutMap::~QShortcutMap()
161
158
{
162
 
    delete d_ptr;
163
 
    d_ptr = 0;
164
159
}
165
160
 
166
161
/*! \internal
630
625
bool QShortcutMap::correctContext(const QShortcutEntry &item) const {
631
626
    Q_ASSERT_X(item.owner, "QShortcutMap", "Shortcut has no owner. Illegal map state!");
632
627
 
633
 
    QWidget *active_window = qApp->activeWindow();
 
628
    QWidget *active_window = QApplication::activeWindow();
634
629
 
635
630
    // popups do not become the active window,
636
631
    // so we fake it here to get the correct context
637
632
    // for the shortcut system.
638
 
    if (qApp->activePopupWidget())
639
 
        active_window = qApp->activePopupWidget();
 
633
    if (QApplication::activePopupWidget())
 
634
        active_window = QApplication::activePopupWidget();
640
635
 
641
636
    if (!active_window)
642
637
        return false;
660
655
{
661
656
    bool visible = w->isVisible();    
662
657
#ifdef Q_WS_MAC
663
 
    if (!qt_mac_no_native_menubar && qobject_cast<QMenuBar *>(w))
 
658
    if (!qApp->testAttribute(Qt::AA_DontUseNativeMenuBar) && qobject_cast<QMenuBar *>(w))
664
659
        visible = true;
665
660
#endif
666
661
 
723
718
{
724
719
    bool visible = w->isVisible();
725
720
#ifdef Q_WS_MAC
726
 
    if (!qt_mac_no_native_menubar && qobject_cast<QMenuBar *>(w))
 
721
    if (!qApp->testAttribute(Qt::AA_DontUseNativeMenuBar) && qobject_cast<QMenuBar *>(w))
727
722
        visible = true;
728
723
#endif
729
724
 
878
873
    qDebug().nospace()
879
874
        << "QShortcutMap::dispatchEvent(): Sending QShortcutEvent(\""
880
875
        << (QString)next->keyseq << "\", " << next->id << ", "
881
 
        << (bool)(enabledShortcuts>1) << ") to object(" << next->owner << ")";
 
876
        << (bool)(enabledShortcuts>1) << ") to object(" << next->owner << ')';
882
877
#endif
883
878
    QShortcutEvent se(next->keyseq, next->id, enabledShortcuts>1);
884
879
    QApplication::sendEvent(const_cast<QObject *>(next->owner), &se);