From d9a9615de8d7a1a9a4b1894ec99d4c7a1da5d531 Mon Sep 17 00:00:00 2001 From: Kacper Kasper Date: Fri, 20 Apr 2018 22:02:04 +0200 Subject: [PATCH 1/2] Extract YabTabView cleanup to a function. * No functional change intended. --- src/YabInterface.cpp | 78 +++++++++++++------------------------------- src/YabInterface.h | 1 + 2 files changed, 23 insertions(+), 56 deletions(-) diff --git a/src/YabInterface.cpp b/src/YabInterface.cpp index c1b7b76..56a66c8 100644 --- a/src/YabInterface.cpp +++ b/src/YabInterface.cpp @@ -105,7 +105,7 @@ static bool quitting = false; static property_info prop_list[] = { { "YabSendString", {B_SET_PROPERTY, 0}, {B_NAME_SPECIFIER, 0}, "Send a string to MESSAGE$"}, 0 // terminate list -}; +}; const char* _L(const char* text) { @@ -386,15 +386,7 @@ int YabInterface::CloseWindow(const char* view) { while(child) { - if(is_kind_of(child, YabTabView)) - { - for(int i = 0; i<((YabTabView*)child)->CountTabs(); i++) - { - YabView *t = (YabView*)((YabTabView*)child)->TabAt(i)->View(); - RemoveView(t); - viewList->DelView(t->NameForTabView()); - } - } + CleanupYabTabView(child); if(is_kind_of(child, YabBitmapView)) yabcanvas->RemoveItem(child); @@ -403,15 +395,7 @@ int YabInterface::CloseWindow(const char* view) if(subchild = child->ChildAt(0)) while(subchild) { - if(is_kind_of(subchild, YabTabView)) - { - for(int i = 0; i<((YabTabView*)subchild)->CountTabs(); i++) - { - YabView *t = (YabView*)((YabTabView*)subchild)->TabAt(i)->View(); - RemoveView(t); - viewList->DelView(t->NameForTabView()); - } - } + CleanupYabTabView(subchild); if(viewList->GetView(subchild->Name())) { RemoveView(subchild); @@ -3379,30 +3363,14 @@ void YabInterface::WindowClear(const char* window) { while(child) { - if(is_kind_of(child, YabTabView)) - { - for(int i = 0; i<((YabTabView*)child)->CountTabs(); i++) - { - YabView *t = (YabView*)((YabTabView*)child)->TabAt(i)->View(); - RemoveView(t); - viewList->DelView(t->NameForTabView()); - } - } + CleanupYabTabView(child); if(is_kind_of(child, YabBitmapView)) yabcanvas->RemoveItem(child); BView *subchild; if(subchild = child->ChildAt(0)) while(subchild) { - if(is_kind_of(subchild, YabTabView)) - { - for(int i = 0; i<((YabTabView*)subchild)->CountTabs(); i++) - { - YabView *t = (YabView*)((YabTabView*)subchild)->TabAt(i)->View(); - RemoveView(t); - viewList->DelView(t->NameForTabView()); - } - } + CleanupYabTabView(subchild); if(viewList->GetView(subchild->Name())) { RemoveView(subchild); @@ -3458,31 +3426,14 @@ void YabInterface::RemoveView(BView *myView) if(child = myView->ChildAt(0)) while(child) { - - if(is_kind_of(child, YabTabView)) - { - for(int i = 0; i<((YabTabView*)child)->CountTabs(); i++) - { - YabView *t = (YabView*)((YabTabView*)child)->TabAt(i)->View(); - RemoveView(t); - viewList->DelView(t->NameForTabView()); - } - } + CleanupYabTabView(child); if(is_kind_of(child, YabBitmapView)) yabcanvas->RemoveItem(child); BView *subchild; if(subchild = child->ChildAt(0)) while(subchild) { - if(is_kind_of(subchild, YabTabView)) - { - for(int i = 0; i<((YabTabView*)subchild)->CountTabs(); i++) - { - YabView *t = (YabView*)((YabTabView*)subchild)->TabAt(i)->View(); - RemoveView(t); - viewList->DelView(t->NameForTabView()); - } - } + CleanupYabTabView(subchild); if(viewList->GetView(subchild->Name())) { RemoveView(subchild); @@ -3527,6 +3478,21 @@ void YabInterface::RemoveView(BView *myView) } } +void YabInterface::CleanupYabTabView(BView* view) +{ + if(view == NULL || viewList == NULL) return; + + if(is_kind_of(view, YabTabView)) { + YabTabView* tabView = static_cast(view); + for(int i = 0; i < tabView->CountTabs(); i++) + { + YabView *t = static_cast(tabView->TabAt(i)->View()); + RemoveView(t); + viewList->DelView(t->NameForTabView()); + } + } +} + void YabInterface::TextEdit(BRect frame, const char* title, int scrollbar, const char* window) { YabView *myView = cast_as((BView*)viewList->GetView(window), YabView); diff --git a/src/YabInterface.h b/src/YabInterface.h index 859ca07..96943a8 100644 --- a/src/YabInterface.h +++ b/src/YabInterface.h @@ -248,6 +248,7 @@ void GetMMsgInfo(BString &t, int mouseStateInfo, int mouseLButton, int mouseMButton, int mouseRButton, int x, int y, const char* name); BBitmap* loadImage(const char* name); static int compare(BListItem **firstArg, BListItem **secondArg); + void CleanupYabTabView(BView* view); BTranslatorRoster *Roster; char ApplicationDirectory[1024]; From 6c9edbb68c870046d2c8ff3aadf4b2c3a7a81260 Mon Sep 17 00:00:00 2001 From: Kacper Kasper Date: Fri, 20 Apr 2018 22:25:57 +0200 Subject: [PATCH 2/2] Extract subchild cleanup to a function. * No functional change intended. --- src/YabInterface.cpp | 55 +++++++++++++++----------------------------- src/YabInterface.h | 1 + 2 files changed, 20 insertions(+), 36 deletions(-) diff --git a/src/YabInterface.cpp b/src/YabInterface.cpp index 56a66c8..e06ff7a 100644 --- a/src/YabInterface.cpp +++ b/src/YabInterface.cpp @@ -391,18 +391,7 @@ int YabInterface::CloseWindow(const char* view) yabcanvas->RemoveItem(child); // viewList->PrintOut(); - BView *subchild; - if(subchild = child->ChildAt(0)) - while(subchild) - { - CleanupYabTabView(subchild); - if(viewList->GetView(subchild->Name())) - { - RemoveView(subchild); - viewList->DelView(subchild->Name()); - } - subchild = subchild->NextSibling(); - } + CleanupSubchildView(child->ChildAt(0)); if(viewList->GetView(child->Name())) { RemoveView(child); @@ -3366,18 +3355,7 @@ void YabInterface::WindowClear(const char* window) CleanupYabTabView(child); if(is_kind_of(child, YabBitmapView)) yabcanvas->RemoveItem(child); - BView *subchild; - if(subchild = child->ChildAt(0)) - while(subchild) - { - CleanupYabTabView(subchild); - if(viewList->GetView(subchild->Name())) - { - RemoveView(subchild); - viewList->DelView(subchild->Name()); - } - subchild = subchild->NextSibling(); - } + CleanupSubchildView(child->ChildAt(0)); if(viewList->GetView(child->Name())) { RemoveView(child); @@ -3429,18 +3407,7 @@ void YabInterface::RemoveView(BView *myView) CleanupYabTabView(child); if(is_kind_of(child, YabBitmapView)) yabcanvas->RemoveItem(child); - BView *subchild; - if(subchild = child->ChildAt(0)) - while(subchild) - { - CleanupYabTabView(subchild); - if(viewList->GetView(subchild->Name())) - { - RemoveView(subchild); - viewList->DelView(subchild->Name()); - } - subchild = subchild->NextSibling(); - } + CleanupSubchildView(child->ChildAt(0)); if(viewList->GetView(child->Name())) { RemoveView(child); @@ -3493,6 +3460,22 @@ void YabInterface::CleanupYabTabView(BView* view) } } +void YabInterface::CleanupSubchildView(BView* view) +{ + if(view == NULL || viewList == NULL) return; + + while(view) + { + CleanupYabTabView(view); + if(viewList->GetView(view->Name())) + { + RemoveView(view); + viewList->DelView(view->Name()); + } + view = view->NextSibling(); + } +} + void YabInterface::TextEdit(BRect frame, const char* title, int scrollbar, const char* window) { YabView *myView = cast_as((BView*)viewList->GetView(window), YabView); diff --git a/src/YabInterface.h b/src/YabInterface.h index 96943a8..8c6dbd5 100644 --- a/src/YabInterface.h +++ b/src/YabInterface.h @@ -249,6 +249,7 @@ BBitmap* loadImage(const char* name); static int compare(BListItem **firstArg, BListItem **secondArg); void CleanupYabTabView(BView* view); + void CleanupSubchildView(BView* view); BTranslatorRoster *Roster; char ApplicationDirectory[1024];