int EBuffer::FoldOpen(int Line) { /*FOLD00*/ int f = FindFold(Line); int l; int level, toplevel; int top; if (f == -1) return 0; if (FF[f].open == 1) return 1; // already open if (Modify() == 0) return 0; if (BFI(this, BFI_Undo)) { if (PushULong(Line) == 0) return 0; if (PushUChar(ucFoldOpen) == 0) return 0; } FF[f].open = 1; top = FF[f].line; toplevel = FF[f].level; // printf("Fold starts with %d\n", FF[f].line); if (ShowRow(FF[f].line) == 0) return 0; while (f < FCount) { level = FF[f].level; if (FF[f].open == 1) { // fold is open if (f == FCount - 1) { for (l = FF[f].line; l < RCount; l++) if (l != top) if (ShowRow(l) == 0) return 0; } else { for (l = FF[f].line; l < FF[f + 1].line; l++) if (l != top) if (ShowRow(l) == 0) return 0; } f++; } else { // fold is closed // show head line if (ShowRow(FF[f].line) == 0) return 0; // skip closed folds while ((f < FCount) && (level < FF[f + 1].level)) f++; f++; } if ((f < FCount) && (FF[f].level <= toplevel)) break; } return 1; }
void FlightSetupPanel::ShowAltitude(fixed altitude) { if (fabs(altitude - last_altitude) >= fixed(1)) { last_altitude = altitude; LoadValue(Altitude, altitude, UnitGroup::ALTITUDE); } ShowRow(Altitude); }