Browse Source

ENH: fix it for working with an empty cache

Bill Hoffman 17 years ago
parent
commit
354abb72d9

+ 2 - 1
Source/CursesDialog/cmCursesCacheEntryComposite.cxx

@@ -30,7 +30,8 @@ cmCursesCacheEntryComposite::cmCursesCacheEntryComposite(const char* key,
 {
   this->Label = new cmCursesLabelWidget(this->LabelWidth, 1, 1, 1, key);
   this->IsNewLabel = new cmCursesLabelWidget(1, 1, 1, 1, " ");
-  this->Entry = 0;
+  this->Entry = 0; 
+  this->Entry = new cmCursesStringWidget(this->EntryWidth, 1, 1, 1);
 }
 
 cmCursesCacheEntryComposite::cmCursesCacheEntryComposite(

+ 14 - 3
Source/CursesDialog/cmCursesMainForm.cxx

@@ -218,7 +218,6 @@ void cmCursesMainForm::RePost()
     this->Form = 0;
     }
   delete[] this->Fields;
-
   if (this->AdvancedMode)
     {
     this->NumberOfVisibleEntries = this->Entries->size();
@@ -239,7 +238,11 @@ void cmCursesMainForm::RePost()
       this->NumberOfVisibleEntries++;
       }
     }
-
+  // there is always one even if it is the dummy one
+  if(this->NumberOfVisibleEntries == 0)
+    {
+    this->NumberOfVisibleEntries = 1;
+    }
   // Assign the fields: 3 for each entry: label, new entry marker
   // ('*' or ' ') and entry widget
   this->Fields = new FIELD*[3*this->NumberOfVisibleEntries+1];
@@ -265,7 +268,15 @@ void cmCursesMainForm::RePost()
     this->Fields[3*j+2]  = (*it)->Entry->Field;
     j++;
     }
-
+  // if no cache entries there should still be one dummy field
+  if(j == 0)
+    {
+    it = this->Entries->begin();
+    this->Fields[0]    = (*it)->Label->Field;
+    this->Fields[1]  = (*it)->IsNewLabel->Field;
+    this->Fields[2]  = (*it)->Entry->Field;
+    this->NumberOfVisibleEntries = 1;
+    }
   // Has to be null terminated.
   this->Fields[3*this->NumberOfVisibleEntries] = 0;
 }