diff --git a/ChangeLog b/ChangeLog index 7bd5cbc3..e3b699e9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2017-09-17 Markus Gans + * FObject has received the iterator child access methods + begin() and end() + 2017-09-15 Markus Gans * Fix byte access in data type char_data diff --git a/src/fapplication.cpp b/src/fapplication.cpp index fd2eee19..2828b318 100644 --- a/src/fapplication.cpp +++ b/src/fapplication.cpp @@ -1044,11 +1044,11 @@ bool FApplication::processAccelerator (const FWidget*& widget) && widget->accelerator_list && ! widget->accelerator_list->empty() ) { - FWidget::Accelerators::const_iterator iter, end; + FWidget::Accelerators::const_iterator iter, last; iter = widget->accelerator_list->begin(); - end = widget->accelerator_list->end(); + last = widget->accelerator_list->end(); - while ( iter != end ) + while ( iter != last ) { if ( quit_now || app_exit_loop ) break; @@ -1918,7 +1918,7 @@ void FApplication::processResizeEvent() //---------------------------------------------------------------------- int FApplication::processTimerEvent() { - FObject::TimerList::iterator iter, end; + FObject::TimerList::iterator iter, last; timeval currentTime; int activated = 0; @@ -1934,9 +1934,9 @@ int FApplication::processTimerEvent() return 0; iter = timer_list->begin(); - end = timer_list->end(); + last = timer_list->end(); - while ( iter != end ) + while ( iter != last ) { if ( ! (*iter).id || ! (*iter).object diff --git a/src/fbuttongroup.cpp b/src/fbuttongroup.cpp index 2dce30d1..a9296e69 100644 --- a/src/fbuttongroup.cpp +++ b/src/fbuttongroup.cpp @@ -126,11 +126,11 @@ bool FButtonGroup::hasFocusedButton() const if ( buttonlist.empty() ) return false; - constFObjectIterator iter, end; + constFObjectIterator iter, last; iter = buttonlist.begin(); - end = buttonlist.end(); + last = buttonlist.end(); - while ( iter != end ) + while ( iter != last ) { FToggleButton* toggle_button = static_cast(*iter); @@ -149,11 +149,11 @@ bool FButtonGroup::hasCheckedButton() const if ( buttonlist.empty() ) return false; - constFObjectIterator iter, end; + constFObjectIterator iter, last; iter = buttonlist.begin(); - end = buttonlist.end(); + last = buttonlist.end(); - while ( iter != end ) + while ( iter != last ) { FToggleButton* toggle_button = static_cast(*iter); @@ -177,11 +177,11 @@ void FButtonGroup::hide() if ( ! buttonlist.empty() ) { - constFObjectIterator iter, end; + constFObjectIterator iter, last; iter = buttonlist.begin(); - end = buttonlist.end(); + last = buttonlist.end(); - while ( iter != end ) + while ( iter != last ) { FToggleButton* toggle_button = static_cast(*iter); toggle_button->hide(); @@ -325,11 +325,11 @@ void FButtonGroup::onFocusIn (FFocusEvent* in_ev) { if ( hasCheckedButton() && ! buttonlist.empty() ) { - constFObjectIterator iter, end; + constFObjectIterator iter, last; iter = buttonlist.begin(); - end = buttonlist.end(); + last = buttonlist.end(); - while ( iter != end ) + while ( iter != last ) { FToggleButton* toggle_button = static_cast(*iter); @@ -389,7 +389,7 @@ void FButtonGroup::onFocusIn (FFocusEvent* in_ev) void FButtonGroup::cb_buttonToggled (FWidget* widget, data_ptr) { FToggleButton* button = static_cast(widget); - constFObjectIterator iter, end; + constFObjectIterator iter, last; if ( ! button->isChecked() ) return; @@ -398,9 +398,9 @@ void FButtonGroup::cb_buttonToggled (FWidget* widget, data_ptr) return; iter = buttonlist.begin(); - end = buttonlist.end(); + last = buttonlist.end(); - while ( iter != end ) + while ( iter != last ) { FToggleButton* toggle_button = static_cast(*iter); @@ -600,11 +600,11 @@ void FButtonGroup::directFocus() if ( hasCheckedButton() && ! buttonlist.empty() ) { - constFObjectIterator iter, end; + constFObjectIterator iter, last; iter = buttonlist.begin(); - end = buttonlist.end(); + last = buttonlist.end(); - while ( iter != end ) + while ( iter != last ) { FToggleButton* toggle_button = static_cast(*iter); diff --git a/src/fdialog.cpp b/src/fdialog.cpp index 9117dcac..ea6b028e 100644 --- a/src/fdialog.cpp +++ b/src/fdialog.cpp @@ -249,11 +249,11 @@ void FDialog::setPos (int x, int y, bool) if ( window_list && ! window_list->empty() ) { bool overlaid = false; - widgetList::const_iterator iter, end; + widgetList::const_iterator iter, last; iter = window_list->begin(); - end = window_list->end(); + last = window_list->end(); - while ( iter != end ) + while ( iter != last ) { if ( overlaid ) putArea ((*iter)->getTermPos(), (*iter)->getVWin()); @@ -335,11 +335,11 @@ void FDialog::setSize (int w, int h, bool adjust) if ( window_list && ! window_list->empty() ) { bool overlaid = false; - widgetList::const_iterator iter, end; + widgetList::const_iterator iter, last; iter = window_list->begin(); - end = window_list->end(); + last = window_list->end(); - while ( iter != end ) + while ( iter != last ) { if ( overlaid ) putArea ((*iter)->getTermPos(), (*iter)->getVWin()); @@ -949,11 +949,11 @@ void FDialog::onWindowRaised (FEvent*) // handle always-on-top windows if ( always_on_top_list && ! always_on_top_list->empty() ) { - widgetList::const_iterator iter, end; + widgetList::const_iterator iter, last; iter = always_on_top_list->begin(); - end = always_on_top_list->end(); + last = always_on_top_list->end(); - while ( iter != end ) + while ( iter != last ) { putArea ((*iter)->getTermPos(), (*iter)->getVWin()); ++iter; @@ -964,7 +964,7 @@ void FDialog::onWindowRaised (FEvent*) //---------------------------------------------------------------------- void FDialog::onWindowLowered (FEvent*) { - widgetList::const_iterator iter, end; + widgetList::const_iterator iter, last; if ( ! window_list ) return; @@ -973,9 +973,9 @@ void FDialog::onWindowLowered (FEvent*) return; iter = window_list->begin(); - end = window_list->end(); + last = window_list->end(); - while ( iter != end ) + while ( iter != last ) { putArea ((*iter)->getTermPos(), (*iter)->getVWin()); ++iter; diff --git a/src/ffiledialog.cpp b/src/ffiledialog.cpp index c54287c5..4aea0770 100644 --- a/src/ffiledialog.cpp +++ b/src/ffiledialog.cpp @@ -346,11 +346,11 @@ int FFileDialog::readDir() if ( ! dir_entries.empty() ) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; iter = dir_entries.begin(); - end = dir_entries.end(); + last = dir_entries.end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter).type == DT_DIR ) filebrowser->insert(FString((*iter).name), fc::SquareBrackets); @@ -612,16 +612,16 @@ inline bool FFileDialog::pattern_match ( const char* const pattern //---------------------------------------------------------------------- void FFileDialog::clear() { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; if ( dir_entries.empty() ) return; // delete all directory entries; iter = dir_entries.begin(); - end = dir_entries.end(); + last = dir_entries.end(); - while ( iter != end ) + while ( iter != last ) { std::free ((*iter).name); ++iter; @@ -637,11 +637,11 @@ int FFileDialog::numOfDirs() return 0; int n = 0; - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; iter = dir_entries.begin(); - end = dir_entries.end(); + last = dir_entries.end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter).type == DT_DIR && std::strcmp((*iter).name, ".") != 0 ) n++; @@ -685,13 +685,13 @@ int FFileDialog::changeDir (const FString& dirname) else if ( ! dir_entries.empty() ) { int i = 1; - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; const char* const baseName = \ basename(const_cast(lastdir.c_str())); iter = dir_entries.begin(); - end = dir_entries.end(); + last = dir_entries.end(); - while ( iter != end ) + while ( iter != last ) { if ( std::strcmp((*iter).name, baseName) == 0 ) { @@ -777,12 +777,12 @@ void FFileDialog::cb_processActivate (FWidget*, data_ptr) if ( ! dir_entries.empty() ) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; const FString& input = filename->getText().trim(); iter = dir_entries.begin(); - end = dir_entries.end(); + last = dir_entries.end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter).name && input && ! input.isNull() && std::strcmp((*iter).name, input) == 0 diff --git a/src/flistbox.cpp b/src/flistbox.cpp index 52756fef..76c2abdf 100644 --- a/src/flistbox.cpp +++ b/src/flistbox.cpp @@ -1372,7 +1372,7 @@ void FListBox::drawLabel() void FListBox::drawList() { FString element; - uInt start, end, inc_len; + uInt start, num, inc_len; bool isFocus; listBoxItems::iterator iter; @@ -1381,11 +1381,11 @@ void FListBox::drawList() isFocus = ((flags & fc::focus) != 0); start = 0; - end = uInt(getHeight() - 2); + num = uInt(getHeight() - 2); inc_len = inc_search.getLength(); - if ( end > getCount() ) - end = getCount(); + if ( num > getCount() ) + num = getCount(); if ( last_yoffset >= 0 && last_yoffset == yoffset @@ -1395,12 +1395,12 @@ void FListBox::drawList() uInt last_pos = uInt(current - yoffset) - 1; uInt current_pos = uInt(last_current - yoffset) - 1; start = std::min(last_pos, current_pos); - end = std::max(last_pos, current_pos) + 1; + num = std::max(last_pos, current_pos) + 1; } iter = index2iterator(int(start) + yoffset); - for (uInt y = start; y < end; y++) + for (uInt y = start; y < num; y++) { bool serach_mark = false; bool lineHasBrackets = hasBrackets(iter); diff --git a/src/flistview.cpp b/src/flistview.cpp index 84175252..23dee12a 100644 --- a/src/flistview.cpp +++ b/src/flistview.cpp @@ -118,7 +118,7 @@ void FListViewItem::setText (int column, const FString& text) FObject::FObjectIterator FListViewItem::insert (FListViewItem* child) { // Add a FListViewItem as child element - if ( ! child || ! hasChildren() ) + if ( ! child ) return FObjectIterator(0); return appendItem(child); @@ -174,8 +174,7 @@ FObject::FObjectIterator FListViewItem::appendItem (FListViewItem* child) { expandable = true; addChild (child); - FObjectList children = getChildren(); - return --children.end(); + return --FObject::end(); } //---------------------------------------------------------------------- @@ -203,10 +202,9 @@ int FListViewItem::getVisibleLines() return visible_lines; } - FObjectList children = this->getChildren(); - constFObjectIterator iter = children.begin(); + constFObjectIterator iter = FObject::begin(); - while ( iter != children.end() ) + while ( iter != FObject::end() ) { FListViewItem* child = static_cast(*iter); visible_lines += child->getVisibleLines(); diff --git a/src/flistview.h b/src/flistview.h index 9020ccc6..ee813f24 100644 --- a/src/flistview.h +++ b/src/flistview.h @@ -174,6 +174,8 @@ class FListView : public FWidget FObjectIterator insert ( const std::vector& , data_ptr , FObjectIterator ); + FObjectIterator beginOfList(); + FObjectIterator endOfList(); // Event handlers void onKeyPress (FKeyEvent*); @@ -322,6 +324,14 @@ inline FObject::FObjectIterator , FObjectIterator parent_iter ) { return insert (cols, 0, parent_iter); } +//---------------------------------------------------------------------- +inline FObject::FObjectIterator FListView::beginOfList() +{ return itemlist.begin(); } + +//---------------------------------------------------------------------- +inline FObject::FObjectIterator FListView::endOfList() +{ return itemlist.end(); } + //---------------------------------------------------------------------- inline FObject::FObjectIterator FListView::index2iterator (int index) { @@ -333,7 +343,15 @@ inline FObject::FObjectIterator FListView::index2iterator (int index) //---------------------------------------------------------------------- inline void FListView::nextElement (FObjectIterator& iter) { - ++iter; + FListViewItem* item = static_cast(*iter); + + if ( item->isExpandable() ) + { + //iter = item->begin(); + ++iter; + } + else + ++iter; } #endif // FLISTVIEW_H diff --git a/src/fmenu.cpp b/src/fmenu.cpp index 11d8763b..c05ece59 100644 --- a/src/fmenu.cpp +++ b/src/fmenu.cpp @@ -293,17 +293,17 @@ void FMenu::onMouseDown (FMouseEvent* ev) if ( ! item_list.empty() ) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; FMenu* show_sub_menu = 0; bool focus_changed = false; FPoint mouse_pos; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); mouse_pos = ev->getPos(); mouse_pos -= FPoint(getRightPadding(), getTopPadding()); - while ( iter != end ) + while ( iter != last ) { int x1, x2, y, mouse_x, mouse_y; x1 = (*iter)->getX(); @@ -401,14 +401,14 @@ void FMenu::onMouseUp (FMouseEvent* ev) if ( ! item_list.empty() ) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; FPoint mouse_pos; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); mouse_pos = ev->getPos(); mouse_pos -= FPoint(getRightPadding(), getTopPadding()); - while ( iter != end ) + while ( iter != last ) { int x1, x2, y; x1 = (*iter)->getX(); @@ -480,7 +480,7 @@ void FMenu::onMouseMove (FMouseEvent* ev) if ( mouse_down && ! item_list.empty() ) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; FMenu* smenu = 0; bool focus_changed = false; bool mouse_over_menu = false; @@ -492,7 +492,7 @@ void FMenu::onMouseMove (FMouseEvent* ev) FPoint mouse_pos; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); mouse_pos = ev->getPos(); mouse_pos -= FPoint(getRightPadding(), getTopPadding()); @@ -521,7 +521,7 @@ void FMenu::onMouseMove (FMouseEvent* ev) mouse_over_menubar = true; } - while ( iter != end ) + while ( iter != last ) { int x1, x2, y, mouse_x, mouse_y; x1 = (*iter)->getX(); @@ -710,7 +710,7 @@ void FMenu::onMouseMove (FMouseEvent* ev) void FMenu::cb_menuitem_toggled (FWidget* widget, data_ptr) { FMenuItem* menuitem = static_cast(widget); - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; if ( ! has_checkable_items ) return; @@ -722,9 +722,9 @@ void FMenu::cb_menuitem_toggled (FWidget* widget, data_ptr) return; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter) != menuitem && (*iter)->isChecked() @@ -819,13 +819,13 @@ void FMenu::init(FWidget* parent) void FMenu::calculateDimensions() { int item_X, item_Y, adjust_X; - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); max_item_width = 10; // minimum width // find the maximum item width - while ( iter != end ) + while ( iter != last ) { uInt item_width = (*iter)->getTextLength() + 2; int accel_key = (*iter)->accel_key; @@ -860,7 +860,7 @@ void FMenu::calculateDimensions() item_X = 1; item_Y = 1; - while ( iter != end ) + while ( iter != last ) { (*iter)->setGeometry (item_X, item_Y, int(max_item_width), 1); @@ -880,11 +880,11 @@ void FMenu::calculateDimensions() //---------------------------------------------------------------------- void FMenu::adjustItems() { - std::vector::const_iterator end, iter; + std::vector::const_iterator last, iter; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter)->hasMenu() ) { @@ -1034,11 +1034,11 @@ FMenu* FMenu::superMenuAt (int x, int y) //---------------------------------------------------------------------- bool FMenu::selectNextItem() { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter)->isSelected() ) { @@ -1084,9 +1084,9 @@ bool FMenu::selectNextItem() //---------------------------------------------------------------------- bool FMenu::selectPrevItem() { - std::vector::const_iterator iter, begin; + std::vector::const_iterator iter, first; iter = item_list.end(); - begin = item_list.begin(); + first = item_list.begin(); do { @@ -1127,7 +1127,7 @@ bool FMenu::selectPrevItem() break; } } - while ( iter != begin ); + while ( iter != first ); return true; } @@ -1144,11 +1144,11 @@ void FMenu::keypressMenuBar (FKeyEvent*& ev) //---------------------------------------------------------------------- bool FMenu::hotkeyMenu (FKeyEvent*& ev) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter)->hasHotkey() ) { @@ -1242,16 +1242,16 @@ void FMenu::draw() //---------------------------------------------------------------------- void FMenu::drawItems() { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; int c = 0; int y = 0; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); if ( has_checkable_items ) c = 1; - while ( iter != end ) + while ( iter != last ) { if ( (*iter)->isSeparator() ) { diff --git a/src/fmenubar.cpp b/src/fmenubar.cpp index d0ed36ce..4a180129 100644 --- a/src/fmenubar.cpp +++ b/src/fmenubar.cpp @@ -169,16 +169,16 @@ void FMenuBar::onMouseDown (FMouseEvent* ev) if ( ! item_list.empty() ) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; int mouse_x, mouse_y; bool focus_changed = false; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); mouse_x = ev->getX(); mouse_y = ev->getY(); - while ( iter != end ) + while ( iter != last ) { int x1, x2; x1 = (*iter)->getX(); @@ -255,13 +255,13 @@ void FMenuBar::onMouseUp (FMouseEvent* ev) if ( ! item_list.empty() ) { int mouse_x, mouse_y; - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); mouse_x = ev->getX(); mouse_y = ev->getY(); - while ( iter != end ) + while ( iter != last ) { int x1, x2; x1 = (*iter)->getX(); @@ -338,19 +338,19 @@ void FMenuBar::onMouseMove (FMouseEvent* ev) if ( mouse_down && ! item_list.empty() ) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; int mouse_x, mouse_y; bool mouse_over_menubar = false; bool focus_changed = false; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); mouse_x = ev->getX(); mouse_y = ev->getY(); if ( getTermGeometry().contains(ev->getTermPos()) ) mouse_over_menubar = true; - while ( iter != end ) + while ( iter != last ) { int x1, x2; x1 = (*iter)->getX(); @@ -506,12 +506,12 @@ void FMenuBar::calculateDimensions() { int item_X = 1; int item_Y = 1; - std::vector::const_iterator end, iter; + std::vector::const_iterator last, iter; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); // find the maximum item width - while ( iter != end ) + while ( iter != last ) { uInt len = (*iter)->getTextLength(); int item_width = int(len + 2); @@ -532,11 +532,11 @@ void FMenuBar::calculateDimensions() //---------------------------------------------------------------------- bool FMenuBar::selectNextItem() { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter)->isSelected() ) { @@ -597,9 +597,9 @@ bool FMenuBar::selectNextItem() //---------------------------------------------------------------------- bool FMenuBar::selectPrevItem() { - std::vector::const_iterator iter, begin; + std::vector::const_iterator iter, first; iter = item_list.end(); - begin = item_list.begin(); + first = item_list.begin(); do { @@ -655,7 +655,7 @@ bool FMenuBar::selectPrevItem() break; } } - while ( iter != begin ); + while ( iter != first ); return true; } @@ -663,11 +663,11 @@ bool FMenuBar::selectPrevItem() //---------------------------------------------------------------------- bool FMenuBar::hotkeyMenu (FKeyEvent*& ev) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter)->isEnabled() ) { @@ -756,7 +756,7 @@ void FMenuBar::draw() //---------------------------------------------------------------------- void FMenuBar::drawItems() { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; int screenWidth; int x = 1; screenWidth = getColumnNumber(); @@ -770,9 +770,9 @@ void FMenuBar::drawItems() setReverse(true); iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); - while ( iter != end ) + while ( iter != last ) { wchar_t* src; wchar_t* dest; @@ -922,11 +922,11 @@ void FMenuBar::adjustItems() { int item_X = 1; int item_Y = 1; - std::vector::const_iterator end, iter; + std::vector::const_iterator last, iter; iter = item_list.begin(); - end = item_list.end(); + last = item_list.end(); - while ( iter != end ) + while ( iter != last ) { // get item width int item_width = (*iter)->getWidth(); diff --git a/src/fmenuitem.cpp b/src/fmenuitem.cpp index f72bb8b9..65409e72 100644 --- a/src/fmenuitem.cpp +++ b/src/fmenuitem.cpp @@ -728,7 +728,7 @@ void FMenuItem::init (FWidget* parent) , this ); } - this->addCallback + addCallback // for this element ( "deactivate", F_METHOD_CALLBACK (parent, &FMenuBar::cb_item_deactivated) @@ -789,8 +789,8 @@ void FMenuItem::createDialogList (FMenu* winmenu) if ( dialog_list && ! dialog_list->empty() ) { - widgetList::const_iterator iter, begin; - iter = begin = dialog_list->begin(); + widgetList::const_iterator iter, first; + iter = first = dialog_list->begin(); while ( iter != dialog_list->end() && *iter ) { @@ -799,7 +799,7 @@ void FMenuItem::createDialogList (FMenu* winmenu) if ( win ) { FMenuItem* win_item; - int n = int(std::distance(begin, iter)); + int n = int(std::distance(first, iter)); // get the dialog title const FString& name = win->getText(); diff --git a/src/fobject.cpp b/src/fobject.cpp index 69b2987e..90d72740 100644 --- a/src/fobject.cpp +++ b/src/fobject.cpp @@ -79,14 +79,14 @@ FObject::~FObject() // destructor } // delete children objects - FObjectList children = this->getChildren(); - - if ( ! children.empty() ) + if ( hasChildren() ) { - constFObjectIterator iter; - iter = children.begin(); + constFObjectIterator iter, last; + FObjectList delete_list = children_list; + iter = delete_list.begin(); + last = delete_list.end(); - while ( iter != children.end() ) + while ( iter != last ) { delete (*iter); ++iter; @@ -100,14 +100,14 @@ FObject* FObject::getChild (int index) const { index--; - if ( children_list.empty() ) + if ( ! hasChildren() ) return 0; if ( index < 0 || index >= numOfChildren() ) return 0; constFObjectIterator iter; - iter = children_list.begin(); + iter = begin(); std::advance (iter, index); return *iter; } @@ -146,7 +146,7 @@ void FObject::delChild (FObject* obj) if ( ! obj ) return; - if ( ! children_list.empty() ) + if ( hasChildren() ) { obj->removeParent(); children_list.remove(obj); @@ -183,7 +183,7 @@ void FObject::getCurrentTime (timeval* time) //---------------------------------------------------------------------- int FObject::addTimer (int interval) { - FObject::TimerList::iterator iter, end; + FObject::TimerList::iterator iter, last; timeval time_interval; timeval currentTime; int id = 1; @@ -207,9 +207,9 @@ int FObject::addTimer (int interval) if ( ! timer_list->empty() ) { iter = timer_list->begin(); - end = timer_list->end(); + last = timer_list->end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter).id == id ) { @@ -233,9 +233,9 @@ int FObject::addTimer (int interval) // insert in list sorted by timeout iter = timer_list->begin(); - end = timer_list->end(); + last = timer_list->end(); - while ( iter != end && (*iter).timeout < t.timeout ) + while ( iter != last && (*iter).timeout < t.timeout ) ++iter; timer_list->insert (iter, t); @@ -247,19 +247,19 @@ int FObject::addTimer (int interval) //---------------------------------------------------------------------- bool FObject::delTimer (int id) { - FObject::TimerList::iterator iter, end; + FObject::TimerList::iterator iter, last; if ( id <= 0 || id > int(timer_list->size()) ) return false; timer_modify_lock = true; iter = timer_list->begin(); - end = timer_list->end(); + last = timer_list->end(); - while ( iter != end && (*iter).id != id ) + while ( iter != last && (*iter).id != id ) ++iter; - if ( iter != end ) + if ( iter != last ) { timer_list->erase(iter); timer_modify_lock = false; diff --git a/src/fobject.h b/src/fobject.h index e84e3766..d632e44c 100644 --- a/src/fobject.h +++ b/src/fobject.h @@ -45,32 +45,36 @@ class FObject virtual ~FObject(); // Accessors - virtual const char* getClassName() const; - FObject* getParent() const; - FObject* getChild (int) const; - const FObjectList& getChildren() const; - int numOfChildren() const; + virtual const char* getClassName() const; + FObject* getParent() const; + FObject* getChild (int) const; + const FObjectList& getChildren() const; + int numOfChildren() const; + FObjectIterator begin(); + FObjectIterator end(); + constFObjectIterator begin() const; + constFObjectIterator end() const; // Inquiries - bool hasParent() const; - bool hasChildren() const; - bool isChild (FObject*) const; - bool isDirectChild (FObject*) const; - bool isWidget() const; - bool isInstanceOf (const char*) const; - bool isTimerInUpdating() const; + bool hasParent() const; + bool hasChildren() const; + bool isChild (FObject*) const; + bool isDirectChild (FObject*) const; + bool isWidget() const; + bool isInstanceOf (const char*) const; + bool isTimerInUpdating() const; // Methods - void removeParent(); - void addChild (FObject*); - void delChild (FObject*); + void removeParent(); + void addChild (FObject*); + void delChild (FObject*); // Timer methods - static void getCurrentTime (timeval*); - int addTimer (int); - bool delTimer (int); - bool delOwnTimer(); - bool delAllTimer(); + static void getCurrentTime (timeval*); + int addTimer (int); + bool delTimer (int); + bool delOwnTimer(); + bool delAllTimer(); protected: struct timer_data @@ -124,6 +128,22 @@ inline const FObject::FObjectList& FObject::getChildren() const inline int FObject::numOfChildren() const { return int(children_list.size()); } +//---------------------------------------------------------------------- +inline FObject::FObjectIterator FObject::begin() +{ return children_list.begin(); } + +//---------------------------------------------------------------------- +inline FObject::FObjectIterator FObject::end() +{ return children_list.end(); } + +//---------------------------------------------------------------------- +inline FObject::constFObjectIterator FObject::begin() const +{ return children_list.begin(); } + +//---------------------------------------------------------------------- +inline FObject::constFObjectIterator FObject::end() const +{ return children_list.end(); } + //---------------------------------------------------------------------- inline bool FObject::hasParent() const { return has_parent; } diff --git a/src/fradiomenuitem.cpp b/src/fradiomenuitem.cpp index c74fe456..94843f9d 100644 --- a/src/fradiomenuitem.cpp +++ b/src/fradiomenuitem.cpp @@ -45,7 +45,7 @@ void FRadioMenuItem::init (FWidget* parent) if ( menu_ptr ) menu_ptr->has_checkable_items = true; - this->addCallback + addCallback // for this element ( "toggled", F_METHOD_CALLBACK (parent, &FMenu::cb_menuitem_toggled) diff --git a/src/fstatusbar.cpp b/src/fstatusbar.cpp index 0d76b651..2119defd 100644 --- a/src/fstatusbar.cpp +++ b/src/fstatusbar.cpp @@ -154,11 +154,11 @@ bool FStatusBar::hasActivatedKey() { if ( ! key_list.empty() ) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; iter = key_list.begin(); - end = key_list.end(); + last = key_list.end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter)->isActivated() ) return true; @@ -348,11 +348,11 @@ void FStatusBar::onMouseDown (FMouseEvent* ev) if ( ! key_list.empty() ) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; iter = key_list.begin(); - end = key_list.end(); + last = key_list.end(); - while ( iter != end ) + while ( iter != last ) { (*iter)->unsetMouseFocus(); ++iter; @@ -370,12 +370,12 @@ void FStatusBar::onMouseDown (FMouseEvent* ev) if ( ! key_list.empty() ) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; int X = 1; iter = key_list.begin(); - end = key_list.end(); + last = key_list.end(); - while ( iter != end ) + while ( iter != last ) { int x1, x2, mouse_x, mouse_y, kname_len, txt_length; @@ -416,12 +416,12 @@ void FStatusBar::onMouseUp (FMouseEvent* ev) if ( ! key_list.empty() ) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; int X = 1; iter = key_list.begin(); - end = key_list.end(); + last = key_list.end(); - while ( iter != end ) + while ( iter != last ) { int x1, x2, kname_len, txt_length; x1 = X; @@ -462,13 +462,13 @@ void FStatusBar::onMouseMove (FMouseEvent* ev) if ( mouse_down && ! key_list.empty() ) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; bool focus_changed = false; int X = 1; iter = key_list.begin(); - end = key_list.end(); + last = key_list.end(); - while ( iter != end ) + while ( iter != last ) { int x1, x2, mouse_x, mouse_y, kname_len, txt_length; x1 = X; @@ -511,13 +511,13 @@ void FStatusBar::cb_statuskey_activated (FWidget* widget, data_ptr) { if ( ! key_list.empty() ) { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; FStatusKey* statuskey = static_cast(widget); iter = key_list.begin(); - end = key_list.end(); + last = key_list.end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter) != statuskey && (*iter)->isActivated() ) (*iter)->unsetActive(); @@ -562,7 +562,7 @@ void FStatusBar::draw() //---------------------------------------------------------------------- void FStatusBar::drawKeys() { - std::vector::const_iterator iter, end; + std::vector::const_iterator iter, last; int screenWidth; screenWidth = getColumnNumber(); @@ -580,9 +580,9 @@ void FStatusBar::drawKeys() setReverse(true); iter = key_list.begin(); - end = key_list.end(); + last = key_list.end(); - while ( iter != end ) + while ( iter != last ) { int kname_len = int(getKeyName((*iter)->getKey()).getLength()); diff --git a/src/ftextview.cpp b/src/ftextview.cpp index 520393cb..f1cdd9db 100644 --- a/src/ftextview.cpp +++ b/src/ftextview.cpp @@ -185,7 +185,7 @@ void FTextView::insert (const FString& str, int pos) stringLines::iterator iter; stringLines text_split; FString s; - uLong end; + uLong num; if ( pos < 0 || pos >= int(getRows()) ) pos = int(getRows()); @@ -197,9 +197,9 @@ void FTextView::insert (const FString& str, int pos) iter = data.begin(); text_split = s.split("\r\n"); - end = text_split.size(); + num = text_split.size(); - for (uInt i = 0; i < end; i++) + for (uInt i = 0; i < num; i++) { uInt len; text_split[i] = text_split[i].removeBackspaces() @@ -239,24 +239,24 @@ void FTextView::insert (const FString& str, int pos) } //---------------------------------------------------------------------- -void FTextView::replaceRange (const FString& str, int start, int end) +void FTextView::replaceRange (const FString& str, int from, int to) { stringLines::iterator iter; - if ( start > end ) + if ( from > to ) return; - if ( start < 0 || start >= int(getRows()) ) + if ( from < 0 || from >= int(getRows()) ) return; - if ( end < 0 || end >= int(getRows()) ) + if ( to < 0 || to >= int(getRows()) ) return; iter = data.begin(); - data.erase (iter + start, iter + end + 1); + data.erase (iter + from, iter + to + 1); if ( ! str.isNull() ) - insert(str, start); + insert(str, from); } //---------------------------------------------------------------------- @@ -740,23 +740,22 @@ void FTextView::draw() //---------------------------------------------------------------------- void FTextView::drawText() { - uInt start, end; + uInt num; if ( data.empty() || getHeight() <= 2 || getWidth() <= 2 ) return; - start = 0; - end = uInt(getHeight() + nf_offset - 2); + num = uInt(getHeight() + nf_offset - 2); - if ( end > getRows() ) - end = getRows(); + if ( num > getRows() ) + num = getRows(); setColor(); if ( isMonochron() ) setReverse(true); - for (uInt y = start; y < end; y++) + for (uInt y = 0; y < num; y++) { uInt i, len; FString line; diff --git a/src/ftextview.h b/src/ftextview.h index 5778074b..2511869d 100644 --- a/src/ftextview.h +++ b/src/ftextview.h @@ -140,8 +140,8 @@ inline const FTextView::stringLines& FTextView::getLines() const { return data; } //---------------------------------------------------------------------- -inline void FTextView::deleteRange (int start, int end) -{ replaceRange (FString(), start, end); } +inline void FTextView::deleteRange (int from, int to) +{ replaceRange (FString(), from, to); } //---------------------------------------------------------------------- inline void FTextView::deleteLine (int pos) diff --git a/src/fvterm.cpp b/src/fvterm.cpp index f964896a..f53b0373 100644 --- a/src/fvterm.cpp +++ b/src/fvterm.cpp @@ -277,7 +277,7 @@ void FVTerm::delPreprocessingHandler (FVTerm* instance) if ( ! print_area || print_area->preprocessing_call.empty() ) return; - FPreprocessing::iterator iter, end; + FPreprocessing::iterator iter; iter = print_area->preprocessing_call.begin(); while ( iter != print_area->preprocessing_call.end() ) @@ -820,7 +820,7 @@ bool FVTerm::isChildPrintArea() const if ( p_obj && p_obj->child_print_area - && p_obj->child_print_area == this->print_area ) + && p_obj->child_print_area == print_area ) return true; else return false; diff --git a/src/fwidget.cpp b/src/fwidget.cpp index 8017db74..f31e3823 100644 --- a/src/fwidget.cpp +++ b/src/fwidget.cpp @@ -121,7 +121,7 @@ FWidget::~FWidget() // destructor // finish the program if ( rootObject == this ) - this->finish(); + finish(); } @@ -167,16 +167,16 @@ FWidget* FWidget::getFocusWidget() const } //---------------------------------------------------------------------- -FWidget* FWidget::getFirstFocusableWidget (FObjectList children) +FWidget* FWidget::getFirstFocusableWidget (FObjectList list) { - if ( children.empty() ) + if ( list.empty() ) return 0; - constFObjectIterator iter, end; - iter = children.begin(); - end = children.end(); + constFObjectIterator iter, last; + iter = list.begin(); + last = list.end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter)->isWidget() ) { @@ -193,14 +193,14 @@ FWidget* FWidget::getFirstFocusableWidget (FObjectList children) } //---------------------------------------------------------------------- -FWidget* FWidget::getLastFocusableWidget (FObjectList children) +FWidget* FWidget::getLastFocusableWidget (FObjectList list) { - if ( children.empty() ) + if ( list.empty() ) return 0; - constFObjectIterator iter, begin; - begin = children.begin(); - iter = children.end(); + constFObjectIterator iter, first; + first = list.begin(); + iter = list.end(); do { @@ -214,7 +214,7 @@ FWidget* FWidget::getLastFocusableWidget (FObjectList children) if ( child->isEnabled() && child->acceptFocus() ) return child; } - while ( iter != begin ); + while ( iter != first ); return 0; } @@ -838,14 +838,11 @@ FWidget* FWidget::childWidgetAt (FWidget* p, int x, int y) { if ( p && p->hasChildren() ) { - FObjectList children; - constFObjectIterator iter, end; + constFObjectIterator iter, last; + iter = p->begin(); + last = p->end(); - children = p->getChildren(); - iter = children.begin(); - end = children.end(); - - while ( iter != end ) + while ( iter != last ) { if ( ! (*iter)->isWidget() ) { @@ -874,18 +871,16 @@ FWidget* FWidget::childWidgetAt (FWidget* p, int x, int y) //---------------------------------------------------------------------- int FWidget::numOfFocusableChildren() { - FObjectList children; - constFObjectIterator iter, end; + constFObjectIterator iter, last; - if ( ! this->hasChildren() ) + if ( ! hasChildren() ) return 0; int num = 0; - children = this->getChildren(); - iter = children.begin(); - end = children.end(); + iter = FObject::begin(); + last = FObject::end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter)->isWidget() ) { @@ -1022,11 +1017,11 @@ void FWidget::emitCallback (const FString& emit_signal) // function pointer if ( ! callback_objects.empty() ) { - CallbackObjects::const_iterator iter, end; + CallbackObjects::const_iterator iter, last; iter = callback_objects.begin(); - end = callback_objects.end(); + last = callback_objects.end(); - while ( iter != end ) + while ( iter != last ) { if ( iter->cb_signal == emit_signal ) { @@ -1108,11 +1103,11 @@ void FWidget::redraw() if ( window_list && ! window_list->empty() ) { - widgetList::const_iterator iter, end; + widgetList::const_iterator iter, last; iter = window_list->begin(); - end = window_list->end(); + last = window_list->end(); - while ( iter != end ) + while ( iter != last ) { if ( (*iter)->isVisible() ) { @@ -1131,16 +1126,13 @@ void FWidget::redraw() else { // draw child elements - if ( this->hasChildren() ) + if ( hasChildren() ) { - FObjectList children; - constFObjectIterator iter, end; + constFObjectIterator iter, last; + iter = FObject::begin(); + last = FObject::end(); - children = this->getChildren(); - iter = children.begin(); - end = children.end(); - - while ( iter != end ) + while ( iter != last ) { if ( (*iter)->isWidget() ) { @@ -1229,16 +1221,13 @@ void FWidget::show() draw(); shown = true; - if ( this->hasChildren() ) + if ( hasChildren() ) { - FObjectList children; - constFObjectIterator iter, end; + constFObjectIterator iter, last; + iter = FObject::begin(); + last = FObject::end(); - children = this->getChildren(); - iter = children.begin(); - end = children.end(); - - while ( iter != end ) + while ( iter != last ) { if ( (*iter)->isWidget() ) { @@ -1288,17 +1277,15 @@ void FWidget::hide() //---------------------------------------------------------------------- bool FWidget::focusFirstChild() { - FObjectList children; - constFObjectIterator iter, end; + constFObjectIterator iter, last; - if ( ! this->hasChildren() ) + if ( ! hasChildren() ) return false; - children = this->getChildren(); - iter = children.begin(); - end = children.end(); + iter = FObject::begin(); + last = FObject::end(); - while ( iter != end ) + while ( iter != last ) { if ( ! (*iter)->isWidget() ) { @@ -1334,15 +1321,13 @@ bool FWidget::focusFirstChild() //---------------------------------------------------------------------- bool FWidget::focusLastChild() { - FObjectList children; - constFObjectIterator iter, begin; + constFObjectIterator iter, first; - if ( ! this->hasChildren() ) + if ( ! hasChildren() ) return false; - children = this->getChildren(); - iter = children.end(); - begin = children.begin(); + iter = FObject::end(); + first = FObject::begin(); do { @@ -1368,7 +1353,7 @@ bool FWidget::focusLastChild() return true; } } - while ( iter != begin ); + while ( iter != first ); return false; } @@ -1823,16 +1808,13 @@ void FWidget::adjustSize() getTermY() - 2 + getHeight() - padding.bottom ); - if ( this->hasChildren() ) + if ( hasChildren() ) { - FObjectList children; - constFObjectIterator iter, end; + constFObjectIterator iter, last; + iter = FObject::begin(); + last = FObject::end(); - children = this->getChildren(); - iter = children.begin(); - end = children.end(); - - while ( iter != end ) + while ( iter != last ) { if ( (*iter)->isWidget() ) { @@ -1857,11 +1839,11 @@ void FWidget::adjustSizeGlobal() if ( window_list && ! window_list->empty() ) { - widgetList::const_iterator iter, end; + widgetList::const_iterator iter, last; iter = window_list->begin(); - end = window_list->end(); + last = window_list->end(); - while ( iter != end ) + while ( iter != last ) { (*iter)->adjustSize(); ++iter; @@ -1881,14 +1863,11 @@ bool FWidget::focusNextChild() if ( parent->hasChildren() && parent->numOfFocusableChildren() > 1 ) { - FObjectList children; - FObjectIterator iter, end; + FObjectIterator iter, last; + iter = parent->begin(); + last = parent->end(); - children = parent->getChildren(); - iter = children.begin(); - end = children.end(); - - while ( iter != end ) + while ( iter != last ) { if ( ! (*iter)->isWidget() ) { @@ -1908,8 +1887,8 @@ bool FWidget::focusNextChild() { ++next_element; - if ( next_element == children.end() ) - next_element = children.begin(); + if ( next_element == parent->end() ) + next_element = parent->begin(); if ( ! (*next_element)->isWidget() ) continue; @@ -1948,7 +1927,7 @@ bool FWidget::focusNextChild() if ( in.isAccepted() ) { - this->redraw(); + redraw(); next->redraw(); updateTerminal(); flush_out(); @@ -1975,12 +1954,9 @@ bool FWidget::focusPrevChild() if ( parent->hasChildren() && parent->numOfFocusableChildren() > 1 ) { - FObjectList children; - FObjectIterator iter, begin; - - children = parent->getChildren(); - iter = children.end(); - begin = children.begin(); + FObjectIterator iter, first; + iter = parent->end(); + first = parent->begin(); do { @@ -2005,8 +1981,8 @@ bool FWidget::focusPrevChild() continue; } - if ( prev_element == children.begin() ) - prev_element = children.end(); + if ( prev_element == parent->begin() ) + prev_element = parent->end(); --prev_element; prev = static_cast(*prev_element); @@ -2043,7 +2019,7 @@ bool FWidget::focusPrevChild() if ( in.isAccepted() ) { - this->redraw(); + redraw(); prev->redraw(); updateTerminal(); flush_out(); @@ -2053,7 +2029,7 @@ bool FWidget::focusPrevChild() break; } } - while ( iter != begin ); + while ( iter != first ); } } diff --git a/test/treeview.cpp b/test/treeview.cpp index 03ae2d84..a023f22f 100644 --- a/test/treeview.cpp +++ b/test/treeview.cpp @@ -80,9 +80,11 @@ Treeview::Treeview (FWidget* parent) listView->insert (line); } + + FObjectIterator iter_africa = listView->beginOfList(); std::string egypt[3] = { "Egypt", "94,666,000", "87" }; std::vector egypt_line (&egypt[0], &egypt[0] + 3); - FObjectIterator iter_africa = listView->insert (egypt_line); + //FObjectIterator iter_africa = listView->insert (egypt_line); listView->insert (egypt_line, iter_africa); diff --git a/test/ui.cpp b/test/ui.cpp index 65ad0627..d3333212 100644 --- a/test/ui.cpp +++ b/test/ui.cpp @@ -53,7 +53,7 @@ ProgressDialog::ProgressDialog (FWidget* parent) , more() , quit() { - setGeometry (int((this->getParentWidget()->getWidth() - 40) / 2), 7, 40, 10); + setGeometry (int((getParentWidget()->getWidth() - 40) / 2), 7, 40, 10); setText("Progress bar"); //setModal(); @@ -823,9 +823,9 @@ void MyDialog::cb_updateNumber (FWidget* widget, data_ptr data) FListBox* list = static_cast(widget); FLabel* num = static_cast(data); int select_num = 0; - uInt end = list->getCount(); + uInt count = list->getCount(); - for (uInt n = 1; n <= end; n++) + for (uInt n = 1; n <= count; n++) if ( list->isSelected(int(n)) ) select_num++; diff --git a/test/windows.cpp b/test/windows.cpp index 45a61c89..d31755f1 100644 --- a/test/windows.cpp +++ b/test/windows.cpp @@ -356,7 +356,7 @@ void Window::activateWindow (FDialog* win) void Window::adjustSize() { int w, h, X, Y, dx, dy; - std::vector::const_iterator iter, begin; + std::vector::const_iterator iter, first; w = getRootWidget()->getWidth(); h = getRootWidget()->getHeight(); X = int(1 + (w - 40) / 2); @@ -368,14 +368,14 @@ void Window::adjustSize() Y = 2; setPos (X, Y); - iter = begin = windows.begin(); + iter = first = windows.begin(); while ( iter != windows.end() ) { if ( (*iter)->is_open ) { int x, y, n; - n = int(std::distance(begin, iter)); + n = int(std::distance(first, iter)); x = dx + 5 + (n % 3) * 25 + int(n / 3) * 3; y = dy + 11 + int(n / 3) * 3; (*iter)->dgl->setPos (x, y); @@ -408,8 +408,8 @@ void Window::onClose (FCloseEvent* ev) void Window::cb_createWindows (FWidget*, data_ptr) { int w, h, dx, dy; - std::vector::const_iterator iter, begin; - iter = begin = windows.begin(); + std::vector::const_iterator iter, first; + iter = first = windows.begin(); w = getRootWidget()->getWidth(); h = getRootWidget()->getHeight(); dx = (w > 80) ? (w - 80) / 2 : 0; @@ -425,7 +425,7 @@ void Window::cb_createWindows (FWidget*, data_ptr) win_dat->dgl = win; win_dat->is_open = true; win->setText(*(win_dat)->title); - n = int(std::distance(begin, iter)); + n = int(std::distance(first, iter)); x = dx + 5 + (n % 3) * 25 + int(n / 3) * 3; y = dy + 11 + int(n / 3) * 3; win->setGeometry (x, y, 20, 8); @@ -453,9 +453,9 @@ void Window::cb_closeWindows (FWidget*, data_ptr) if ( ! dialog_list || dialog_list->empty() ) return; - widgetList::const_iterator iter, begin; + widgetList::const_iterator iter, first; iter = dialog_list->end(); - begin = dialog_list->begin(); + first = dialog_list->begin(); activateWindow(this); do @@ -465,7 +465,7 @@ void Window::cb_closeWindows (FWidget*, data_ptr) if ( (*iter) != this ) (*iter)->close(); } - while ( iter != begin ); + while ( iter != first ); } //----------------------------------------------------------------------