Skip to content

Commit

Permalink
Fix infinite loop problem in Fl_Text_Editor - was resizing before we
Browse files Browse the repository at this point in the history
updated the number of lines in the buffer.

Carl, please make sure this fix gets added to 2.0 CVS, if necessary.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@1824 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
  • Loading branch information
michaelrsweet committed Dec 8, 2001
1 parent 64f2cc0 commit ef96c53
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 626 deletions.
6 changes: 5 additions & 1 deletion CHANGES
@@ -1,8 +1,12 @@
CHANGES IN FLTK 1.1.0b7

- More documentation updates...
- Fl_Text_Display would lockup when all text was
deleted; for example, when running the editor
demo, you couldn't load a second file.
- Added Fl::lock() and friends from FLTK 2.0 to
support multi-threaded applications.
support multi-threaded applications; see the
"threads" demo for an example of this.
- Fl_Check_Button and Fl_Round_Button now use the
FL_NO_BOX box type to show the background of the
parent widget.
Expand Down
150 changes: 0 additions & 150 deletions fluid/makedepend
@@ -1,150 +0,0 @@
# DO NOT DELETE

Fl_Function_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Function_Type.o: Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H
Fl_Function_Type.o: ../FL/Fl_Menu_Item.H Fluid_Image.h ../FL/Fl_Tabs.H
Fl_Function_Type.o: ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Group.H
Fl_Function_Type.o: ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H
Fl_Function_Type.o: ../FL/Fl_Menu_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Bar.H
Fl_Function_Type.o: ../FL/fl_show_input.H ../FL/fl_ask.H function_panel.h
Fl_Function_Type.o: ../FL/Fl_Window.H ../FL/Fl_Light_Button.H
Fl_Function_Type.o: ../FL/Fl_Button.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
Fl_Function_Type.o: ../FL/Fl_Return_Button.H ../FL/Fl_Button.H ../FL/Fl_Box.H
Fl_Function_Type.o: ../FL/fl_ask.H
Fl_Menu_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Menu_Type.o: Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H
Fl_Menu_Type.o: ../FL/Fl_Menu_Item.H Fluid_Image.h ../FL/Fl_Tabs.H
Fl_Menu_Type.o: ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Group.H
Fl_Menu_Type.o: ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H
Fl_Menu_Type.o: ../FL/Fl_Menu_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Bar.H
Fl_Menu_Type.o: alignment_panel.h ../FL/Fl_Window.H ../FL/Fl_Box.H
Fl_Menu_Type.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Button.H
Fl_Menu_Type.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/fl_message.H
Fl_Menu_Type.o: ../FL/fl_ask.H ../FL/Fl_Output.H Shortcut_Button.h
Fl_Menu_Type.o: ../FL/fl_draw.H
Fl_Group_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Group_Type.o: ../FL/Fl_Group.H ../FL/fl_message.H ../FL/fl_ask.H
Fl_Group_Type.o: Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H
Fl_Group_Type.o: ../FL/Fl_Menu_Item.H Fluid_Image.h ../FL/Fl_Tabs.H
Fl_Group_Type.o: ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Wizard.H
Fl_Group_Type.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H
Fl_Group_Type.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_Bar.H ../FL/Fl_Scroll.H
Fl_Group_Type.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
Fl_Widget_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Widget_Type.o: ../FL/Fl_Group.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
Fl_Widget_Type.o: Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H
Fl_Widget_Type.o: ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H Fluid_Image.h
Fl_Widget_Type.o: ../FL/Fl_Tabs.H ../FL/Fl_Group.H ../FL/Fl_Pack.H
Fl_Widget_Type.o: ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H
Fl_Widget_Type.o: ../FL/Fl_Menu_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Bar.H
Fl_Widget_Type.o: alignment_panel.h ../FL/Fl_Window.H ../FL/Fl_Box.H
Fl_Widget_Type.o: ../FL/Fl_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
Fl_Widget_Type.o: ../FL/fl_message.H ../FL/fl_ask.H ../FL/Fl_Slider.H
Fl_Widget_Type.o: ../FL/Fl_Valuator.H widget_panel.h ../FL/Fl_Value_Input.H
Fl_Widget_Type.o: ../FL/Fl_Input.H Shortcut_Button.h ../FL/Fl_Return_Button.H
Fl_Widget_Type.o: ../FL/fl_show_colormap.H
Fl_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Type.o: ../FL/Fl_Browser_.H ../FL/Fl_Group.H ../FL/Fl_Scrollbar.H
Fl_Type.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H Fl_Type.h
Fl_Type.o: ../FL/Fl_Widget.H ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H
Fl_Type.o: Fluid_Image.h ../FL/Fl_Tabs.H ../FL/Fl_Pack.H ../FL/Fl_Group.H
Fl_Type.o: ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H
Fl_Type.o: ../FL/Fl_Menu_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Bar.H
Fl_Window_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Window_Type.o: ../FL/Fl_Overlay_Window.H ../FL/Fl_Double_Window.H
Fl_Window_Type.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/fl_message.H
Fl_Window_Type.o: ../FL/fl_ask.H ../FL/fl_draw.H ../FL/Fl_Menu_Item.H
Fl_Window_Type.o: ../FL/Fl_Widget.H Fl_Widget_Type.h Fl_Type.h
Fl_Window_Type.o: ../FL/Fl_Widget.H ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H
Fl_Window_Type.o: Fluid_Image.h ../FL/Fl_Tabs.H ../FL/Fl_Pack.H
Fl_Window_Type.o: ../FL/Fl_Group.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H
Fl_Window_Type.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H
Fl_Window_Type.o: ../FL/Fl_Menu_Bar.H alignment_panel.h ../FL/Fl_Window.H
Fl_Window_Type.o: ../FL/Fl_Box.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
Fl_Window_Type.o: ../FL/Fl_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
Fl_Window_Type.o: widget_panel.h ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H
Fl_Window_Type.o: ../FL/Fl_Input.H Shortcut_Button.h ../FL/Fl_Return_Button.H
Fluid_Image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fluid_Image.o: ../FL/Fl_Widget.H Fl_Type.h ../FL/Fl_Menu.H
Fluid_Image.o: ../FL/Fl_Menu_Item.H Fluid_Image.h ../FL/Fl_Tabs.H
Fluid_Image.o: ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Group.H
Fluid_Image.o: ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H
Fluid_Image.o: ../FL/Fl_Menu_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Bar.H
Fluid_Image.o: ../FL/filename.H ../FL/Fl_Pixmap.H ../FL/Fl_Image.H ../FL/x.H
Fluid_Image.o: ../FL/Fl_Window.H
code.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H Fl_Type.h
code.o: ../FL/Fl_Widget.H ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H Fluid_Image.h
code.o: ../FL/Fl_Tabs.H ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Group.H
code.o: ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H
code.o: ../FL/Fl_Menu_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Bar.H
code.o: alignment_panel.h ../FL/Fl_Window.H ../FL/Fl_Box.H ../FL/Fl_Input.H
code.o: ../FL/Fl_Input_.H ../FL/Fl_Button.H ../FL/Fl_Light_Button.H
code.o: ../FL/Fl_Button.H ../FL/filename.H
factory.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Group.H
factory.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../config.h
factory.o: Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H
factory.o: ../FL/Fl_Menu_Item.H Fluid_Image.h ../FL/Fl_Tabs.H
factory.o: ../FL/Fl_Group.H ../FL/Fl_Pack.H ../FL/Fl_Wizard.H
factory.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H
factory.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_Bar.H ../FL/Fl_Box.H
factory.o: ../FL/Fl_Button.H ../FL/Fl_Return_Button.H ../FL/Fl_Button.H
factory.o: ../FL/Fl_Repeat_Button.H ../FL/Fl.H ../FL/Fl_Light_Button.H
factory.o: ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H
factory.o: ../FL/Fl_Round_Button.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H
factory.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
factory.o: ../FL/Fl_Check_Browser.H ../FL/Fl_File_Browser.H
factory.o: ../FL/Fl_Browser.H ../FL/Fl_File_Icon.H ../FL/Fl_Counter.H
factory.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Text_Display.H
factory.o: ../FL/fl_draw.H ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Editor.H
factory.o: ../FL/Fl_Text_Display.H ../FL/Fl_Clock.H ../FL/Fl_Help_View.H
factory.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H ../FL/x.H
factory.o: ../FL/Fl_Window.H ../FL/Fl_Progress.H ../FL/Fl_Adjuster.H
factory.o: ../FL/Fl_Dial.H ../FL/Fl_Roller.H ../FL/Fl_Scrollbar.H
factory.o: ../FL/Fl_Output.H ../FL/Fl_Value_Input.H ../FL/Fl_Input.H
factory.o: ../FL/Fl_Value_Output.H ../FL/Fl_Value_Slider.H
file.o: alignment_panel.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
file.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Box.H ../FL/Fl_Input.H
file.o: ../FL/Fl_Input_.H ../FL/Fl_Button.H ../FL/Fl_Light_Button.H
file.o: ../FL/Fl_Button.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H
file.o: ../FL/fl_message.H ../FL/fl_ask.H Fl_Widget_Type.h Fl_Type.h
file.o: ../FL/Fl_Widget.H ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H Fluid_Image.h
file.o: ../FL/Fl_Tabs.H ../FL/Fl_Pack.H ../FL/Fl_Group.H ../FL/Fl_Wizard.H
file.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_Bar.H
fluid.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
fluid.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
fluid.o: ../FL/Fl_Box.H ../FL/Fl_Button.H ../FL/Fl_File_Icon.H ../FL/Fl.H
fluid.o: ../FL/Fl_Help_Dialog.H ../FL/Fl_Help_View.H ../FL/Fl_Scrollbar.H
fluid.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H
fluid.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H ../FL/x.H
fluid.o: ../FL/Fl_Hold_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Menu_Bar.H
fluid.o: ../FL/Fl_Menu_.H ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_ask.H
fluid.o: ../FL/fl_draw.H ../FL/Fl_File_Chooser.H ../FL/Fl_Window.H
fluid.o: ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H
fluid.o: ../FL/Fl_Return_Button.H ../FL/Fl_Button.H ../FL/Fl_Choice.H
fluid.o: ../FL/fl_message.H ../FL/fl_ask.H ../FL/filename.H ../config.h
fluid.o: about_panel.h ../FL/Fl_Group.H Fl_Type.h ../FL/Fl_Widget.H
fluid.o: ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H Fluid_Image.h ../FL/Fl_Tabs.H
fluid.o: ../FL/Fl_Pack.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H
fluid.o: ../FL/Fl_Menu_Button.H
about_panel.o: about_panel.h ../FL/Fl.H ../FL/Enumerations.H
about_panel.o: ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H
about_panel.o: ../FL/Fl_Group.H ../FL/Fl_Box.H ../FL/Fl_Button.H
about_panel.o: ../FL/Fl_Return_Button.H ../FL/Fl_Button.H
widget_panel.o: widget_panel.h ../FL/Fl.H ../FL/Enumerations.H
widget_panel.o: ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H
widget_panel.o: ../FL/Fl_Tabs.H ../FL/Fl_Group.H ../FL/Fl_Input.H
widget_panel.o: ../FL/Fl_Input_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H
widget_panel.o: ../FL/Fl_Button.H ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H
widget_panel.o: ../FL/Fl_Input.H ../FL/Fl_Box.H Shortcut_Button.h
widget_panel.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
widget_panel.o: ../FL/Fl_Return_Button.H
alignment_panel.o: alignment_panel.h ../FL/Fl.H ../FL/Enumerations.H
alignment_panel.o: ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H
alignment_panel.o: ../FL/Fl_Box.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
alignment_panel.o: ../FL/Fl_Button.H ../FL/Fl_Light_Button.H
alignment_panel.o: ../FL/Fl_Button.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H
function_panel.o: function_panel.h ../FL/Fl.H ../FL/Enumerations.H
function_panel.o: ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H
function_panel.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_Input.H
function_panel.o: ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H
function_panel.o: ../FL/Fl_Button.H ../FL/Fl_Box.H
11 changes: 6 additions & 5 deletions src/Fl_Text_Display.cxx
@@ -1,5 +1,5 @@
//
// "$Id: Fl_Text_Display.cxx,v 1.12.2.6 2001/12/07 16:27:54 easysw Exp $"
// "$Id: Fl_Text_Display.cxx,v 1.12.2.7 2001/12/08 20:46:33 easysw Exp $"
//
// Copyright Mark Edel. Permission to distribute under the LGPL for
// the FLTK library granted by Mark Edel.
Expand Down Expand Up @@ -760,9 +760,6 @@ void Fl_Text_Display::buffer_modified_cb( int pos, int nInserted, int nDeleted,
Fl_Text_Buffer *buf = textD->mBuffer;
int scrolled, origCursorPos = textD->mCursorPos;

// refigure scrollbars & stuff
textD->resize(textD->x(), textD->y(), textD->w(), textD->h());

/* buffer modification cancels vertical cursor motion column */
if ( nInserted != 0 || nDeleted != 0 )
textD->mCursorPreferredCol = -1;
Expand Down Expand Up @@ -793,6 +790,9 @@ void Fl_Text_Display::buffer_modified_cb( int pos, int nInserted, int nDeleted,
textD->mCursorPos += nInserted - nDeleted;
}

// refigure scrollbars & stuff
textD->resize(textD->x(), textD->y(), textD->w(), textD->h());

// don't need to do anything else if not visible?
if (!textD->visible_r()) return;

Expand Down Expand Up @@ -1649,6 +1649,7 @@ int Fl_Text_Display::measure_vline( int visLineNum ) {
int charCount = 0, lineStartPos = mLineStarts[ visLineNum ];
char expandedChar[ FL_TEXT_MAX_EXP_CHAR_LEN ];

if (lineStartPos < 0) return 0;
if ( mStyleBuffer == NULL ) {
for ( i = 0; i < lineLen; i++ ) {
len = mBuffer->expand_character( lineStartPos + i,
Expand Down Expand Up @@ -1955,5 +1956,5 @@ int Fl_Text_Display::handle(int event) {


//
// End of "$Id: Fl_Text_Display.cxx,v 1.12.2.6 2001/12/07 16:27:54 easysw Exp $".
// End of "$Id: Fl_Text_Display.cxx,v 1.12.2.7 2001/12/08 20:46:33 easysw Exp $".
//

0 comments on commit ef96c53

Please sign in to comment.