diff --git a/scripts/mkqtdecl4/mkqtdecl.conf b/scripts/mkqtdecl4/mkqtdecl.conf index 2b7c1713a..07935fd10 100644 --- a/scripts/mkqtdecl4/mkqtdecl.conf +++ b/scripts/mkqtdecl4/mkqtdecl.conf @@ -635,11 +635,26 @@ drop_method "Qimage", /Qimage::text\(const\s+QString/ # clashes with const char rename "QDialogButtonBox", /QDialogButtonBox::QDialogButtonBox\(QFlags/, "new_buttons" rename "QIcon", /QIcon::pixmap\(int\s+extent/, "pixmap_ext" rename "QKeySequence", /QKeySequence::QKeySequence\(QKeySequence::StandardKey/, "new_std" + +# TODO: basically, the layout object only takes ownership over the objects when +# it has a QWidget parent itself. This is not reflected in the following simple scheme keep_arg "QBoxLayout", /::addLayout/, 0 # will take ownership of layout +keep_arg "QBoxLayout", /::addSpacerItem/, 0 # will take ownership of item +keep_arg "QBoxLayout", /::addWidget/, 0 # will take ownership of item +keep_arg "QBoxLayout", /::insertItem/, 1 # will take ownership of item +keep_arg "QBoxLayout", /::insertLayout/, 1 # will take ownership of item +keep_arg "QBoxLayout", /::insertSpacerItem/, 1 # will take ownership of item +keep_arg "QBoxLayout", /::insertWidget/, 1 # will take ownership of item keep_arg "QGridLayout", /::addLayout/, 0 # will take ownership of layout -keep_arg "QWidget", /::setLayout\s*\(/, 0 # will take ownership of layout +keep_arg "QGridLayout", /::addItem/, 0 # will take ownership of layout +keep_arg "QGridLayout", /::addWidget/, 0 # will take ownership of layout keep_arg "QLayout", /::addChildLayout/, 0 # will take ownership of layout keep_arg "QLayout", /::addItem/, 0 # will take ownership of item +keep_arg "QLayout", /::addWidget/, 0 # will take ownership of item +keep_arg "QStackedLayout", /::addWidget/, 0 # will take ownership of item +keep_arg "QStackedLayout", /::insertWidget/, 1 # will take ownership of item + +keep_arg "QWidget", /::setLayout\s*\(/, 0 # will take ownership of layout keep_arg "QTreeWidgetItem", /::addChild\(/, 0 # will take ownership of the child keep_arg "QTreeWidgetItem", /::addChildren\(/, 0 # will take ownership of the children keep_arg "QTreeWidgetItem", /::insertChild\(/, 1 # will take ownership of the child diff --git a/src/gsiqt/qt4/QtGui/gsiDeclQBoxLayout.cc b/src/gsiqt/qt4/QtGui/gsiDeclQBoxLayout.cc index 6bcf411ac..4b298b247 100644 --- a/src/gsiqt/qt4/QtGui/gsiDeclQBoxLayout.cc +++ b/src/gsiqt/qt4/QtGui/gsiDeclQBoxLayout.cc @@ -119,6 +119,7 @@ static void _call_f_addSpacerItem_1708 (const qt_gsi::GenericMethod * /*decl*/, __SUPPRESS_UNUSED_WARNING(args); tl::Heap heap; QSpacerItem *arg1 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg1); __SUPPRESS_UNUSED_WARNING(ret); ((QBoxLayout *)cls)->addSpacerItem (arg1); } @@ -203,6 +204,7 @@ static void _call_f_addWidget_4616 (const qt_gsi::GenericMethod * /*decl*/, void __SUPPRESS_UNUSED_WARNING(args); tl::Heap heap; QWidget *arg1 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg1); int arg2 = args ? gsi::arg_reader() (args, heap) : gsi::arg_maker() (0, heap); QFlags arg3 = args ? gsi::arg_reader >() (args, heap) : gsi::arg_maker >() (0, heap); __SUPPRESS_UNUSED_WARNING(ret); @@ -309,6 +311,7 @@ static void _call_f_insertLayout_2659 (const qt_gsi::GenericMethod * /*decl*/, v tl::Heap heap; int arg1 = gsi::arg_reader() (args, heap); QLayout *arg2 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg2); int arg3 = args ? gsi::arg_reader() (args, heap) : gsi::arg_maker() (0, heap); __SUPPRESS_UNUSED_WARNING(ret); ((QBoxLayout *)cls)->insertLayout (arg1, arg2, arg3); @@ -333,6 +336,7 @@ static void _call_f_insertSpacerItem_2367 (const qt_gsi::GenericMethod * /*decl* tl::Heap heap; int arg1 = gsi::arg_reader() (args, heap); QSpacerItem *arg2 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg2); __SUPPRESS_UNUSED_WARNING(ret); ((QBoxLayout *)cls)->insertSpacerItem (arg1, arg2); } @@ -406,6 +410,7 @@ static void _call_f_insertWidget_5275 (const qt_gsi::GenericMethod * /*decl*/, v tl::Heap heap; int arg1 = gsi::arg_reader() (args, heap); QWidget *arg2 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg2); int arg3 = args ? gsi::arg_reader() (args, heap) : gsi::arg_maker() (0, heap); QFlags arg4 = args ? gsi::arg_reader >() (args, heap) : gsi::arg_maker >() (0, heap); __SUPPRESS_UNUSED_WARNING(ret); @@ -1686,6 +1691,7 @@ static void _call_fp_insertItem_2399 (const qt_gsi::GenericMethod * /*decl*/, vo tl::Heap heap; int arg1 = gsi::arg_reader() (args, heap); QLayoutItem *arg2 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg2); __SUPPRESS_UNUSED_WARNING(ret); ((QBoxLayout_Adaptor *)cls)->fp_QBoxLayout_insertItem_2399 (arg1, arg2); } diff --git a/src/gsiqt/qt4/QtGui/gsiDeclQGridLayout.cc b/src/gsiqt/qt4/QtGui/gsiDeclQGridLayout.cc index c011de144..85619e3c5 100644 --- a/src/gsiqt/qt4/QtGui/gsiDeclQGridLayout.cc +++ b/src/gsiqt/qt4/QtGui/gsiDeclQGridLayout.cc @@ -85,6 +85,7 @@ static void _call_f_addItem_7018 (const qt_gsi::GenericMethod * /*decl*/, void * __SUPPRESS_UNUSED_WARNING(args); tl::Heap heap; QLayoutItem *arg1 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg1); int arg2 = gsi::arg_reader() (args, heap); int arg3 = gsi::arg_reader() (args, heap); int arg4 = args ? gsi::arg_reader() (args, heap) : gsi::arg_maker() (1, heap); @@ -176,6 +177,7 @@ static void _call_f_addWidget_1315 (const qt_gsi::GenericMethod * /*decl*/, void __SUPPRESS_UNUSED_WARNING(args); tl::Heap heap; QWidget *arg1 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg1); __SUPPRESS_UNUSED_WARNING(ret); ((QGridLayout *)cls)->addWidget (arg1); } @@ -202,6 +204,7 @@ static void _call_f_addWidget_5275 (const qt_gsi::GenericMethod * /*decl*/, void __SUPPRESS_UNUSED_WARNING(args); tl::Heap heap; QWidget *arg1 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg1); int arg2 = gsi::arg_reader() (args, heap); int arg3 = gsi::arg_reader() (args, heap); QFlags arg4 = args ? gsi::arg_reader >() (args, heap) : gsi::arg_maker >() (0, heap); @@ -235,6 +238,7 @@ static void _call_f_addWidget_6593 (const qt_gsi::GenericMethod * /*decl*/, void __SUPPRESS_UNUSED_WARNING(args); tl::Heap heap; QWidget *arg1 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg1); int arg2 = gsi::arg_reader() (args, heap); int arg3 = gsi::arg_reader() (args, heap); int arg4 = gsi::arg_reader() (args, heap); diff --git a/src/gsiqt/qt4/QtGui/gsiDeclQHBoxLayout.cc b/src/gsiqt/qt4/QtGui/gsiDeclQHBoxLayout.cc index d6924da43..b0e43c69d 100644 --- a/src/gsiqt/qt4/QtGui/gsiDeclQHBoxLayout.cc +++ b/src/gsiqt/qt4/QtGui/gsiDeclQHBoxLayout.cc @@ -1033,6 +1033,7 @@ static void _call_fp_insertItem_2399 (const qt_gsi::GenericMethod * /*decl*/, vo tl::Heap heap; int arg1 = gsi::arg_reader() (args, heap); QLayoutItem *arg2 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg2); __SUPPRESS_UNUSED_WARNING(ret); ((QHBoxLayout_Adaptor *)cls)->fp_QHBoxLayout_insertItem_2399 (arg1, arg2); } diff --git a/src/gsiqt/qt4/QtGui/gsiDeclQLayout.cc b/src/gsiqt/qt4/QtGui/gsiDeclQLayout.cc index 64364e381..3b0fd9394 100644 --- a/src/gsiqt/qt4/QtGui/gsiDeclQLayout.cc +++ b/src/gsiqt/qt4/QtGui/gsiDeclQLayout.cc @@ -110,6 +110,7 @@ static void _call_f_addWidget_1315 (const qt_gsi::GenericMethod * /*decl*/, void __SUPPRESS_UNUSED_WARNING(args); tl::Heap heap; QWidget *arg1 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg1); __SUPPRESS_UNUSED_WARNING(ret); ((QLayout *)cls)->addWidget (arg1); } diff --git a/src/gsiqt/qt4/QtGui/gsiDeclQStackedLayout.cc b/src/gsiqt/qt4/QtGui/gsiDeclQStackedLayout.cc index ff3222e8c..a02a74672 100644 --- a/src/gsiqt/qt4/QtGui/gsiDeclQStackedLayout.cc +++ b/src/gsiqt/qt4/QtGui/gsiDeclQStackedLayout.cc @@ -95,6 +95,7 @@ static void _call_f_addWidget_1315 (const qt_gsi::GenericMethod * /*decl*/, void __SUPPRESS_UNUSED_WARNING(args); tl::Heap heap; QWidget *arg1 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg1); ret.write ((int)((QStackedLayout *)cls)->addWidget (arg1)); } @@ -162,6 +163,7 @@ static void _call_f_insertWidget_1974 (const qt_gsi::GenericMethod * /*decl*/, v tl::Heap heap; int arg1 = gsi::arg_reader() (args, heap); QWidget *arg2 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg2); ret.write ((int)((QStackedLayout *)cls)->insertWidget (arg1, arg2)); } diff --git a/src/gsiqt/qt4/QtGui/gsiDeclQVBoxLayout.cc b/src/gsiqt/qt4/QtGui/gsiDeclQVBoxLayout.cc index a86c6171c..456d0c178 100644 --- a/src/gsiqt/qt4/QtGui/gsiDeclQVBoxLayout.cc +++ b/src/gsiqt/qt4/QtGui/gsiDeclQVBoxLayout.cc @@ -1033,6 +1033,7 @@ static void _call_fp_insertItem_2399 (const qt_gsi::GenericMethod * /*decl*/, vo tl::Heap heap; int arg1 = gsi::arg_reader() (args, heap); QLayoutItem *arg2 = gsi::arg_reader() (args, heap); + qt_gsi::qt_keep (arg2); __SUPPRESS_UNUSED_WARNING(ret); ((QVBoxLayout_Adaptor *)cls)->fp_QVBoxLayout_insertItem_2399 (arg1, arg2); }