OSDN Git Service

use std::bitset<> for QCoreApplication::attribs member
authorIvailo Monev <xakepa10@laimg.moc>
Wed, 15 Jan 2020 18:48:29 +0000 (18:48 +0000)
committerIvailo Monev <xakepa10@laimg.moc>
Wed, 15 Jan 2020 19:07:55 +0000 (19:07 +0000)
Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
src/core/kernel/qcoreapplication.cpp
src/core/kernel/qcoreapplication_p.h
src/gui/kernel/qwidget.cpp

index d5bd3b1..f8e1fff 100644 (file)
@@ -178,7 +178,7 @@ void qt_set_current_thread_to_main_thread()
 
 QCoreApplication *QCoreApplication::self = 0;
 QAbstractEventDispatcher *QCoreApplicationPrivate::eventDispatcher = 0;
-uint QCoreApplicationPrivate::attribs;
+std::bitset<Qt::AA_AttributeCount> QCoreApplicationPrivate::attribs;
 
 #ifdef Q_OS_UNIX
 Qt::HANDLE qt_application_thread_id = 0;
@@ -521,10 +521,7 @@ QCoreApplication::~QCoreApplication()
 */
 void QCoreApplication::setAttribute(Qt::ApplicationAttribute attribute, bool on)
 {
-    if (on)
-        QCoreApplicationPrivate::attribs |= 1 << attribute;
-    else
-        QCoreApplicationPrivate::attribs &= ~(1 << attribute);
+    QCoreApplicationPrivate::attribs.set(attribute, on);
 }
 
 /*!
@@ -535,7 +532,7 @@ void QCoreApplication::setAttribute(Qt::ApplicationAttribute attribute, bool on)
  */
 bool QCoreApplication::testAttribute(Qt::ApplicationAttribute attribute)
 {
-    return QCoreApplicationPrivate::testAttribute(attribute);
+    return QCoreApplicationPrivate::attribs.test(attribute);
 }
 
 
index 3f194a3..64c53a3 100644 (file)
@@ -50,6 +50,7 @@
 #include "QtCore/qsettings.h"
 #include "qobject_p.h"
 
+#include <bitset>
 
 QT_BEGIN_NAMESPACE
 
@@ -108,9 +109,7 @@ public:
     static bool is_app_running;
     static bool is_app_closing;
 
-    static uint attribs;
-    static inline bool testAttribute(uint flag)
-        { return attribs & (1 << flag); }
+    static std::bitset<Qt::AA_AttributeCount> attribs;
 #ifndef QT_NO_SETTINGS
     static QSettings *staticConf();
 #endif
index 34ac2c8..1dd18a2 100644 (file)
@@ -1021,7 +1021,7 @@ void QWidgetPrivate::init(QWidget *parentWidget, Qt::WindowFlags f)
     if (++QWidgetPrivate::instanceCounter > QWidgetPrivate::maxInstances)
         QWidgetPrivate::maxInstances = QWidgetPrivate::instanceCounter;
 
-    if (QApplicationPrivate::testAttribute(Qt::AA_ImmediateWidgetCreation))
+    if (QApplication::testAttribute(Qt::AA_ImmediateWidgetCreation))
         q->create();
 
 
@@ -1105,7 +1105,7 @@ void QWidget::create(WId window, bool initializeWindow, bool destroyOldWindow)
     if (paintOnScreenEnv == 1)
         setAttribute(Qt::WA_PaintOnScreen);
 
-    if (QApplicationPrivate::testAttribute(Qt::AA_NativeWindows))
+    if (QApplication::testAttribute(Qt::AA_NativeWindows))
         setAttribute(Qt::WA_NativeWindow);
 
 #ifdef ALIEN_DEBUG
@@ -8805,7 +8805,7 @@ void QWidget::setParent(QWidget *parent, Qt::WindowFlags f)
         oldBs->moveStaticWidgets(this);
     }
 
-    if (QApplicationPrivate::testAttribute(Qt::AA_ImmediateWidgetCreation)
+    if (QApplication::testAttribute(Qt::AA_ImmediateWidgetCreation)
         && !testAttribute(Qt::WA_WState_Created))
         create();