Fl_Text_Display::wrap_mode() would crash if no buffer was

associated with the widget (STR #1069)



git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@4647 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Michael R Sweet 2005-11-09 21:34:04 +00:00
parent 0f41b3b071
commit 258c3e81a4
2 changed files with 22 additions and 11 deletions

View File

@ -3,6 +3,8 @@ CHANGES IN FLTK 1.1.7
- Documentation fixes (STR #571, STR #648, STR #692, STR
#730, STR #744, STR #745, STR #931, STR #942, STR #960,
STR #969)
- Fl_Text_Display::wrap_mode() would crash if no buffer
was associated with the widget (STR #1069)
- Updated the default label and text colors of all widgets
to use FL_FOREGROUND_COLOR instead of FL_BLACK (STR
#1052)

View File

@ -658,19 +658,28 @@ void Fl_Text_Display::wrap_mode(int wrap, int wrapMargin) {
mWrapMargin = wrapMargin;
mContinuousWrap = wrap;
/* wrapping can change change the total number of lines, re-count */
mNBufferLines = count_lines(0, buffer()->length(), true);
if (buffer()) {
/* wrapping can change change the total number of lines, re-count */
mNBufferLines = count_lines(0, buffer()->length(), true);
/* changing wrap margins wrap or changing from wrapped mode to non-wrapped
can leave the character at the top no longer at a line start, and/or
change the line number */
mFirstChar = line_start(mFirstChar);
mTopLineNum = count_lines(0, mFirstChar, true) + 1;
reset_absolute_top_line_number();
/* changing wrap margins wrap or changing from wrapped mode to non-wrapped
can leave the character at the top no longer at a line start, and/or
change the line number */
mFirstChar = line_start(mFirstChar);
mTopLineNum = count_lines(0, mFirstChar, true) + 1;
/* update the line starts array */
calc_line_starts(0, mNVisibleLines);
calc_last_char();
reset_absolute_top_line_number();
/* update the line starts array */
calc_line_starts(0, mNVisibleLines);
calc_last_char();
} else {
// No buffer, so just clear the state info for later...
mNBufferLines = 0;
mFirstChar = 0;
mTopLineNum = 1;
mAbsTopLineNum = 0;
}
resize(x(), y(), w(), h());
}