summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2013-05-15 20:18:36 -0500
committerSlávek Banko <slavek.banko@axis.cz>2013-05-19 18:17:41 +0200
commit83803589ba6230c8d1542c4d89f301046ebf6b59 (patch)
treeeeb2c53ec748cf40c2a6b8bce2efa37d9d80d794
parent251896b94c150af20e7c05a61ce4326866c91539 (diff)
downloadtdelibs-83803589ba6230c8d1542c4d89f301046ebf6b59.tar.gz
tdelibs-83803589ba6230c8d1542c4d89f301046ebf6b59.zip
Fix DCOP standard TQt object marshaling
This partially resolves Bug 1510 (cherry picked from commit 7e397d203cff0325da049a91ca9363ed9d9ce934)
-rw-r--r--dcop/client/dcop.cpp3
-rw-r--r--dcop/client/marshall.cpp51
2 files changed, 35 insertions, 19 deletions
diff --git a/dcop/client/dcop.cpp b/dcop/client/dcop.cpp
index 1d167ce70..276390d60 100644
--- a/dcop/client/dcop.cpp
+++ b/dcop/client/dcop.cpp
@@ -289,8 +289,9 @@ int callFunction( const char* app, const char* obj, const char* func, const QCSt
TQDataStream arg(data, IO_WriteOnly);
uint i = 0;
- for( TQStringList::Iterator it = types.begin(); it != types.end(); ++it )
+ for( TQStringList::Iterator it = types.begin(); it != types.end(); ++it ) {
marshall( arg, args, i, *it );
+ }
if ( i != args.count() )
{
diff --git a/dcop/client/marshall.cpp b/dcop/client/marshall.cpp
index 9defa6d47..32d448c71 100644
--- a/dcop/client/marshall.cpp
+++ b/dcop/client/marshall.cpp
@@ -278,10 +278,12 @@ void marshall( TQDataStream &arg, QCStringList args, uint &i, TQString type )
}
TQString s = TQString::fromLocal8Bit( args[ i ] );
- if (type == "TQStringList")
+ if (type == "TQStringList") {
type = "TQValueList<TQString>";
- if (type == "QCStringList")
+ }
+ if (type == "QCStringList") {
type = "TQValueList<TQCString>";
+ }
if ( type == "int" )
arg << s.toInt();
@@ -332,26 +334,39 @@ void marshall( TQDataStream &arg, QCStringList args, uint &i, TQString type )
else if ( type == "KURL" )
arg << KURL( s );
else if ( type == "TQVariant" ) {
- if ( s == "true" || s == "false" )
+ int tqPointKeywordLength = strlen("TQPoint");
+ int tqSizeKeywordLength = strlen("TQSize");
+ int tqRectKeywordLength = strlen("TQRect");
+ int tqColorKeywordLength = strlen("TQColor");
+ if ( s == "true" || s == "false" ) {
arg << TQVariant( mkBool( s ), 42 );
- else if ( s.left( 4 ) == "int(" )
+ }
+ else if ( s.left( 4 ) == "int(" ) {
arg << TQVariant( s.mid(4, s.length()-5).toInt() );
- else if ( s.left( 7 ) == "TQPoint(" )
- arg << TQVariant( mkPoint( s.mid(7, s.length()-8) ) );
- else if ( s.left( 6 ) == "TQSize(" )
- arg << TQVariant( mkSize( s.mid(6, s.length()-7) ) );
- else if ( s.left( 6 ) == "TQRect(" )
- arg << TQVariant( mkRect( s.mid(6, s.length()-7) ) );
- else if ( s.left( 7 ) == "TQColor(" )
- arg << TQVariant( mkColor( s.mid(7, s.length()-8) ) );
- else
+ }
+ else if ( s.left( (tqPointKeywordLength+1) ) == "TQPoint(" ) {
+ arg << TQVariant( mkPoint( s.mid((tqPointKeywordLength+1), s.length()-(tqPointKeywordLength+2)) ) );
+ }
+ else if ( s.left( (tqSizeKeywordLength+1) ) == "TQSize(" ) {
+ arg << TQVariant( mkSize( s.mid((tqSizeKeywordLength+1), s.length()-(tqSizeKeywordLength+2)) ) );
+ }
+ else if ( s.left( (tqRectKeywordLength+1) ) == "TQRect(" ) {
+ arg << TQVariant( mkRect( s.mid((tqRectKeywordLength+1), s.length()-(tqRectKeywordLength+2)) ) );
+ }
+ else if ( s.left( (tqColorKeywordLength+1) ) == "TQColor(" ) {
+ arg << TQVariant( mkColor( s.mid((tqColorKeywordLength+1), s.length()-(tqColorKeywordLength+2)) ) );
+ }
+ else {
arg << TQVariant( s );
- } else if ( type.startsWith("TQValueList<") ||
- type == "KURL::List" ) {
- if ( type == "KURL::List" )
+ }
+ } else if ( type.startsWith("TQValueList<") || type == "KURL::List" ) {
+ if ( type == "KURL::List" ) {
type = "KURL";
- else
- type = type.mid(11, type.length() - 12);
+ }
+ else {
+ int tqValueListKeywordLength = strlen("TQValueList");
+ type = type.mid((tqValueListKeywordLength+1), type.length() - (tqValueListKeywordLength+2));
+ }
TQStringList list;
TQString delim = s;
if (delim == "[")