From b1feaad628c7ed60d8aea990f1cfd15aee61f9e4 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Sat, 26 Aug 2006 18:26:07 +0000
Subject: [PATCH] more when(FL_RELEASE) on expenive callbacks

---
 Fltk/GUI.cpp | 56 +++++++++++++++++++++-------------------------------
 1 file changed, 23 insertions(+), 33 deletions(-)

diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index b966d39bf8..252a80f351 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.539 2006-08-26 17:59:23 geuzaine Exp $
+// $Id: GUI.cpp,v 1.540 2006-08-26 18:26:07 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -2874,8 +2874,9 @@ void GUI::create_option_window()
       view_value[30]->minimum(1);
       view_value[30]->maximum(256);
       view_value[30]->step(1);
+      view_value[30]->when(FL_WHEN_RELEASE); // because this can be a slow operation
       view_value[30]->callback(view_options_ok_cb);
-
+      
       static Fl_Menu_Item menu_iso[] = {
         {"Iso-values", 0, 0, 0},
         {"Filled iso-values", 0, 0, 0},
@@ -2905,12 +2906,14 @@ void GUI::create_option_window()
       view_push_butt[1]->callback(view_options_ok_cb, (void*)"range_min");
       view_value[31] = new Fl_Value_Input(L + 2 * WB + sw2, 2 * WB + 7 * BH, IW - sw2, BH, "Custom minimum");
       view_value[31]->align(FL_ALIGN_RIGHT);
+      view_value[31]->when(FL_WHEN_RELEASE); // because this can be a slow operation
       view_value[31]->callback(view_options_ok_cb);
 
       view_push_butt[2] = new Fl_Button(L + 2 * WB, 2 * WB + 8 * BH, sw2, BH, "Max");
       view_push_butt[2]->callback(view_options_ok_cb, (void*)"range_max");
       view_value[32] = new Fl_Value_Input(L + 2 * WB + sw2, 2 * WB + 8 * BH, IW - sw2, BH, "Custom maximum");
       view_value[32]->align(FL_ALIGN_RIGHT);
+      view_value[32]->when(FL_WHEN_RELEASE); // because this can be a slow operation
       view_value[32]->callback(view_options_ok_cb);
 
       view_butt[38] = new Fl_Check_Button(L + 2 * WB, 2 * WB + 9 * BH, BW, BH, "Saturate out-of-range values");
@@ -3131,6 +3134,7 @@ void GUI::create_option_window()
       view_value[33]->maximum(MAX_LEVEL_OF_ZOOM);
       view_value[33]->step(1);
       view_value[33]->value(0);
+      view_value[33]->when(FL_WHEN_RELEASE); // because this can be a slow operation
       view_value[33]->callback(view_options_ok_cb);
 
       view_value[34] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 11 * BH, IW, BH, "Target error");
@@ -3138,6 +3142,7 @@ void GUI::create_option_window()
       view_value[34]->minimum(0);
       view_value[34]->maximum(1);
       view_value[34]->value(1.e-2);
+      view_value[34]->when(FL_WHEN_RELEASE); // because this can be a slow operation
       view_value[34]->callback(view_options_ok_cb);
 
       o->end();
@@ -3150,63 +3155,46 @@ void GUI::create_option_window()
       b->align(FL_ALIGN_INSIDE|FL_ALIGN_LEFT);
 
       int ss = 2*IW/3/3+4;
-
       view_value[51] = new Fl_Value_Input(L + 2 * WB       , 2 * WB + 2 * BH, ss, BH);
-      view_value[51]->callback(view_options_ok_cb);
       view_value[52] = new Fl_Value_Input(L + 2 * WB + ss  , 2 * WB + 2 * BH, ss, BH);
-      view_value[52]->callback(view_options_ok_cb);
       view_value[53] = new Fl_Value_Input(L + 2 * WB + 2*ss, 2 * WB + 2 * BH, ss, BH, " X");
-      view_value[53]->callback(view_options_ok_cb);
       view_value[40] = new Fl_Value_Input(L + 2 * WB + IW  , 2 * WB + 2 * BH, 7*IW/10, BH);
-      view_value[40]->align(FL_ALIGN_RIGHT);
-      view_value[40]->callback(view_options_ok_cb);
 
       view_value[54] = new Fl_Value_Input(L + 2 * WB       , 2 * WB + 3 * BH, ss, BH);
-      view_value[54]->callback(view_options_ok_cb);
       view_value[55] = new Fl_Value_Input(L + 2 * WB + ss  , 2 * WB + 3 * BH, ss, BH);
-      view_value[55]->callback(view_options_ok_cb);
       view_value[56] = new Fl_Value_Input(L + 2 * WB + 2*ss, 2 * WB + 3 * BH, ss, BH, " Y +");
-      view_value[56]->callback(view_options_ok_cb);
       view_value[41] = new Fl_Value_Input(L + 2 * WB + IW  , 2 * WB + 3 * BH, 7*IW/10, BH);
-      view_value[41]->align(FL_ALIGN_RIGHT);
-      view_value[41]->callback(view_options_ok_cb);
 
       view_value[57] = new Fl_Value_Input(L + 2 * WB       , 2 * WB + 4 * BH, ss, BH);
-      view_value[57]->callback(view_options_ok_cb);
       view_value[58] = new Fl_Value_Input(L + 2 * WB + ss  , 2 * WB + 4 * BH, ss, BH);
-      view_value[58]->callback(view_options_ok_cb);
       view_value[59] = new Fl_Value_Input(L + 2 * WB + 2*ss, 2 * WB + 4 * BH, ss, BH, " Z");
-      view_value[59]->callback(view_options_ok_cb);
       view_value[42] = new Fl_Value_Input(L + 2 * WB + IW  , 2 * WB + 4 * BH, 7*IW/10, BH);
-      view_value[42]->align(FL_ALIGN_RIGHT);
-      view_value[59]->callback(view_options_ok_cb);
-      for(int i = 51; i <= 59; i++){
-	view_value[i]->minimum(-1.);
-	view_value[i]->maximum(1.);
-	view_value[i]->step(0.1);
-	view_value[i]->align(FL_ALIGN_RIGHT);
-      }
 
       Fl_Box *b2 = new Fl_Box(FL_NO_BOX, L + 2 * WB + 2 * IW-WB, 2 * WB + 1 * BH, 7*IW/10, BH, "Raise:");
       b2->align(FL_ALIGN_INSIDE|FL_ALIGN_LEFT);
 
       view_value[43] = new Fl_Value_Input(L + 2 * WB + 2 * IW-WB, 2 * WB + 2 * BH, 7*IW/10, BH, "X");
-      view_value[43]->align(FL_ALIGN_RIGHT);
-      view_value[43]->callback(view_options_ok_cb);
-
       view_value[44] = new Fl_Value_Input(L + 2 * WB + 2 * IW-WB, 2 * WB + 3 * BH, 7*IW/10, BH, "Y");
-      view_value[44]->align(FL_ALIGN_RIGHT);
-      view_value[44]->callback(view_options_ok_cb);
-
       view_value[45] = new Fl_Value_Input(L + 2 * WB + 2 * IW-WB, 2 * WB + 4 * BH, 7*IW/10, BH, "Z");
-      view_value[45]->align(FL_ALIGN_RIGHT);
-      view_value[45]->callback(view_options_ok_cb);
+
+      for(int i = 40; i <= 45; i++){
+	view_value[i]->align(FL_ALIGN_RIGHT);
+	view_value[i]->when(FL_WHEN_RELEASE); // because this can be a slow operation
+	view_value[i]->callback(view_options_ok_cb);
+      }
+      for(int i = 51; i <= 59; i++){
+	view_value[i]->minimum(-1.);
+	view_value[i]->maximum(1.);
+	view_value[i]->step(0.1);
+	view_value[i]->align(FL_ALIGN_RIGHT);
+	view_value[i]->when(FL_WHEN_RELEASE); // because this can be a slow operation
+	view_value[i]->callback(view_options_ok_cb);
+      }
 
       view_butt[6] = new Fl_Check_Button(L + 2 * WB, 2 * WB + 5 * BH, BW, BH, "Use general transformation expressions");
       view_butt[6]->type(FL_TOGGLE_BUTTON);
       view_butt[6]->down_box(GMSH_TOGGLE_BOX);
       view_butt[6]->selection_color(GMSH_TOGGLE_COLOR);
-      view_butt[6]->callback(activate_cb, (void*)"general_transform");
       view_butt[6]->callback(view_options_ok_cb);
 
       view_choice[11] = new Fl_Choice(L + 2 * WB, 2 * WB + 6 * BH, IW, BH, "Data source");
@@ -3216,6 +3204,7 @@ void GUI::create_option_window()
 
       view_value[2] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 7 * BH, IW, BH, "Factor");
       view_value[2]->align(FL_ALIGN_RIGHT);
+      view_value[2]->when(FL_WHEN_RELEASE); // because this can be a slow operation
       view_value[2]->callback(view_options_ok_cb);
 
       view_input[4] = new Fl_Input(L + 2 * WB, 2 * WB + 8 * BH, IW, BH, "X expression");
@@ -3305,6 +3294,7 @@ void GUI::create_option_window()
         view_value[63]->maximum(1.);
         view_value[63]->step(0.01);
         view_value[63]->align(FL_ALIGN_RIGHT);
+	view_value[63]->when(FL_WHEN_RELEASE); // because this can be a slow operation
 	view_value[63]->callback(view_options_ok_cb);
 
         view_choice[10] = new Fl_Choice(L + 2 * WB, 2 * WB + 9 * BH, IW, BH, "Data source");
-- 
GitLab