Subversion Repositories tpanel

Rev

Rev 348 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 348 Rev 349
Line 108... Line 108...
108
        delete p;
108
        delete p;
109
        p = next;
109
        p = next;
110
    }
110
    }
111
 
111
 
112
    setButtons(nullptr);
112
    setButtons(nullptr);
-
 
113
    mSubPages.clear();
113
 
114
/*
114
    PAGECHAIN_T *pc = mSubPages;
115
    PAGECHAIN_T *pc = mSubPages;
115
    PAGECHAIN_T *pc_next = nullptr;
116
    PAGECHAIN_T *pc_next = nullptr;
116
 
117
 
117
    // We're not allowd to delete the subpages here, because they're managed
118
    // We're not allowd to delete the subpages here, because they're managed
118
    // by the TPageManager.
119
    // by the TPageManager.
Line 122... Line 123...
122
        delete pc;
123
        delete pc;
123
        pc = pc_next;
124
        pc = pc_next;
124
    }
125
    }
125
 
126
 
126
    mSubPages = nullptr;
127
    mSubPages = nullptr;
-
 
128
*/
127
}
129
}
128
 
130
 
129
void TPage::initialize(const string& nm)
131
void TPage::initialize(const string& nm)
130
{
132
{
131
    DECL_TRACER("TPage::initialize(const string& name)");
133
    DECL_TRACER("TPage::initialize(const string& name)");
Line 260... Line 262...
260
                index = oldIndex + 1;
262
                index = oldIndex + 1;
261
        }
263
        }
262
    }
264
    }
263
 
265
 
264
    setSR(sr);
266
    setSR(sr);
265
 
267
/*
266
    if (TStreamError::checkFilter(HLOG_DEBUG))
268
    if (TStreamError::checkFilter(HLOG_DEBUG))
267
    {
269
    {
268
        MSG_DEBUG("PageID: " << mPage.pageID);
270
        MSG_DEBUG("PageID: " << mPage.pageID);
269
        MSG_DEBUG("Name  : " << mPage.name);
271
        MSG_DEBUG("Name  : " << mPage.name);
270
        MSG_DEBUG("Width : " << mPage.width);
272
        MSG_DEBUG("Width : " << mPage.width);
Line 284... Line 286...
284
            MSG_DEBUG("   " << pos << ": mi: " << iter->mi);
286
            MSG_DEBUG("   " << pos << ": mi: " << iter->mi);
285
            MSG_DEBUG("   " << pos << ": fi: " << iter->fi);
287
            MSG_DEBUG("   " << pos << ": fi: " << iter->fi);
286
            pos++;
288
            pos++;
287
        }
289
        }
288
    }
290
    }
289
 
291
*/
290
    if (TPageInterface::getButtons())
292
    if (TPageInterface::getButtons())
291
        sortButtons();
293
        sortButtons();
292
}
294
}
293
 
295
 
294
void TPage::addProgress()
296
void TPage::addProgress()
Line 839... Line 841...
839
 
841
 
840
    if (gPageManager && gPageManager->getPageFinished())
842
    if (gPageManager && gPageManager->getPageFinished())
841
        gPageManager->getPageFinished()(handle);
843
        gPageManager->getPageFinished()(handle);
842
}
844
}
843
 
845
 
844
PAGECHAIN_T *TPage::addSubPage(TSubPage* pg)
846
bool TPage::addSubPage(TSubPage* pg)
845
{
847
{
846
    DECL_TRACER("TPage::addSubPage(TSubPage* pg)");
848
    DECL_TRACER("TPage::addSubPage(TSubPage* pg)");
847
 
849
 
848
    if (!pg)
850
    if (!pg)
849
    {
851
    {
850
        MSG_ERROR("Parameter is NULL!");
852
        MSG_ERROR("Parameter is NULL!");
851
        TError::setError();
853
        TError::setError();
852
        return nullptr;
854
        return false;
853
    }
855
    }
854
 
856
 
855
    PAGECHAIN_T *chain = new PAGECHAIN_T;
-
 
856
    chain->subpage = pg;
857
    if (mSubPages.empty())
857
    chain->next = nullptr;
-
 
858
    chain->prev = nullptr;
-
 
859
    PAGECHAIN_T *spg = mSubPages;
-
 
860
 
-
 
861
    if (spg)
-
 
862
    {
-
 
863
        // First make sure that the new page is not already in the chain.
-
 
864
        PAGECHAIN_T *p = spg;
-
 
865
 
-
 
866
        while (p)
858
        mZOrder = 0;
867
        {
-
 
868
            if (p->subpage && p->subpage->getNumber() == pg->getNumber())
-
 
869
            {
-
 
870
                MSG_TRACE("Page " << pg->getNumber() << " is already in chain. Don't add it again.");
-
 
871
                delete chain;
-
 
872
                return p;
-
 
873
            }
-
 
874
 
-
 
875
            p = p->next;
-
 
876
        }
-
 
877
 
859
 
878
        // The subpage is not in chain. So we add it now.
-
 
879
        p = spg;
860
#if __cplusplus < 201703L
880
        // Find the last element in chain
861
    map<int, TSubPage *>::iterator iter = mSubPages.find(pg->getNumber());
881
        while (p && p->next)
-
 
882
            p = p->next;
-
 
883
 
862
 
884
        p->next = chain;
863
    if (iter != mSubPages.end() && iter->second != pg)
885
        chain->prev = p;
864
        iter->second = pg;
886
    }
-
 
887
    else
865
    else
-
 
866
        mSubPages.insert(pair<int, TSubPage *>(pg->getNumber(), pg));
888
    {
867
#else
889
        mZOrder = 0;
-
 
890
        mSubPages = chain;
868
    mSubPages.insert_or_assign(pg->getNumber(), pg);
891
    }
869
#endif
892
 
-
 
893
    mLastSubPage = 0;
870
    mLastSubPage = 0;
894
    return chain;
871
    return true;
895
}
872
}
896
 
873
 
897
bool TPage::removeSubPage(int ID)
874
bool TPage::removeSubPage(int ID)
898
{
875
{
899
    DECL_TRACER("TPage::removeSubPage(int ID)");
876
    DECL_TRACER("TPage::removeSubPage(int ID)");
900
 
877
 
901
    PAGECHAIN_T *p = mSubPages;
878
    map<int, TSubPage *>::iterator iter = mSubPages.find(ID);
902
    PAGECHAIN_T *prev = nullptr;
-
 
903
 
879
 
904
    while (p)
880
    if (iter != mSubPages.end())
905
    {
881
    {
906
        if (p->subpage->getNumber() == ID)
-
 
907
        {
-
 
908
            PAGECHAIN_T *next = p->next;
-
 
909
 
-
 
910
            if (prev)
-
 
911
            {
-
 
912
                prev->next = next;
-
 
913
                next->prev = prev;
-
 
914
            }
-
 
915
            else
-
 
916
            {
-
 
917
                mSubPages = next;
882
        mSubPages.erase(iter);
918
                mSubPages->prev = nullptr;
-
 
919
            }
-
 
920
 
-
 
921
            delete p;
-
 
922
            mLastSubPage = 0;
-
 
923
            return true;
883
        return true;
924
        }
-
 
925
 
-
 
926
        prev = p;
-
 
927
        p = p->next;
-
 
928
    }
884
    }
929
 
885
 
930
    return false;
886
    return false;
931
}
887
}
932
 
888
 
933
bool TPage::removeSubPage(const std::string& nm)
889
bool TPage::removeSubPage(const std::string& nm)
934
{
890
{
935
    DECL_TRACER("TPage::removeSubPage(const std::string& nm)");
891
    DECL_TRACER("TPage::removeSubPage(const std::string& nm)");
936
 
892
 
937
    PAGECHAIN_T *p = mSubPages;
893
    if (mSubPages.empty())
938
    PAGECHAIN_T *prev = nullptr;
894
        return false;
939
 
895
 
940
    while (p)
896
    map<int, TSubPage *>::iterator iter;
-
 
897
 
-
 
898
    for (iter = mSubPages.begin(); iter != mSubPages.end(); ++iter)
941
    {
899
    {
942
        if (p->subpage->getName().compare(nm) == 0)
900
        if (iter->second->getName() == nm)
943
        {
901
        {
944
            PAGECHAIN_T *next = p->next;
-
 
945
 
-
 
946
            if (prev)
-
 
947
            {
-
 
948
                prev->next = next;
-
 
949
                next->prev = prev;
-
 
950
            }
-
 
951
            else
-
 
952
            {
-
 
953
                mSubPages = next;
902
            mSubPages.erase(iter);
954
                mSubPages->prev = nullptr;
-
 
955
            }
-
 
956
 
-
 
957
            delete p;
-
 
958
            mLastSubPage = 0;
-
 
959
            return true;
903
            return true;
960
        }
904
        }
961
 
-
 
962
        prev = p;
-
 
963
        p = p->next;
-
 
964
    }
905
    }
965
 
906
 
966
    return false;
907
    return false;
967
}
908
}
968
 
909
 
969
TSubPage *TPage::getSubPage(int pageID)
910
TSubPage *TPage::getSubPage(int pageID)
970
{
911
{
971
    DECL_TRACER("TPage::getSubPage(int pageID)");
912
    DECL_TRACER("TPage::getSubPage(int pageID)");
972
 
913
 
973
    PAGECHAIN_T *pg = mSubPages;
-
 
974
 
-
 
975
    while (pg)
-
 
976
    {
-
 
977
        if (pg->subpage->getNumber() == pageID)
914
    map<int, TSubPage *>::iterator iter = mSubPages.find(pageID);
978
        {
-
 
979
            mLastSubPage = pageID;
-
 
980
            return pg->subpage;
-
 
981
        }
-
 
982
 
915
 
983
        pg = pg->next;
916
    if (iter != mSubPages.end())
984
    }
917
        return iter->second;
985
 
918
 
986
    mLastSubPage = 0;
919
    mLastSubPage = 0;
987
    return nullptr;
920
    return nullptr;
988
}
921
}
989
 
922
 
990
TSubPage *TPage::getSubPage(const std::string& name)
923
TSubPage *TPage::getSubPage(const std::string& name)
991
{
924
{
992
    DECL_TRACER("TPage::getSubPage(const std::string& name)");
925
    DECL_TRACER("TPage::getSubPage(const std::string& name)");
993
 
926
 
994
    PAGECHAIN_T *pg = mSubPages;
927
    if (mSubPages.empty())
-
 
928
        return nullptr;
995
 
929
 
996
    while (pg)
-
 
997
    {
-
 
998
        if (pg->subpage->getName().compare(name) == 0)
-
 
999
        {
-
 
1000
            mLastSubPage = pg->subpage->getNumber();
930
    map<int, TSubPage *>::iterator iter;
1001
            return pg->subpage;
-
 
1002
        }
-
 
1003
 
931
 
-
 
932
    for (iter = mSubPages.begin(); iter != mSubPages.end(); ++iter)
-
 
933
    {
-
 
934
        if (iter->second->getName() == name)
1004
        pg = pg->next;
935
            return iter->second;
1005
    }
936
    }
1006
 
937
 
1007
    mLastSubPage = 0;
938
    mLastSubPage = 0;
1008
    return nullptr;
939
    return nullptr;
1009
}
940
}
1010
 
941
 
1011
TSubPage *TPage::getFirstSubPage()
942
TSubPage *TPage::getFirstSubPage()
1012
{
943
{
1013
    DECL_TRACER("TPage::getFirstSubPage()");
944
    DECL_TRACER("TPage::getFirstSubPage()");
1014
 
945
 
-
 
946
    if (mSubPages.empty())
-
 
947
    {
-
 
948
        MSG_DEBUG("No subpages in chain.");
-
 
949
        mLastSubPage = 0;
-
 
950
        return nullptr;
-
 
951
    }
-
 
952
 
1015
    PAGECHAIN_T *pg = mSubPages;
953
    TSubPage *pg = mSubPages.begin()->second;
1016
 
954
 
1017
    if (pg && pg->subpage)
955
    if (!pg)
1018
    {
956
    {
1019
        mLastSubPage = pg->subpage->getNumber();
-
 
1020
        MSG_DEBUG("Subpage (Z: " << pg->subpage->getZOrder() << "): " << pg->subpage->getNumber() << ". " << pg->subpage->getName());
957
        MSG_ERROR("The pointer to the subpage " << mSubPages.begin()->first << " is NULL!");
1021
        return pg->subpage;
958
        return nullptr;
1022
    }
959
    }
1023
 
960
 
1024
    MSG_DEBUG("No subpages in chain.");
-
 
1025
    mLastSubPage = 0;
961
    mLastSubPage = pg->getNumber();
-
 
962
    MSG_DEBUG("Subpage (Z: " << pg->getZOrder() << "): " << pg->getNumber() << ". " << pg->getName());
1026
    return nullptr;
963
    return pg;
1027
}
964
}
1028
 
965
 
1029
TSubPage *TPage::getNextSubPage()
966
TSubPage *TPage::getNextSubPage()
1030
{
967
{
1031
    DECL_TRACER("TPage::getNextSubPage()");
968
    DECL_TRACER("TPage::getNextSubPage()");
1032
 
969
 
1033
    if (mLastSubPage > 0 && mSubPages)
970
    if (mSubPages.empty())
1034
    {
971
    {
1035
        PAGECHAIN_T *p = mSubPages;
972
        MSG_DEBUG("No subpages in chain.");
-
 
973
        mLastSubPage = 0;
-
 
974
        return nullptr;
-
 
975
    }
1036
 
976
 
1037
        while (p)
977
    if (mLastSubPage <= 0)
1038
        {
-
 
1039
            if (p->subpage && p->subpage->getNumber() == mLastSubPage)
-
 
1040
            {
-
 
1041
                if (p->next && p->next->subpage)
-
 
1042
                {
-
 
1043
                    TSubPage *page = p->next->subpage;
-
 
1044
                    mLastSubPage = page->getNumber();
978
        mLastSubPage = mSubPages.begin()->second->getNumber();
1045
                    MSG_DEBUG("Subpage (Z: " << page->getZOrder() << "): " << page->getNumber() << ". " << page->getName());
-
 
1046
                    return page;
-
 
1047
                }
-
 
1048
            }
-
 
1049
 
979
 
-
 
980
    map<int, TSubPage *>::iterator iter = mSubPages.find(mLastSubPage);
-
 
981
 
-
 
982
    if (iter != mSubPages.end())
-
 
983
        iter++;
-
 
984
    else
-
 
985
    {
-
 
986
        MSG_DEBUG("No more subpages in chain.");
-
 
987
        mLastSubPage = 0;
1050
            p = p->next;
988
        return nullptr;
1051
        }
989
    }
-
 
990
 
-
 
991
    if (iter != mSubPages.end())
-
 
992
    {
-
 
993
        TSubPage *page = iter->second;
-
 
994
        mLastSubPage = page->getNumber();
-
 
995
        MSG_DEBUG("Subpage (Z: " << page->getZOrder() << "): " << page->getNumber() << ". " << page->getName());
-
 
996
        return page;
1052
    }
997
    }
1053
 
998
 
1054
    MSG_DEBUG("No more subpages in chain.");
999
    MSG_DEBUG("No more subpages in chain.");
1055
    mLastSubPage = 0;
1000
    mLastSubPage = 0;
1056
    return nullptr;
1001
    return nullptr;
Line 1058... Line 1003...
1058
 
1003
 
1059
TSubPage *TPage::getPrevSubPage()
1004
TSubPage *TPage::getPrevSubPage()
1060
{
1005
{
1061
    DECL_TRACER("TPage::getPrevSubPage()");
1006
    DECL_TRACER("TPage::getPrevSubPage()");
1062
 
1007
 
-
 
1008
    if (mSubPages.empty())
-
 
1009
    {
-
 
1010
        MSG_DEBUG("No last subpage or no subpages at all!");
1063
    if (mLastSubPage < MAX_PAGE_ID || !mSubPages)
1011
        mLastSubPage = 0;
1064
        return nullptr;
1012
        return nullptr;
-
 
1013
    }
1065
 
1014
 
1066
    PAGECHAIN_T *pg = mSubPages;
1015
    if (mLastSubPage < MAX_PAGE_ID)
1067
 
-
 
1068
    while (pg)
-
 
1069
    {
1016
    {
1070
        if (pg->subpage->getNumber() == mLastSubPage)
1017
        map<int, TSubPage *>::iterator iter = mSubPages.end();
1071
        {
-
 
1072
            if (!pg->prev)
-
 
1073
            {
1018
        iter--;
1074
                mLastSubPage = 0;
1019
        mLastSubPage = iter->first;
1075
                MSG_DEBUG("No more subpages in chain.");
-
 
1076
                return nullptr;
-
 
1077
            }
1020
    }
1078
 
1021
 
1079
            mLastSubPage = pg->prev->subpage->getNumber();
1022
    map<int, TSubPage *>::iterator iter = mSubPages.find(mLastSubPage);
1080
            return pg->prev->subpage;
-
 
1081
        }
-
 
1082
 
1023
 
-
 
1024
    if (iter != mSubPages.end() && iter != mSubPages.begin())
-
 
1025
        iter--;
-
 
1026
    else
-
 
1027
    {
-
 
1028
        MSG_DEBUG("No more subpages in chain.");
-
 
1029
        mLastSubPage = 0;
1083
        pg = pg->next;
1030
        return nullptr;
1084
    }
1031
    }
1085
 
1032
 
1086
    MSG_DEBUG("No more subpages in chain.");
1033
    TSubPage *page = iter->second;
1087
    mLastSubPage = 0;
1034
    mLastSubPage = page->getNumber();
-
 
1035
    MSG_DEBUG("Subpage (Z: " << page->getZOrder() << "): " << page->getNumber() << ". " << page->getName());
1088
    return nullptr;
1036
    return page;
1089
}
1037
}
1090
 
1038
 
1091
TSubPage *TPage::getLastSubPage()
1039
TSubPage *TPage::getLastSubPage()
1092
{
1040
{
1093
    DECL_TRACER("TPage::getLastSubPage()");
1041
    DECL_TRACER("TPage::getLastSubPage()");
1094
 
1042
 
1095
    if (!mSubPages)
1043
    if (mSubPages.empty())
1096
    {
1044
    {
1097
        mLastSubPage = 0;
1045
        mLastSubPage = 0;
1098
        MSG_DEBUG("No subpages in cache!");
1046
        MSG_DEBUG("No subpages in cache!");
1099
        return nullptr;
1047
        return nullptr;
1100
    }
1048
    }
1101
 
1049
 
1102
    PAGECHAIN_T *pg = mSubPages;
1050
    map<int, TSubPage *>::iterator iter = mSubPages.end();
1103
 
-
 
1104
    while (pg && pg->next)
1051
    iter--;
1105
        pg = pg->next;
1052
    TSubPage *pg = iter->second;
1106
 
-
 
1107
    mLastSubPage = pg->subpage->getNumber();
1053
    mLastSubPage = pg->getNumber();
-
 
1054
    MSG_DEBUG("Subpage (Z: " << pg->getZOrder() << "): " << pg->getNumber() << ". " << pg->getName());
1108
    return pg->subpage;
1055
    return pg;
1109
}
1056
}
1110
 
1057
 
1111
void TPage::drop()
1058
void TPage::drop()
1112
{
1059
{
1113
    DECL_TRACER("TPage::drop()");
1060
    DECL_TRACER("TPage::drop()");
1114
 
1061
 
1115
    PAGECHAIN_T *pc = mSubPages;
-
 
1116
 
-
 
1117
    // remove all subpages, if there are any
1062
    // remove all subpages, if there are any
1118
#if TESTMODE == 1
1063
#if TESTMODE == 1
1119
    _block_screen = true;
1064
    _block_screen = true;
1120
#endif
1065
#endif
1121
    while (pc)
1066
    if (!mSubPages.empty())
1122
    {
1067
    {
1123
        if (pc->subpage)
1068
        map<int, TSubPage *>::iterator iter;
-
 
1069
 
-
 
1070
        for (iter = mSubPages.begin(); iter != mSubPages.end(); ++iter)
1124
        {
1071
        {
1125
            MSG_DEBUG("Dropping popup " << pc->subpage->getNumber() << ": " << pc->subpage->getName());
1072
            if (iter->second)
1126
            pc->subpage->drop();
1073
                iter->second->drop();
1127
        }
1074
        }
1128
 
-
 
1129
        pc = pc->next;
-
 
1130
    }
1075
    }
1131
#if TESTMODE == 1
1076
#if TESTMODE == 1
1132
    _block_screen = false;
1077
    _block_screen = false;
1133
#endif
1078
#endif
1134
 
1079
 
Line 1236... Line 1181...
1236
 
1181
 
1237
void TPage::sortSubpages()
1182
void TPage::sortSubpages()
1238
{
1183
{
1239
    DECL_TRACER("TPage::sortSubpage()");
1184
    DECL_TRACER("TPage::sortSubpage()");
1240
 
1185
 
1241
    PAGECHAIN_T *pages = nullptr;
-
 
1242
    bool turned = false;
1186
    mSubPagesSorted.clear();
1243
 
1187
 
1244
    // Here we do a simple bubble sort to bring the subpages in ascending Z-order
1188
    if (mSubPages.empty())
1245
    do
1189
        return;
1246
    {
1190
 
1247
        turned = false;
-
 
1248
        pages = mSubPages;
1191
    map<int, TSubPage *>::iterator iter;
1249
 
1192
 
-
 
1193
    for (iter = mSubPages.begin(); iter != mSubPages.end(); ++iter)
-
 
1194
    {
1250
        while (pages && pages->next)
1195
        if (iter->second->getZOrder() >= 0)
1251
        {
1196
        {
1252
            int actZ = 0;
1197
            mSubPagesSorted.insert(pair<int, TSubPage *>(iter->second->getZOrder(), iter->second));
-
 
1198
            MSG_DEBUG("Page " << iter->second->getNumber() << " (" << iter->second->getName() << "): sorted in with Z-Order " << iter->second->getZOrder());
1253
            int nextZ = 0;
1199
        }
-
 
1200
    }
-
 
1201
}
1254
 
1202
 
1255
            if (pages->next->subpage && pages->subpage)
1203
map<int, TSubPage *>& TPage::getSortedSubpages(bool force)
1256
            {
1204
{
1257
                nextZ = pages->next->subpage->getZOrder();
1205
    DECL_TRACER("TPage::getSortedSubpages(bool force)");
1258
                actZ = pages->subpage->getZOrder();
-
 
1259
            }
-
 
1260
 
1206
 
1261
            if (actZ > nextZ)   // Turn?
1207
    if (mSubPagesSorted.empty() || force)
1262
            {                   // Yes, then change only pointers to subpages
-
 
1263
                TSubPage *sp = pages->next->subpage;
-
 
1264
 
-
 
1265
                pages->next->subpage = pages->subpage;
-
 
1266
                pages->subpage = sp;
1208
        sortSubpages();
1267
                turned = true;
-
 
1268
            }
-
 
1269
 
1209
 
1270
            pages = pages->next;
1210
    return mSubPagesSorted;
1271
        }
-
 
1272
    }
-
 
1273
    while (turned);
-
 
1274
}
1211
}
1275
 
1212
 
1276
int TPage::getNextZOrder()
1213
int TPage::getNextZOrder()
1277
{
1214
{
1278
    DECL_TRACER("TPage::getNextZOrder()");
1215
    DECL_TRACER("TPage::getNextZOrder()");
1279
 
1216
 
1280
    // Find highest z-order number
1217
    // Find highest z-order number
1281
    PAGECHAIN_T *pages = mSubPages;
-
 
1282
    int cnt = 0;
1218
    int cnt = 0;
-
 
1219
    map<int, TSubPage *>::iterator iter;
1283
 
1220
 
1284
    while(pages)
1221
    for (iter = mSubPages.begin(); iter != mSubPages.end(); ++iter)
1285
    {
1222
    {
-
 
1223
        int zo = iter->second->getZOrder();
-
 
1224
 
1286
        if (pages->subpage && pages->subpage->getZOrder() != ZORDER_INVALID)
1225
        if (iter->second && zo != ZORDER_INVALID)
1287
        {
1226
        {
1288
            cnt++;
1227
            if (cnt < zo)
1289
            pages->subpage->setZOrder(cnt);
1228
                cnt = zo;
1290
        }
1229
        }
1291
 
-
 
1292
        pages = pages->next;
-
 
1293
    }
1230
    }
1294
 
1231
 
1295
    mZOrder = cnt + 1;
1232
    mZOrder = cnt + 1;
1296
    MSG_DEBUG("New Z-order: " << mZOrder);
1233
    MSG_DEBUG("New Z-order: " << mZOrder);
1297
    return mZOrder;
1234
    return mZOrder;
Line 1300... Line 1237...
1300
int TPage::decZOrder()
1237
int TPage::decZOrder()
1301
{
1238
{
1302
    DECL_TRACER("TPage::decZOrder()");
1239
    DECL_TRACER("TPage::decZOrder()");
1303
 
1240
 
1304
    // Find highest z-order number
1241
    // Find highest z-order number
1305
    PAGECHAIN_T *pages = mSubPages;
-
 
1306
    int z = 0;
1242
    int cnt = 0;
-
 
1243
    map<int, TSubPage *>::iterator iter;
1307
 
1244
 
1308
    while(pages)
1245
    for (iter = mSubPages.begin(); iter != mSubPages.end(); ++iter)
1309
    {
1246
    {
-
 
1247
        int zo = iter->second->getZOrder();
-
 
1248
 
1310
        if (pages->subpage && pages->subpage->getZOrder() != ZORDER_INVALID)
1249
        if (iter->second && zo != ZORDER_INVALID)
1311
        {
1250
        {
1312
            z++;
1251
            if (cnt < zo)
1313
            pages->subpage->setZOrder(z);
1252
                cnt = zo;
1314
        }
1253
        }
1315
 
-
 
1316
        pages = pages->next;
-
 
1317
    }
1254
    }
1318
 
1255
 
1319
    mZOrder = z;
1256
    mZOrder = cnt;
1320
    return mZOrder;
1257
    return mZOrder;
1321
}
1258
}