summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorSami Lempinen <sami.lempinen@nokia.com>2011-09-20 09:59:45 (GMT)
committerSami Lempinen <sami.lempinen@nokia.com>2011-09-20 09:59:45 (GMT)
commit03645fccea8f2bf997ed4191d7a67a0e93a977d6 (patch)
treeb9f1490bacd05aea265783bfb5d9e40fe6b2b0dc /src/plugins
parenta0ad54acd33873316908080f432768fdf3e3bfc2 (diff)
parent367a89cf5cb1282d2e966c83869a56fd22745779 (diff)
downloadQt-03645fccea8f2bf997ed4191d7a67a0e93a977d6.zip
Qt-03645fccea8f2bf997ed4191d7a67a0e93a977d6.tar.gz
Qt-03645fccea8f2bf997ed4191d7a67a0e93a977d6.tar.bz2
Merge remote-tracking branch 'qt/4.8'
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.cpp77
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.h14
-rw-r--r--src/plugins/bearer/corewlan/corewlan.pro3
-rw-r--r--src/plugins/codecs/cn/qgb18030codec.cpp14
4 files changed, 91 insertions, 17 deletions
diff --git a/src/plugins/accessible/widgets/qaccessiblemenu.cpp b/src/plugins/accessible/widgets/qaccessiblemenu.cpp
index 1454c7c..4ae1d15 100644
--- a/src/plugins/accessible/widgets/qaccessiblemenu.cpp
+++ b/src/plugins/accessible/widgets/qaccessiblemenu.cpp
@@ -433,6 +433,8 @@ QString QAccessibleMenuItem::actionText(int action, Text text, int child ) const
switch (action) {
case Press:
case DefaultAction:
+ if (m_action->menu())
+ return QMenu::tr("Open");
return QMenu::tr("Execute");
break;
default:
@@ -444,11 +446,41 @@ QString QAccessibleMenuItem::actionText(int action, Text text, int child ) const
bool QAccessibleMenuItem::doAction(int action, int child, const QVariantList & /*params = QVariantList()*/ )
{
- if ((action == Press || action == DefaultAction) && child == 0) {
- m_action->trigger();
- return true;
+ if ((child) || ((action != DefaultAction) && (action != Press)))
+ return false;
+
+ // if the action has a menu, expand/hide it
+ if (m_action->menu()) {
+ if (m_action->menu()->isVisible()) {
+ m_action->menu()->hide();
+ return true;
+ } else {
+ if (QMenuBar *bar = qobject_cast<QMenuBar*>(owner())) {
+ bar->setActiveAction(m_action);
+ return true;
+ } else if (QMenu *menu = qobject_cast<QMenu*>(owner())){
+ menu->setActiveAction(m_action);
+ return true;
+ }
+ }
}
- return false;
+ // no menu
+ m_action->trigger();
+ return true;
+}
+
+// action interface
+int QAccessibleMenuItem::actionCount()
+{
+ return 1;
+}
+
+void QAccessibleMenuItem::doAction(int actionIndex)
+{
+ if (actionIndex)
+ return;
+
+ doAction(DefaultAction, 0);
}
int QAccessibleMenuItem::indexOfChild( const QAccessibleInterface * child ) const
@@ -618,7 +650,7 @@ QAccessible::State QAccessibleMenuItem::state(int child ) const
delete iface;
}
}
- return s;
+ return s | HasInvokeExtension;;
}
QString QAccessibleMenuItem::text ( Text t, int child ) const
@@ -654,17 +686,50 @@ QString QAccessibleMenuItem::text ( Text t, int child ) const
return str;
}
+// action interface
int QAccessibleMenuItem::userActionCount ( int /*child*/ ) const
{
return 0;
}
-
QAction *QAccessibleMenuItem::action() const
{
return m_action;
}
+QString QAccessibleMenuItem::description(int)
+{
+ return text(QAccessible::Description, 0);
+}
+
+QString QAccessibleMenuItem::name(int)
+{
+ return actionText(DefaultAction, QAccessible::Name, 0);
+}
+
+QString QAccessibleMenuItem::localizedName(int)
+{
+ return text(QAccessible::Name, 0);
+}
+
+QStringList QAccessibleMenuItem::keyBindings(int)
+{
+ QStringList keys;
+#ifndef QT_NO_SHORTCUT
+ QKeySequence key = m_action->shortcut();
+ if (!key.isEmpty()) {
+ keys.append(key.toString());
+ }
+#endif
+ return keys;
+}
+
+
+QVariant QAccessibleMenuItem::invokeMethodEx(Method, int, const QVariantList &)
+{
+ return QVariant();
+}
+
QWidget *QAccessibleMenuItem::owner() const
{
return m_owner;
diff --git a/src/plugins/accessible/widgets/qaccessiblemenu.h b/src/plugins/accessible/widgets/qaccessiblemenu.h
index 680594d..47f42cb 100644
--- a/src/plugins/accessible/widgets/qaccessiblemenu.h
+++ b/src/plugins/accessible/widgets/qaccessiblemenu.h
@@ -43,6 +43,7 @@
#define QACCESSIBLEMENU_H
#include <QtGui/qaccessiblewidget.h>
+#include <QtGui/qaccessible2.h>
QT_BEGIN_NAMESPACE
@@ -101,8 +102,9 @@ protected:
-class QAccessibleMenuItem : public QAccessibleInterface
+class QAccessibleMenuItem : public QAccessibleActionInterface, public QAccessibleInterfaceEx
{
+ Q_ACCESSIBLE_OBJECT
public:
explicit QAccessibleMenuItem(QWidget *owner, QAction *w);
@@ -123,9 +125,17 @@ public:
virtual QString text ( Text t, int child ) const;
virtual int userActionCount ( int child ) const;
- QWidget *owner() const;
+ // action interface
+ virtual int actionCount();
+ virtual void doAction(int actionIndex);
+ virtual QString description(int);
+ virtual QString name(int);
+ virtual QString localizedName(int);
+ virtual QStringList keyBindings(int);
+ virtual QVariant invokeMethodEx(Method, int, const QVariantList &);
+ QWidget *owner() const;
protected:
QAction *action() const;
private:
diff --git a/src/plugins/bearer/corewlan/corewlan.pro b/src/plugins/bearer/corewlan/corewlan.pro
index 90078e9..590a85b 100644
--- a/src/plugins/bearer/corewlan/corewlan.pro
+++ b/src/plugins/bearer/corewlan/corewlan.pro
@@ -5,9 +5,8 @@ QT = core network
LIBS += -framework Foundation -framework SystemConfiguration
contains(QT_CONFIG, corewlan) {
- isEmpty(QMAKE_MAC_SDK)|contains(QMAKE_MAC_SDK, "/Developer/SDKs/MacOSX10.6.sdk") {
+ isEmpty(QMAKE_MAC_SDK)|contains(QMAKE_MAC_SDK, "/Developer/SDKs/MacOSX10\.[67]\.sdk") {
LIBS += -framework CoreWLAN -framework Security
- DEFINES += MAC_SDK_10_6
}
}
diff --git a/src/plugins/codecs/cn/qgb18030codec.cpp b/src/plugins/codecs/cn/qgb18030codec.cpp
index 0a45eeb..d12f5d9 100644
--- a/src/plugins/codecs/cn/qgb18030codec.cpp
+++ b/src/plugins/codecs/cn/qgb18030codec.cpp
@@ -108,10 +108,10 @@ QByteArray QGb18030Codec::convertFromUnicode(const QChar *uc, int len, Converter
int len;
uchar buf[4];
if (high >= 0) {
- if (ch >= 0xdc00 && ch < 0xe000) {
+ if (uc[i].isLowSurrogate()) {
// valid surrogate pair
++i;
- uint u = (high-0xd800)*0x400+(ch-0xdc00)+0x10000;
+ uint u = QChar::surrogateToUcs4(high, uc[i].unicode());
len = qt_UnicodeToGb18030(u, buf);
if (len >= 2) {
for (int j=0; j<len; j++)
@@ -129,10 +129,10 @@ QByteArray QGb18030Codec::convertFromUnicode(const QChar *uc, int len, Converter
}
}
- if (ch < 0x80) {
+ if (IsLatin(ch)) {
// ASCII
*cursor++ = ch;
- } else if ((ch >= 0xd800 && ch < 0xdc00)) {
+ } else if (uc[i].isHighSurrogate()) {
// surrogates area. check for correct encoding
// we need at least one more character, first the high surrogate, then the low one
high = ch;
@@ -181,7 +181,7 @@ QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterSta
uchar ch = chars[i];
switch (nbuf) {
case 0:
- if (ch < 0x80) {
+ if (IsLatin(ch)) {
// ASCII
resultData[unicodeLen] = ch;
++unicodeLen;
@@ -339,7 +339,7 @@ QString QGbkCodec::convertToUnicode(const char* chars, int len, ConverterState *
uchar ch = chars[i];
switch (nbuf) {
case 0:
- if (ch < 0x80) {
+ if (IsLatin(ch)) {
// ASCII
resultData[unicodeLen] = ch;
++unicodeLen;
@@ -487,7 +487,7 @@ QString QGb2312Codec::convertToUnicode(const char* chars, int len, ConverterStat
uchar ch = chars[i];
switch (nbuf) {
case 0:
- if (ch < 0x80) {
+ if (IsLatin(ch)) {
// ASCII
resultData[unicodeLen] = ch;
++unicodeLen;