diff options
author | David Cole <david.cole@kitware.com> | 2011-01-19 16:11:19 (GMT) |
---|---|---|
committer | David Cole <david.cole@kitware.com> | 2011-01-19 16:24:36 (GMT) |
commit | 693c9a623649ef63aa89f81d359ba875667603d8 (patch) | |
tree | 44585f98d51d853527f89eb7d54ce10a9d6bfd41 /Source/CursesDialog | |
parent | 57c542a80f424615de22917c5c076a77b957be0e (diff) | |
download | CMake-693c9a623649ef63aa89f81d359ba875667603d8.zip CMake-693c9a623649ef63aa89f81d359ba875667603d8.tar.gz CMake-693c9a623649ef63aa89f81d359ba875667603d8.tar.bz2 |
Avoid exceptions when ccmake terminal window is too small (#11668)
Thanks to Nicolas Despres for the patch.
Diffstat (limited to 'Source/CursesDialog')
-rw-r--r-- | Source/CursesDialog/cmCursesMainForm.cxx | 45 |
1 files changed, 24 insertions, 21 deletions
diff --git a/Source/CursesDialog/cmCursesMainForm.cxx b/Source/CursesDialog/cmCursesMainForm.cxx index 7f3e360..c93f353 100644 --- a/Source/CursesDialog/cmCursesMainForm.cxx +++ b/Source/CursesDialog/cmCursesMainForm.cxx @@ -334,32 +334,35 @@ void cmCursesMainForm::Render(int left, int top, int width, int height) } // Re-adjust the fields according to their place - bool isNewPage; - int i=0; this->NumberOfPages = 1; - std::vector<cmCursesCacheEntryComposite*>::iterator it; - for (it = this->Entries->begin(); it != this->Entries->end(); ++it) + if (height > 0) { - cmCacheManager::CacheIterator mit = - this->CMakeInstance->GetCacheManager()->GetCacheIterator((*it)->GetValue()); - if (mit.IsAtEnd() || - (!this->AdvancedMode && mit.GetPropertyAsBool("ADVANCED"))) + bool isNewPage; + int i=0; + std::vector<cmCursesCacheEntryComposite*>::iterator it; + for (it = this->Entries->begin(); it != this->Entries->end(); ++it) { - continue; - } - int row = (i % height) + 1; - int page = (i / height) + 1; - isNewPage = ( page > 1 ) && ( row == 1 ); + cmCacheManager::CacheIterator mit = + this->CMakeInstance->GetCacheManager()->GetCacheIterator((*it)->GetValue()); + if (mit.IsAtEnd() || + (!this->AdvancedMode && mit.GetPropertyAsBool("ADVANCED"))) + { + continue; + } + int row = (i % height) + 1; + int page = (i / height) + 1; + isNewPage = ( page > 1 ) && ( row == 1 ); - if (isNewPage) - { - this->NumberOfPages++; + if (isNewPage) + { + this->NumberOfPages++; + } + (*it)->Label->Move(left, top+row-1, isNewPage); + (*it)->IsNewLabel->Move(left+32, top+row-1, false); + (*it)->Entry->Move(left+33, top+row-1, false); + (*it)->Entry->SetPage(this->NumberOfPages); + i++; } - (*it)->Label->Move(left, top+row-1, isNewPage); - (*it)->IsNewLabel->Move(left+32, top+row-1, false); - (*it)->Entry->Move(left+33, top+row-1, false); - (*it)->Entry->SetPage(this->NumberOfPages); - i++; } // Post the form |