diff --git a/CHANGES b/CHANGES index a40b3df71..852de7e6a 100644 --- a/CHANGES +++ b/CHANGES @@ -1,7 +1,12 @@ CHANGES IN FLTK 1.1.5rc2 - Documentation updates (STR #365, STR #399, STR #407, - STR #412, STR #414, STR #462) + STR #412, STR #414, STR #452, STR #462) + - All of the core widgets now consistently set changed() + before calling the callback function for a change in + value; this allows programs to check the changed() + state in a callback to see why they are being called + (STR #475) - Fl_File_Chooser did not handle some cases for filename completion (STR #376) - Fl_Help_View didn't properly compute the default diff --git a/FL/Fl_Widget.H b/FL/Fl_Widget.H index 91cd8168a..95b48165c 100644 --- a/FL/Fl_Widget.H +++ b/FL/Fl_Widget.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Widget.H,v 1.6.2.4.2.23 2004/04/11 04:38:54 easysw Exp $" +// "$Id: Fl_Widget.H,v 1.6.2.4.2.24 2004/07/27 16:02:18 easysw Exp $" // // Widget header file for the Fast Light Tool Kit (FLTK). // @@ -185,9 +185,9 @@ public: int visible_focus() { return flags_ & VISIBLE_FOCUS; } static void default_callback(Fl_Widget*, void*); - void do_callback() {callback_(this,user_data_);} - void do_callback(Fl_Widget* o,void* arg=0) {callback_(o,arg);} - void do_callback(Fl_Widget* o,long arg) {callback_(o,(void*)arg);} + void do_callback() {callback_(this,user_data_); if (callback_ != default_callback) clear_changed();} + void do_callback(Fl_Widget* o,void* arg=0) {callback_(o,arg); if (callback_ != default_callback) clear_changed();} + void do_callback(Fl_Widget* o,long arg) {callback_(o,(void*)arg); if (callback_ != default_callback) clear_changed();} int test_shortcut(); static int test_shortcut(const char*); int contains(const Fl_Widget*) const ; @@ -217,5 +217,5 @@ public: #endif // -// End of "$Id: Fl_Widget.H,v 1.6.2.4.2.23 2004/04/11 04:38:54 easysw Exp $". +// End of "$Id: Fl_Widget.H,v 1.6.2.4.2.24 2004/07/27 16:02:18 easysw Exp $". // diff --git a/documentation/Fl_Browser_.html b/documentation/Fl_Browser_.html index ccfbe8984..d1a7d2a92 100644 --- a/documentation/Fl_Browser_.html +++ b/documentation/Fl_Browser_.html @@ -20,7 +20,7 @@

Description

This is the base class for browsers. To be useful it must be -subclassed and several virtual functions defined. The Forms-compatable +subclassed and several virtual functions defined. The Forms-compatible browser and the file chooser's browser are subclassed off of this.

This has been designed so that the subclass has complete control over the storage of the data, although because next() and diff --git a/documentation/Fl_Menu_.html b/documentation/Fl_Menu_.html index 49e03a452..70d9a83a6 100644 --- a/documentation/Fl_Menu_.html +++ b/documentation/Fl_Menu_.html @@ -127,16 +127,28 @@ char* shortcut, Fl_Callback*, void *user_data=0, int flags=0)
int Fl_Menu_::add(const char* label, int shortcut, Fl_Callback*, void *user_data=0, int flags=0) -Adds a new menu item, with a title string, shortcut -string, callback, argument to the callback, and flags. If -the menu array was directly set with menu(x) then copy() is done to -make a private array. +

Adds a new menu item, with a title string, +shortcut string, callback, argument to the +callback, and flags. If the menu array was directly set with +menu(x) then copy() is done to make a private +array. -

Text is a string of the form "foo/bar/baz", this example -will result in a submenu called "foo" and one in that called -"bar" and and entry called "baz". The text is -copied to new memory and can be freed. The other arguments (including -the shortcut) are copied into the menu item unchanged.

+

The characters "&", "/", "\", and "_" are treated as +special characters in the label string. The "&" character +specifies that the following character is an accelerator and +will be underlined. The "\" character is used to escape the next +character in the string. Labels starting with the "_" character +cause a divider to be placed before that menu item.

+ +

A label of the form "foo/bar/baz" will create a +submenus called "foo" and "bar" with an +entry called "baz". The "/" character is ignored if it +appears as the first character of the label string, e.g. +"/foo/bar/baz".

+ +

The label string is copied to new memory and can be freed. +The other arguments (including the shortcut) are copied into the +menu item unchanged.

If an item exists already with that name then it is replaced with this new one. Otherwise this new one is added to the end of the @@ -166,10 +178,12 @@ Text shortcuts are converted to integer shortcut by calling

int Fl_Menu_::add(const char *)

-

The passed string is split at any '|' characters and then -add(s,0,0,0,0) is done with each section. This is often useful -if you are just using the value, and is compatable with Forms -and other GL programs.

+

The passed string is split at any '|' characters and then +add(s,0,0,0,0) is done with each section. This is +often useful if you are just using the value, and is compatible +with Forms and other GL programs. The section strings use the +same special characters as described for the long version of add()

void Fl_Menu_::replace(int n, const char *)

diff --git a/documentation/forms.html b/documentation/forms.html index ae885b9dd..53ead442b 100644 --- a/documentation/forms.html +++ b/documentation/forms.html @@ -20,7 +20,7 @@ functions. Most of the XForms demo programs work without changes.

You will also have to compile your Forms or XForms program using a C++ compiler. The FLTK library does not provide C bindings or header files.

-

Although FLTK was designed to be compatable with the GL Forms +

Although FLTK was designed to be compatible with the GL Forms library (version 0.3 or so), XForms has bloated severely and it's interface is X-specific. Therefore, XForms compatibility is no longer a goal of FLTK. Compatibility was limited to things that were free, or diff --git a/src/Fl_Browser_.cxx b/src/Fl_Browser_.cxx index f0e739296..dd0124950 100644 --- a/src/Fl_Browser_.cxx +++ b/src/Fl_Browser_.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Browser_.cxx,v 1.10.2.16.2.20 2004/04/11 04:38:57 easysw Exp $" +// "$Id: Fl_Browser_.cxx,v 1.10.2.16.2.21 2004/07/27 16:02:19 easysw Exp $" // // Base Browser widget class for the Fast Light Tool Kit (FLTK). // @@ -510,7 +510,10 @@ int Fl_Browser_::select(void* l, int i, int docallbacks) { display(l); } } - if (docallbacks) do_callback(); + if (docallbacks) { + set_changed(); + do_callback(); + } return 1; } @@ -687,8 +690,8 @@ int Fl_Browser_::handle(int event) { void* t = selection_; deselect(); selection_ = t; } if (change) { + set_changed(); if (when() & FL_WHEN_RELEASE) do_callback(); - else if (!(when()&FL_WHEN_CHANGED)) set_changed(); } else { if (when() & FL_WHEN_NOT_CHANGED) do_callback(); } @@ -758,5 +761,5 @@ void Fl_Browser_::item_select(void*, int) {} int Fl_Browser_::item_selected(void* l) const {return l==selection_;} // -// End of "$Id: Fl_Browser_.cxx,v 1.10.2.16.2.20 2004/04/11 04:38:57 easysw Exp $". +// End of "$Id: Fl_Browser_.cxx,v 1.10.2.16.2.21 2004/07/27 16:02:19 easysw Exp $". // diff --git a/src/Fl_Button.cxx b/src/Fl_Button.cxx index 9309173db..b4b05c147 100644 --- a/src/Fl_Button.cxx +++ b/src/Fl_Button.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Button.cxx,v 1.4.2.6.2.22 2004/04/11 04:38:57 easysw Exp $" +// "$Id: Fl_Button.cxx,v 1.4.2.6.2.23 2004/07/27 16:02:20 easysw Exp $" // // Button widget for the Fast Light Tool Kit (FLTK). // @@ -81,6 +81,7 @@ int Fl_Button::handle(int event) { newval = oldval; if (newval != value_) { value_ = newval; + set_changed(); redraw(); if (when() & FL_WHEN_CHANGED) do_callback(); } @@ -90,15 +91,14 @@ int Fl_Button::handle(int event) { if (when() & FL_WHEN_NOT_CHANGED) do_callback(); return 1; } - if (type() == FL_RADIO_BUTTON) - setonly(); - else if (type() == FL_TOGGLE_BUTTON) - oldval = value_; + set_changed(); + if (type() == FL_RADIO_BUTTON) setonly(); + else if (type() == FL_TOGGLE_BUTTON) oldval = value_; else { value(oldval); if (when() & FL_WHEN_CHANGED) do_callback(); } - if (when() & FL_WHEN_RELEASE) do_callback(); else set_changed(); + if (when() & FL_WHEN_RELEASE) do_callback(); return 1; case FL_SHORTCUT: if (!(shortcut() ? @@ -108,12 +108,13 @@ int Fl_Button::handle(int event) { if (type() == FL_RADIO_BUTTON && !value_) { setonly(); + set_changed(); if (when() & FL_WHEN_CHANGED) do_callback(); } else if (type() == FL_TOGGLE_BUTTON) { value(!value()); + set_changed(); if (when() & FL_WHEN_CHANGED) do_callback(); - } - if (when() & FL_WHEN_RELEASE) do_callback(); else set_changed(); + } else if (when() & FL_WHEN_RELEASE) do_callback(); return 1; case FL_FOCUS : case FL_UNFOCUS : @@ -131,6 +132,7 @@ int Fl_Button::handle(int event) { case FL_KEYBOARD : if (Fl::focus() == this && Fl::event_key() == ' ' && !(Fl::event_state() & (FL_SHIFT | FL_CTRL | FL_ALT | FL_META))) { + set_changed(); if (type() == FL_RADIO_BUTTON && !value_) { setonly(); if (when() & FL_WHEN_CHANGED) do_callback(); @@ -138,7 +140,7 @@ int Fl_Button::handle(int event) { value(!value()); if (when() & FL_WHEN_CHANGED) do_callback(); } - if (when() & FL_WHEN_RELEASE) do_callback(); else set_changed(); + if (when() & FL_WHEN_RELEASE) do_callback(); return 1; } default: @@ -156,5 +158,5 @@ Fl_Button::Fl_Button(int X, int Y, int W, int H, const char *l) } // -// End of "$Id: Fl_Button.cxx,v 1.4.2.6.2.22 2004/04/11 04:38:57 easysw Exp $". +// End of "$Id: Fl_Button.cxx,v 1.4.2.6.2.23 2004/07/27 16:02:20 easysw Exp $". // diff --git a/src/Fl_Color_Chooser.cxx b/src/Fl_Color_Chooser.cxx index 868454059..b54d3950a 100644 --- a/src/Fl_Color_Chooser.cxx +++ b/src/Fl_Color_Chooser.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Color_Chooser.cxx,v 1.7.2.4.2.7 2004/04/11 04:38:57 easysw Exp $" +// "$Id: Fl_Color_Chooser.cxx,v 1.7.2.4.2.8 2004/07/27 16:02:20 easysw Exp $" // // Color chooser for the Fast Light Tool Kit (FLTK). // @@ -125,6 +125,7 @@ int Fl_Color_Chooser::rgb(double R, double G, double B) { double pv = value_; rgb2hsv(R,G,B,hue_,saturation_,value_); set_valuators(); + set_changed(); if (value_ != pv) { #ifdef UPDATE_HUE_BOX huebox.damage(FL_DAMAGE_SCROLL); @@ -157,6 +158,7 @@ int Fl_Color_Chooser::hsv(double H, double S, double V) { } hsv2rgb(H,S,V,r_,g_,b_); set_valuators(); + set_changed(); return 1; } @@ -521,5 +523,5 @@ int fl_color_chooser(const char* name, uchar& r, uchar& g, uchar& b) { } // -// End of "$Id: Fl_Color_Chooser.cxx,v 1.7.2.4.2.7 2004/04/11 04:38:57 easysw Exp $". +// End of "$Id: Fl_Color_Chooser.cxx,v 1.7.2.4.2.8 2004/07/27 16:02:20 easysw Exp $". // diff --git a/src/Fl_File_Input.cxx b/src/Fl_File_Input.cxx index e4dbe4308..11927566d 100644 --- a/src/Fl_File_Input.cxx +++ b/src/Fl_File_Input.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_File_Input.cxx,v 1.1.2.11 2004/04/11 04:38:57 easysw Exp $" +// "$Id: Fl_File_Input.cxx,v 1.1.2.12 2004/07/27 16:02:20 easysw Exp $" // // File_Input header file for the Fast Light Tool Kit (FLTK). // @@ -262,6 +262,7 @@ Fl_File_Input::handle_button(int event) // I - Event value(newvalue, start - newvalue); // Then do the callbacks, if necessary... + set_changed(); if (when() & FL_WHEN_CHANGED) do_callback(); } @@ -270,5 +271,5 @@ Fl_File_Input::handle_button(int event) // I - Event // -// End of "$Id: Fl_File_Input.cxx,v 1.1.2.11 2004/04/11 04:38:57 easysw Exp $". +// End of "$Id: Fl_File_Input.cxx,v 1.1.2.12 2004/07/27 16:02:20 easysw Exp $". // diff --git a/src/Fl_Help_View.cxx b/src/Fl_Help_View.cxx index b8a0da47f..588237714 100644 --- a/src/Fl_Help_View.cxx +++ b/src/Fl_Help_View.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Help_View.cxx,v 1.1.2.52 2004/07/26 20:52:51 easysw Exp $" +// "$Id: Fl_Help_View.cxx,v 1.1.2.53 2004/07/27 16:02:20 easysw Exp $" // // Fl_Help_View widget routines. // @@ -1372,6 +1372,7 @@ Fl_Help_View::format() needspace = 0; line = 0; newalign = get_align(attrs, tolower(buf[1]) == 'h' ? CENTER : LEFT); + talign = newalign; cells[column] = block - blocks_; @@ -1574,15 +1575,15 @@ Fl_Help_View::format() // Reset scrolling if it needs to be... if (scrollbar_.visible()) { - int hh = h() - 8; - if (hscrollbar_.visible()) hh -= 16; - if ((topline_ + hh) > size_) topline(size_ - hh); + int temph = h() - 8; + if (hscrollbar_.visible()) temph -= 16; + if ((topline_ + temph) > size_) topline(size_ - temph); else topline(topline_); } else topline(0); if (hscrollbar_.visible()) { - int ww = w() - 24; - if ((leftline_ + ww) > hsize_) leftline(hsize_ - ww); + int tempw = w() - 24; + if ((leftline_ + tempw) > hsize_) leftline(hsize_ - tempw); else leftline(leftline_); } else leftline(0); } @@ -2606,8 +2607,8 @@ Fl_Help_View::topline(int t) // I - Top line number scrollbar_.value(topline_, h() - 24, 0, size_); + set_changed(); do_callback(); - clear_changed(); redraw(); } @@ -2810,5 +2811,5 @@ hscrollbar_callback(Fl_Widget *s, void *) // -// End of "$Id: Fl_Help_View.cxx,v 1.1.2.52 2004/07/26 20:52:51 easysw Exp $". +// End of "$Id: Fl_Help_View.cxx,v 1.1.2.53 2004/07/27 16:02:20 easysw Exp $". // diff --git a/src/Fl_Input_.cxx b/src/Fl_Input_.cxx index 03e3045c1..f9378f6e9 100644 --- a/src/Fl_Input_.cxx +++ b/src/Fl_Input_.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Input_.cxx,v 1.21.2.11.2.29 2004/04/11 04:38:57 easysw Exp $" +// "$Id: Fl_Input_.cxx,v 1.21.2.11.2.30 2004/07/27 16:02:21 easysw Exp $" // // Common input widget routines for the Fast Light Tool Kit (FLTK). // @@ -599,7 +599,8 @@ int Fl_Input_::replace(int b, int e, const char* text, int ilen) { mark_ = position_ = undoat; - if (when()&FL_WHEN_CHANGED) do_callback(); else set_changed(); + set_changed(); + if (when()&FL_WHEN_CHANGED) do_callback(); return 1; } @@ -636,7 +637,8 @@ int Fl_Input_::undo() { position_ = b; minimal_update(b1); - if (when()&FL_WHEN_CHANGED) do_callback(); else set_changed(); + set_changed(); + if (when()&FL_WHEN_CHANGED) do_callback(); return 1; } @@ -649,7 +651,8 @@ int Fl_Input_::copy_cuts() { void Fl_Input_::maybe_do_callback() { if (changed() || (when()&FL_WHEN_NOT_CHANGED)) { - clear_changed(); do_callback();} + do_callback(); + } } int Fl_Input_::handletext(int event, int X, int Y, int W, int H) { @@ -852,5 +855,5 @@ Fl_Input_::~Fl_Input_() { } // -// End of "$Id: Fl_Input_.cxx,v 1.21.2.11.2.29 2004/04/11 04:38:57 easysw Exp $". +// End of "$Id: Fl_Input_.cxx,v 1.21.2.11.2.30 2004/07/27 16:02:21 easysw Exp $". // diff --git a/src/Fl_Menu_.cxx b/src/Fl_Menu_.cxx index e84b0b52c..748e6bf16 100644 --- a/src/Fl_Menu_.cxx +++ b/src/Fl_Menu_.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Menu_.cxx,v 1.7.2.8.2.9 2004/04/11 04:38:57 easysw Exp $" +// "$Id: Fl_Menu_.cxx,v 1.7.2.8.2.10 2004/07/27 16:02:21 easysw Exp $" // // Common menu code for the Fast Light Tool Kit (FLTK). // @@ -138,7 +138,6 @@ const Fl_Menu_Item* Fl_Menu_::picked(const Fl_Menu_Item* v) { value_ = v; if (when()&(FL_WHEN_CHANGED|FL_WHEN_RELEASE)) { if (changed() || when()&FL_WHEN_NOT_CHANGED) { - clear_changed(); if (value_ && value_->callback_) value_->do_callback((Fl_Widget*)this); else do_callback(); } @@ -225,5 +224,5 @@ void Fl_Menu_::clear() { } // -// End of "$Id: Fl_Menu_.cxx,v 1.7.2.8.2.9 2004/04/11 04:38:57 easysw Exp $". +// End of "$Id: Fl_Menu_.cxx,v 1.7.2.8.2.10 2004/07/27 16:02:21 easysw Exp $". // diff --git a/src/Fl_Positioner.cxx b/src/Fl_Positioner.cxx index 0540b644a..1c356ee2d 100644 --- a/src/Fl_Positioner.cxx +++ b/src/Fl_Positioner.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Positioner.cxx,v 1.4.2.3.2.4 2004/04/11 04:38:58 easysw Exp $" +// "$Id: Fl_Positioner.cxx,v 1.4.2.3.2.5 2004/07/27 16:02:21 easysw Exp $" // // Positioner widget for the Fast Light Tool Kit (FLTK). // @@ -89,9 +89,11 @@ int Fl_Positioner::handle(int event, int X, int Y, int W, int H) { if (yy > ymax) yy = ymax; if (value(xx, yy)) set_changed();} if (!(when() & FL_WHEN_CHANGED || - when() & FL_WHEN_RELEASE && event == FL_RELEASE)) return 1; + (when() & FL_WHEN_RELEASE && event == FL_RELEASE))) return 1; if (changed() || when()&FL_WHEN_NOT_CHANGED) { - clear_changed(); do_callback();} + if (event == FL_RELEASE) clear_changed(); + do_callback(); + } return 1; default: return 0; @@ -129,5 +131,5 @@ void Fl_Positioner::ybounds(double a, double b) { } // -// End of "$Id: Fl_Positioner.cxx,v 1.4.2.3.2.4 2004/04/11 04:38:58 easysw Exp $". +// End of "$Id: Fl_Positioner.cxx,v 1.4.2.3.2.5 2004/07/27 16:02:21 easysw Exp $". // diff --git a/src/Fl_Scrollbar.cxx b/src/Fl_Scrollbar.cxx index 238a14aa6..d006eb857 100644 --- a/src/Fl_Scrollbar.cxx +++ b/src/Fl_Scrollbar.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Scrollbar.cxx,v 1.7.2.14.2.16 2004/04/11 04:38:58 easysw Exp $" +// "$Id: Fl_Scrollbar.cxx,v 1.7.2.14.2.17 2004/07/27 16:02:21 easysw Exp $" // // Scroll bar widget for the Fast Light Tool Kit (FLTK). // @@ -176,6 +176,7 @@ int Fl_Scrollbar::handle(int event) { if (v != value()) { Fl_Slider::value(v); value_damage(); + set_changed(); do_callback(); } return 1;} @@ -242,5 +243,5 @@ Fl_Scrollbar::Fl_Scrollbar(int X, int Y, int W, int H, const char* L) } // -// End of "$Id: Fl_Scrollbar.cxx,v 1.7.2.14.2.16 2004/04/11 04:38:58 easysw Exp $". +// End of "$Id: Fl_Scrollbar.cxx,v 1.7.2.14.2.17 2004/07/27 16:02:21 easysw Exp $". // diff --git a/src/Fl_Tabs.cxx b/src/Fl_Tabs.cxx index bc8a143cd..9448f6686 100644 --- a/src/Fl_Tabs.cxx +++ b/src/Fl_Tabs.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Tabs.cxx,v 1.6.2.10.2.19 2004/04/11 04:38:58 easysw Exp $" +// "$Id: Fl_Tabs.cxx,v 1.6.2.10.2.20 2004/07/27 16:02:21 easysw Exp $" // // Tab widget for the Fast Light Tool Kit (FLTK). // @@ -133,8 +133,13 @@ int Fl_Tabs::handle(int event) { case FL_DRAG: case FL_RELEASE: o = which(Fl::event_x(), Fl::event_y()); - if (event == FL_RELEASE) {push(0); if (o && value(o)) do_callback();} - else push(o); + if (event == FL_RELEASE) { + push(0); + if (o && value(o)) { + set_changed(); + do_callback(); + } + } else push(o); if (Fl::visible_focus() && event == FL_RELEASE) Fl::focus(this); return 1; case FL_FOCUS: @@ -160,6 +165,7 @@ int Fl_Tabs::handle(int event) { for (i = 1; i < children(); i ++) if (child(i)->visible()) break; value(child(i - 1)); + set_changed(); do_callback(); return 1; case FL_Right: @@ -167,6 +173,7 @@ int Fl_Tabs::handle(int event) { for (i = 0; i < children(); i ++) if (child(i)->visible()) break; value(child(i + 1)); + set_changed(); do_callback(); return 1; case FL_Down: @@ -302,5 +309,5 @@ Fl_Tabs::Fl_Tabs(int X,int Y,int W, int H, const char *l) : } // -// End of "$Id: Fl_Tabs.cxx,v 1.6.2.10.2.19 2004/04/11 04:38:58 easysw Exp $". +// End of "$Id: Fl_Tabs.cxx,v 1.6.2.10.2.20 2004/07/27 16:02:21 easysw Exp $". // diff --git a/src/Fl_Text_Editor.cxx b/src/Fl_Text_Editor.cxx index be96e2a66..decc12182 100644 --- a/src/Fl_Text_Editor.cxx +++ b/src/Fl_Text_Editor.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Text_Editor.cxx,v 1.9.2.20 2004/07/26 20:52:52 easysw Exp $" +// "$Id: Fl_Text_Editor.cxx,v 1.9.2.21 2004/07/27 16:02:21 easysw Exp $" // // Copyright 2001-2004 by Bill Spitzak and others. // Original code Copyright Mark Edel. Permission to distribute under @@ -185,8 +185,8 @@ int Fl_Text_Editor::kf_default(int c, Fl_Text_Editor* e) { if (e->insert_mode()) e->insert(s); else e->overstrike(s); e->show_insert_position(); + e->set_changed(); if (e->when()&FL_WHEN_CHANGED) e->do_callback(); - else e->set_changed(); return 1; } @@ -199,7 +199,8 @@ int Fl_Text_Editor::kf_backspace(int, Fl_Text_Editor* e) { e->buffer()->select(e->insert_position(), e->insert_position()+1); kill_selection(e); e->show_insert_position(); - if (e->when()&FL_WHEN_CHANGED) e->do_callback(); else e->set_changed(); + e->set_changed(); + if (e->when()&FL_WHEN_CHANGED) e->do_callback(); return 1; } @@ -207,7 +208,8 @@ int Fl_Text_Editor::kf_enter(int, Fl_Text_Editor* e) { kill_selection(e); e->insert("\n"); e->show_insert_position(); - if (e->when()&FL_WHEN_CHANGED) e->do_callback(); else e->set_changed(); + e->set_changed(); + if (e->when()&FL_WHEN_CHANGED) e->do_callback(); return 1; } @@ -342,7 +344,8 @@ int Fl_Text_Editor::kf_delete(int, Fl_Text_Editor* e) { e->buffer()->select(e->insert_position(), e->insert_position()+1); kill_selection(e); e->show_insert_position(); - if (e->when()&FL_WHEN_CHANGED) e->do_callback(); else e->set_changed(); + e->set_changed(); + if (e->when()&FL_WHEN_CHANGED) e->do_callback(); return 1; } @@ -358,7 +361,8 @@ int Fl_Text_Editor::kf_copy(int, Fl_Text_Editor* e) { int Fl_Text_Editor::kf_cut(int c, Fl_Text_Editor* e) { kf_copy(c, e); kill_selection(e); - if (e->when()&FL_WHEN_CHANGED) e->do_callback(); else e->set_changed(); + e->set_changed(); + if (e->when()&FL_WHEN_CHANGED) e->do_callback(); return 1; } @@ -366,7 +370,8 @@ int Fl_Text_Editor::kf_paste(int, Fl_Text_Editor* e) { kill_selection(e); Fl::paste(*e, 1); e->show_insert_position(); - if (e->when()&FL_WHEN_CHANGED) e->do_callback(); else e->set_changed(); + e->set_changed(); + if (e->when()&FL_WHEN_CHANGED) e->do_callback(); return 1; } @@ -381,7 +386,8 @@ int Fl_Text_Editor::kf_undo(int , Fl_Text_Editor* e) { int ret = e->buffer()->undo(&crsr); e->insert_position(crsr); e->show_insert_position(); - if (e->when()&FL_WHEN_CHANGED) e->do_callback(); else e->set_changed(); + e->set_changed(); + if (e->when()&FL_WHEN_CHANGED) e->do_callback(); return ret; } @@ -399,8 +405,8 @@ int Fl_Text_Editor::handle_key() { else overstrike(Fl::event_text()); } show_insert_position(); + set_changed(); if (when()&FL_WHEN_CHANGED) do_callback(); - else set_changed(); return 1; } @@ -417,8 +423,7 @@ int Fl_Text_Editor::handle_key() { void Fl_Text_Editor::maybe_do_callback() { // printf("Fl_Text_Editor::maybe_do_callback()\n"); // printf("changed()=%d, when()=%x\n", changed(), when()); - if (changed() || (when()&FL_WHEN_NOT_CHANGED)) { - clear_changed(); do_callback();} + if (changed() || (when()&FL_WHEN_NOT_CHANGED)) do_callback(); } int Fl_Text_Editor::handle(int event) { @@ -428,7 +433,8 @@ int Fl_Text_Editor::handle(int event) { dragType = -1; Fl::paste(*this, 0); Fl::focus(this); - if (when()&FL_WHEN_CHANGED) do_callback(); else set_changed(); + set_changed(); + if (when()&FL_WHEN_CHANGED) do_callback(); return 1; } @@ -458,7 +464,8 @@ int Fl_Text_Editor::handle(int event) { if (insert_mode()) insert(Fl::event_text()); else overstrike(Fl::event_text()); show_insert_position(); - if (when()&FL_WHEN_CHANGED) do_callback(); else set_changed(); + set_changed(); + if (when()&FL_WHEN_CHANGED) do_callback(); return 1; case FL_ENTER: @@ -472,5 +479,5 @@ int Fl_Text_Editor::handle(int event) { } // -// End of "$Id: Fl_Text_Editor.cxx,v 1.9.2.20 2004/07/26 20:52:52 easysw Exp $". +// End of "$Id: Fl_Text_Editor.cxx,v 1.9.2.21 2004/07/27 16:02:21 easysw Exp $". // diff --git a/src/Fl_Tile.cxx b/src/Fl_Tile.cxx index 0bf4b67f3..863412a0a 100644 --- a/src/Fl_Tile.cxx +++ b/src/Fl_Tile.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Tile.cxx,v 1.5.2.5.2.6 2004/04/11 04:38:58 easysw Exp $" +// "$Id: Fl_Tile.cxx,v 1.5.2.5.2.7 2004/07/27 16:02:21 easysw Exp $" // // Tile widget for the Fast Light Tool Kit (FLTK). // @@ -187,6 +187,7 @@ int Fl_Tile::handle(int event) { } else newy = sy; position(sx,sy,newx,newy); + if (event == FL_DRAG) set_changed(); do_callback(); return 1;} @@ -196,5 +197,5 @@ int Fl_Tile::handle(int event) { } // -// End of "$Id: Fl_Tile.cxx,v 1.5.2.5.2.6 2004/04/11 04:38:58 easysw Exp $". +// End of "$Id: Fl_Tile.cxx,v 1.5.2.5.2.7 2004/07/27 16:02:21 easysw Exp $". // diff --git a/src/Fl_Valuator.cxx b/src/Fl_Valuator.cxx index fb7192c61..54a5797dd 100644 --- a/src/Fl_Valuator.cxx +++ b/src/Fl_Valuator.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Valuator.cxx,v 1.5.2.4.2.8 2004/04/11 04:38:58 easysw Exp $" +// "$Id: Fl_Valuator.cxx,v 1.5.2.4.2.9 2004/07/27 16:02:21 easysw Exp $" // // Valuator widget for the Fast Light Tool Kit (FLTK). // @@ -80,8 +80,8 @@ void Fl_Valuator::handle_drag(double v) { if (v != value_) { value_ = v; value_damage(); + set_changed(); if (when() & FL_WHEN_CHANGED) do_callback(); - else set_changed(); } } @@ -92,8 +92,9 @@ void Fl_Valuator::handle_release() { // initial position: clear_changed(); // now do the callback only if slider in new position or always is on: - if (value_ != previous_value_ || when() & FL_WHEN_NOT_CHANGED) + if (value_ != previous_value_ || when() & FL_WHEN_NOT_CHANGED) { do_callback(); + } } } @@ -125,5 +126,5 @@ int Fl_Valuator::format(char* buffer) { } // -// End of "$Id: Fl_Valuator.cxx,v 1.5.2.4.2.8 2004/04/11 04:38:58 easysw Exp $". +// End of "$Id: Fl_Valuator.cxx,v 1.5.2.4.2.9 2004/07/27 16:02:21 easysw Exp $". // diff --git a/src/Fl_Value_Input.cxx b/src/Fl_Value_Input.cxx index 17bfc3c49..8a174312e 100644 --- a/src/Fl_Value_Input.cxx +++ b/src/Fl_Value_Input.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Value_Input.cxx,v 1.6.2.5.2.9 2004/04/11 04:38:58 easysw Exp $" +// "$Id: Fl_Value_Input.cxx,v 1.6.2.5.2.10 2004/07/27 16:02:21 easysw Exp $" // // Value input widget for the Fast Light Tool Kit (FLTK). // @@ -41,12 +41,8 @@ void Fl_Value_Input::input_cb(Fl_Widget*, void* v) { else nv = strtol(t.input.value(), 0, 0); if (nv != t.value() || t.when() & FL_WHEN_NOT_CHANGED) { t.set_value(nv); - if (t.when()) { - t.clear_changed(); - t.do_callback(); - } else { - t.set_changed(); - } + t.set_changed(); + if (t.when()) t.do_callback(); } } @@ -131,5 +127,5 @@ Fl_Value_Input::Fl_Value_Input(int X, int Y, int W, int H, const char* l) } // -// End of "$Id: Fl_Value_Input.cxx,v 1.6.2.5.2.9 2004/04/11 04:38:58 easysw Exp $". +// End of "$Id: Fl_Value_Input.cxx,v 1.6.2.5.2.10 2004/07/27 16:02:21 easysw Exp $". // diff --git a/src/forms_timer.cxx b/src/forms_timer.cxx index 1d413015e..eb08cb6f2 100644 --- a/src/forms_timer.cxx +++ b/src/forms_timer.cxx @@ -1,5 +1,5 @@ // -// "$Id: forms_timer.cxx,v 1.4.2.3.2.6 2004/04/11 04:39:00 easysw Exp $" +// "$Id: forms_timer.cxx,v 1.4.2.3.2.7 2004/07/27 16:02:21 easysw Exp $" // // Forms timer object for the Fast Light Tool Kit (FLTK). // @@ -111,6 +111,7 @@ void Fl_Timer::step() { redraw(); Fl::add_timeout(FL_TIMER_BLINKRATE, stepcb, this); } + set_changed(); do_callback(); } else { if (type() == FL_VALUE_TIMER) redraw(); @@ -162,5 +163,5 @@ void Fl_Timer::suspended(char d) { } // -// End of "$Id: forms_timer.cxx,v 1.4.2.3.2.6 2004/04/11 04:39:00 easysw Exp $". +// End of "$Id: forms_timer.cxx,v 1.4.2.3.2.7 2004/07/27 16:02:21 easysw Exp $". //