From d9a9615de8d7a1a9a4b1894ec99d4c7a1da5d531 Mon Sep 17 00:00:00 2001 From: Kacper Kasper Date: Fri, 20 Apr 2018 22:02:04 +0200 Subject: [PATCH] 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];