summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.cmake.conf2
-rw-r--r--.qmake.conf2
-rw-r--r--coin/module_config.yaml23
-rw-r--r--dependencies.yaml4
-rw-r--r--examples/CMakeLists.txt2
-rw-r--r--examples/activeqt/CMakeLists.txt18
-rw-r--r--src/activeqt/container/qaxbase.cpp39
-rw-r--r--src/activeqt/container/qaxdump.cpp7
-rw-r--r--src/activeqt/control/Qt6AxServerMacros.cmake61
-rw-r--r--tools/dumpcpp/moc.cpp4
10 files changed, 110 insertions, 52 deletions
diff --git a/.cmake.conf b/.cmake.conf
index 77b7fa8..e62fae5 100644
--- a/.cmake.conf
+++ b/.cmake.conf
@@ -1,2 +1,2 @@
-set(QT_REPO_MODULE_VERSION "6.2.1")
+set(QT_REPO_MODULE_VERSION "6.2.8")
set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "")
diff --git a/.qmake.conf b/.qmake.conf
index 87681be..a0cf48b 100644
--- a/.qmake.conf
+++ b/.qmake.conf
@@ -2,4 +2,4 @@ load(qt_build_config)
DEFINES += QT_NO_FOREACH QT_NO_JAVA_STYLE_ITERATORS
-MODULE_VERSION = 6.2.1
+MODULE_VERSION = 6.2.8
diff --git a/coin/module_config.yaml b/coin/module_config.yaml
index 3326a5f..4dd4012 100644
--- a/coin/module_config.yaml
+++ b/coin/module_config.yaml
@@ -1,4 +1,5 @@
version: 2
+alias: qtactiveqt
accept_configuration:
condition: or
conditions:
@@ -19,9 +20,31 @@ instructions:
- type: AppendToEnvironmentVariable
variableName: NON_QTBASE_CONFIGURE_ARGS
variableValue: " -DQT_NO_AX_SERVER_REGISTRATION=ON"
+ disable_if:
+ condition: property
+ property: features
+ contains_value: UseConfigure
- type: AppendToEnvironmentVariable
variableName: NON_QTBASE_TARGET_CONFIGURE_ARGS
variableValue: " -DQT_NO_AX_SERVER_REGISTRATION=ON"
+ disable_if:
+ condition: property
+ property: features
+ contains_value: UseConfigure
+ - type: AppendToEnvironmentVariable
+ variableName: NON_QTBASE_CMAKE_ARGS
+ variableValue: " -DQT_NO_AX_SERVER_REGISTRATION=ON"
+ enable_if:
+ condition: property
+ property: features
+ contains_value: UseConfigure
+ - type: AppendToEnvironmentVariable
+ variableName: NON_QTBASE_TARGET_CMAKE_ARGS
+ variableValue: " -DQT_NO_AX_SERVER_REGISTRATION=ON"
+ enable_if:
+ condition: property
+ property: features
+ contains_value: UseConfigure
- !include "{{qt/qtbase}}/coin_module_build_template_v2.yaml"
Test:
diff --git a/dependencies.yaml b/dependencies.yaml
index a31faf8..1b97928 100644
--- a/dependencies.yaml
+++ b/dependencies.yaml
@@ -1,4 +1,4 @@
dependencies:
- ../qtbase:
- ref: d20ede49940548a27b7cd7bc4154950aa8b1924c
+ ../tqtc-qtbase:
+ ref: 4c1c38dede55565afa846685b3e19cf8f1cfed0c
required: true
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 362d2da..3baa897 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -1,6 +1,6 @@
# Generated from examples.pro.
-qt_examples_build_begin()
+qt_examples_build_begin(EXTERNAL_BUILD)
add_subdirectory(activeqt)
diff --git a/examples/activeqt/CMakeLists.txt b/examples/activeqt/CMakeLists.txt
index 62c0318..168dd37 100644
--- a/examples/activeqt/CMakeLists.txt
+++ b/examples/activeqt/CMakeLists.txt
@@ -1,19 +1,19 @@
# Generated from activeqt.pro.
if(MSVC)
- add_subdirectory(comapp)
- add_subdirectory(hierarchy)
- add_subdirectory(menus)
- add_subdirectory(multiple)
- add_subdirectory(simple)
- add_subdirectory(wrapper)
+ qt_internal_add_example(comapp)
+ qt_internal_add_example(hierarchy)
+ qt_internal_add_example(menus)
+ qt_internal_add_example(multiple)
+ qt_internal_add_example(simple)
+ qt_internal_add_example(wrapper)
if(TARGET Qt6::OpenGLWidgets AND QT_FEATURE_opengl AND NOT QT_FEATURE_opengles2) # special case
- add_subdirectory(opengl)
+ qt_internal_add_example(opengl)
endif()
if(TARGET Qt::QuickControls2)
- add_subdirectory(simpleqml)
+ qt_internal_add_example(simpleqml)
endif()
endif()
if(MINGW OR QT_BUILD_SHARED_LIBS)
- add_subdirectory(mediaplayer)
+ qt_internal_add_example(mediaplayer)
endif()
diff --git a/src/activeqt/container/qaxbase.cpp b/src/activeqt/container/qaxbase.cpp
index 4944c3b..0d4fae7 100644
--- a/src/activeqt/container/qaxbase.cpp
+++ b/src/activeqt/container/qaxbase.cpp
@@ -78,6 +78,7 @@
#include <private/qobject_p.h>
#include <private/qmetaobject_p.h>
#include <private/qmetaobjectbuilder_p.h>
+#include <private/qtools_p.h>
#include <qt_windows.h>
#include <ocidl.h>
@@ -388,7 +389,7 @@ public:
if (qobject->signalsBlocked())
return S_OK;
- const QMetaObject *meta = combase->axBaseMetaObject();
+ const QMetaObject *meta = qobject->metaObject();
const QMetaObjectExtra &moExtra = moextra_cache.value(meta);
int index = -1;
@@ -497,7 +498,11 @@ public:
if (dispID == DISPID_UNKNOWN || !combase)
return S_OK;
- const QMetaObject *meta = combase->axBaseMetaObject();
+ QObject *qobject = combase->qObject();
+ if (qobject->signalsBlocked())
+ return S_OK;
+
+ const QMetaObject *meta = qobject->metaObject();
if (!meta)
return S_OK;
@@ -505,10 +510,6 @@ public:
if (propname.isEmpty())
return S_OK;
- QObject *qobject = combase->qObject();
- if (qobject->signalsBlocked())
- return S_OK;
-
// emit the generic signal
combase->d->emitPropertyChanged(QString::fromLatin1(propname));
@@ -624,7 +625,7 @@ QByteArray QAxEventSink::findProperty(DISPID dispID)
typeinfo->Release();
QByteArray propsignal(propname + "Changed(");
- const QMetaObject *mo = combase->axBaseMetaObject();
+ const QMetaObject *mo = combase->qObject()->metaObject();
int index = mo->indexOfProperty(propname);
const QMetaProperty prop = mo->property(index);
propsignal += prop.typeName();
@@ -2288,7 +2289,7 @@ void MetaObjectGenerator::addSetterSlot(const QByteArray &property)
if (isupper(prototype.at(0))) {
prototype.insert(0, "Set");
} else {
- prototype[0] = char(toupper(prototype[0]));
+ prototype[0] = QtMiscUtils::toAsciiUpper(prototype[0]);
prototype.insert(0, "set");
}
const QByteArray type = propertyType(property);
@@ -2486,7 +2487,7 @@ void MetaObjectGenerator::readFuncsInfo(ITypeInfo *typeinfo, ushort nFuncs)
set = "Set";
} else {
set = "set";
- prototype[0] = char(toupper(prototype[0]));
+ prototype[0] = QtMiscUtils::toAsciiUpper(prototype[0]);
}
prototype = set + prototype;
@@ -3265,7 +3266,7 @@ bool QAxBasePrivate::checkHRESULT(HRESULT hres, EXCEPINFO *exc, const QString &n
*/
int QAxBase::internalProperty(QMetaObject::Call call, int index, void **v)
{
- const QMetaObject *mo = axBaseMetaObject();
+ const QMetaObject *mo = qObject()->metaObject();
const QMetaProperty prop = mo->property(index + mo->propertyOffset());
QByteArray propname = prop.name();
@@ -3370,7 +3371,7 @@ int QAxBase::internalInvoke(QMetaObject::Call call, int index, void **v)
if (!disp)
return index;
- const QMetaObject *mo = axBaseMetaObject();
+ const QMetaObject *mo = qObject()->metaObject();
// get the slot information
const QMetaMethod slot = mo->method(index + mo->methodOffset());
Q_ASSERT(slot.methodType() == QMetaMethod::Slot);
@@ -3488,7 +3489,7 @@ int QAxBasePrivate::qtStaticMetaCall(QAxBase *_t, QMetaObject::Call _c, int _id,
if (_c != QMetaObject::InvokeMetaMethod)
return 0;
Q_ASSERT(_t != nullptr);
- const QMetaObject *mo = _t->axBaseMetaObject();
+ const QMetaObject *mo = _t->qObject()->metaObject();
switch (mo->method(_id + mo->methodOffset()).methodType()) {
case QMetaMethod::Signal:
QMetaObject::activate(_t->qObject(), mo, _id, _a);
@@ -3504,7 +3505,7 @@ int QAxBasePrivate::qtStaticMetaCall(QAxBase *_t, QMetaObject::Call _c, int _id,
int QAxBasePrivate::qtMetaCall(QMetaObject::Call call, int id, void **v)
{
- const QMetaObject *mo = q->axBaseMetaObject();
+ const QMetaObject *mo = q->qObject()->metaObject();
if (q->isNull() && mo->property(id + mo->propertyOffset()).name() != QByteArray("control")) {
qWarning("QAxBase::qt_metacall: Object is not initialized, or initialization failed");
return id;
@@ -3529,7 +3530,7 @@ int QAxBasePrivate::qtMetaCall(QMetaObject::Call call, int id, void **v)
#ifdef QT_CHECK_STATE
static void qax_noSuchFunction(int disptype, const QByteArray &name, const QByteArray &function, const QAxBase *that)
{
- const QMetaObject *metaObject = that->axBaseMetaObject();
+ const QMetaObject *metaObject = that->qObject()->metaObject();
const char *coclass = metaObject->classInfo(metaObject->indexOfClassInfo("CoClass")).value();
if (disptype == DISPATCH_METHOD) {
@@ -3577,7 +3578,7 @@ bool QAxBase::dynamicCallHelper(const char *name, void *inout, QList<QVariant> &
return false;
}
- const QMetaObject *mo = axBaseMetaObject();
+ const QMetaObject *mo = qObject()->metaObject();
Q_ASSERT(d->metaobj);
const QMetaObjectExtra &moExtra = moextra_cache.value(d->metaobj);
@@ -4019,7 +4020,7 @@ QAxObject *QAxBase::querySubObject(const char *name, QList<QVariant> &vars)
case VT_EMPTY:
#ifdef QT_CHECK_STATE
{
- auto mo = axBaseMetaObject();
+ auto mo = qObject()->metaObject();
const char *coclass = mo->classInfo(mo->indexOfClassInfo("CoClass")).value();
qWarning("QAxBase::querySubObject: %s: Error calling function or property in %s (%s)"
, name, control().toLatin1().data(), coclass ? coclass: "unknown");
@@ -4029,7 +4030,7 @@ QAxObject *QAxBase::querySubObject(const char *name, QList<QVariant> &vars)
default:
#ifdef QT_CHECK_STATE
{
- auto mo = axBaseMetaObject();
+ auto mo = qObject()->metaObject();
const char *coclass = mo->classInfo(mo->indexOfClassInfo("CoClass")).value();
qWarning("QAxBase::querySubObject: %s: Method or property is not of interface type in %s (%s)"
, name, control().toLatin1().data(), coclass ? coclass: "unknown");
@@ -4136,7 +4137,7 @@ QAxBase::PropertyBag QAxBase::propertyBag() const
persist->Release();
return result;
}
- const QMetaObject *mo = axBaseMetaObject();
+ const QMetaObject *mo = qObject()->metaObject();
for (int p = mo->propertyOffset(); p < mo->propertyCount(); ++p) {
const QMetaProperty property = mo->property(p);
QVariant var = qObject()->property(property.name());
@@ -4176,7 +4177,7 @@ void QAxBase::setPropertyBag(const PropertyBag &bag)
pbag->Release();
persist->Release();
} else {
- const QMetaObject *mo = axBaseMetaObject();
+ const QMetaObject *mo = qObject()->metaObject();
for (int p = mo->propertyOffset(); p < mo->propertyCount(); ++p) {
const QMetaProperty property = mo->property(p);
QVariant var = bag.value(QLatin1String(property.name()));
diff --git a/src/activeqt/container/qaxdump.cpp b/src/activeqt/container/qaxdump.cpp
index 093fef6..7b6a872 100644
--- a/src/activeqt/container/qaxdump.cpp
+++ b/src/activeqt/container/qaxdump.cpp
@@ -57,6 +57,7 @@
#include <qt_windows.h>
#include <qtextstream.h>
#include <qiodevicebase.h>
+#include <private/qtools_p.h>
#include <ctype.h>
@@ -120,12 +121,12 @@ static QByteArray namedPrototype(const QByteArrayList &parameterTypes, const QBy
static QByteArray toType(const QByteArray &t)
{
- QByteArray type = QMetaType::fromName(type).id() != QMetaType::UnknownType
+ QByteArray type = QMetaType::fromName(t).id() != QMetaType::UnknownType
? t : QByteArrayLiteral("int");
if (type.at(0) == 'Q')
type.remove(0, 1);
- type[0] = toupper(type.at(0));
+ type[0] = QtMiscUtils::toAsciiLower(type.at(0));
if (type == "VariantList")
type = "List";
else if (type == "Map<QVariant,QVariant>")
@@ -363,7 +364,7 @@ QString qax_generateDocumentation(QAxBase *that)
setterSlot = "Set" + name;
} else {
QByteArray nameUp = name;
- nameUp[0] = char(toupper(nameUp.at(0)));
+ nameUp[0] = QtMiscUtils::toAsciiUpper(nameUp.at(0));
setterSlot = "set" + nameUp;
}
detail += QLatin1String("<a href=\"#") + QString::fromLatin1(setterSlot) + QLatin1String("\">") +
diff --git a/src/activeqt/control/Qt6AxServerMacros.cmake b/src/activeqt/control/Qt6AxServerMacros.cmake
index 0e6bcad..24cbaab 100644
--- a/src/activeqt/control/Qt6AxServerMacros.cmake
+++ b/src/activeqt/control/Qt6AxServerMacros.cmake
@@ -52,36 +52,67 @@ function(qt6_target_idl target)
set(output_idl "${CMAKE_CURRENT_BINARY_DIR}/${target}$<CONFIG>.idl")
set(output_tlb "${CMAKE_CURRENT_BINARY_DIR}/${target}$<CONFIG>.tlb")
+ _qt_internal_get_tool_wrapper_script_path(tool_wrapper)
set(tlb_command_list "")
- _qt_internal_wrap_tool_command(tlb_command_list APPEND
- "$<TARGET_FILE:${QT_CMAKE_EXPORT_NAMESPACE}::idc>" "$<TARGET_FILE:${target}>"
- /idl "${output_idl}" -version 1.0
+
+ # Wrap tool paths in $<COMMAND_CONFIG> to ensure we use the release tool when building debug
+ # targets in a multi-config build, because the debug tool is usually not built by default.
+ if(CMAKE_GENERATOR STREQUAL "Ninja Multi-Config" AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.20")
+ set(cmb "$<COMMAND_CONFIG:")
+ set(cme ">")
+ else()
+ set(cmb "")
+ set(cme "")
+ endif()
+
+ set(idc_target "${QT_CMAKE_EXPORT_NAMESPACE}::idc")
+ set(idc_target_file "$<TARGET_FILE:${idc_target}>")
+ set(idc_target_file_command_config_wrapped "${cmb}${idc_target_file}${cme}")
+
+ list(APPEND tlb_command_list
+ COMMAND
+ "${tool_wrapper}"
+ "${idc_target_file_command_config_wrapped}"
+ "$<TARGET_FILE:${target}>"
+ /idl "${output_idl}" -version 1.0
)
- _qt_internal_wrap_tool_command(tlb_command_list APPEND
- midl "${output_idl}" /nologo /tlb "${output_tlb}"
+ list(APPEND tlb_command_list
+ COMMAND
+ "${tool_wrapper}" midl "${output_idl}" /nologo /tlb "${output_tlb}"
)
set(rc_files "$<FILTER:$<TARGET_PROPERTY:${target},SOURCES>,INCLUDE,\\.rc$>")
set(have_rc_files "$<NOT:$<BOOL:$<STREQUAL:${rc_files},>>>")
- set(rc_cmd "$<TARGET_FILE:${QT_CMAKE_EXPORT_NAMESPACE}::idc>$<SEMICOLON>\
-$<TARGET_FILE:${target}>$<SEMICOLON>/tlb$<SEMICOLON>${output_tlb}")
- set(no_rc_cmd "echo \"No rc-file linked into project. The type library of the ${target} \
-target will be a separate file.\"")
- _qt_internal_wrap_tool_command(tlb_command_list APPEND
- "$<IF:${have_rc_files},${rc_cmd},${no_rc_cmd}>"
+
+ set(no_rc_cmd "echo$<SEMICOLON>No rc-file linked into project. The type library of the \
+${target} target will be a separate file.")
+
+ set(idc_args
+ "$<SEMICOLON>$<TARGET_FILE:${target}>$<SEMICOLON>/tlb$<SEMICOLON>${output_tlb}")
+
+ # Split command into two parts, so that COMMAND_CONFIG can be applied only to the idc tool path,
+ # but not the target and tlb files.
+ set(cmd_part1 "${cmb}$<IF:${have_rc_files},${idc_target_file},${no_rc_cmd}>${cme}")
+ set(cmd_part2 "$<${have_rc_files}:${idc_args}>")
+
+ list(APPEND tlb_command_list
+ COMMAND
+ "${tool_wrapper}" "${cmd_part1}" "${cmd_part2}"
)
if(NOT arg_NO_AX_SERVER_REGISTRATION AND NOT QT_NO_AX_SERVER_REGISTRATION)
- _qt_internal_wrap_tool_command(tlb_command_list APPEND
- "$<TARGET_FILE:${QT_CMAKE_EXPORT_NAMESPACE}::idc>"
- "$<TARGET_FILE:${target}>" /regserver
+ list(APPEND tlb_command_list
+ COMMAND
+ "${tool_wrapper}"
+ "${idc_target_file_command_config_wrapped}"
+ "$<TARGET_FILE:${target}>" /regserver
)
endif()
add_custom_command(TARGET ${target} POST_BUILD
${tlb_command_list}
DEPENDS
- ${QT_CMAKE_EXPORT_NAMESPACE}::idc
+ "${idc_target}"
VERBATIM
COMMAND_EXPAND_LISTS
)
diff --git a/tools/dumpcpp/moc.cpp b/tools/dumpcpp/moc.cpp
index f4747f3..a594837 100644
--- a/tools/dumpcpp/moc.cpp
+++ b/tools/dumpcpp/moc.cpp
@@ -35,6 +35,8 @@
#include <QTemporaryFile>
#include <QTextStream>
+#include <private/qtools_p.h>
+
QT_BEGIN_NAMESPACE
QByteArray setterName(const QByteArray &propertyName)
@@ -43,7 +45,7 @@ QByteArray setterName(const QByteArray &propertyName)
if (isupper(setter.at(0))) {
setter = "Set" + setter;
} else {
- setter[0] = char(toupper(setter[0]));
+ setter[0] = QtMiscUtils::toAsciiUpper(setter[0]);
setter = "set" + setter;
}
return setter;