From e43a02921dd94bfafc84c0afa40b43dfc656d3b8 Mon Sep 17 00:00:00 2001
From: slevy <slevy>
Date: Fri, 12 Jul 2013 14:15:05 +0000
Subject: [PATCH] Add some redraw() calls to avoid MacOS Lion bug that left cmd
 box, cmdhist scrollback, and opengl view to go un-refreshed.  Especially when
 we switch on the timestep row.

---
 src/partiview.cc | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/src/partiview.cc b/src/partiview.cc
index 13a9d03..3301b74 100644
--- a/src/partiview.cc
+++ b/src/partiview.cc
@@ -166,8 +166,11 @@ void pp_ui_init() {
 }
 
 void pp_cmd_cb( HistInput* inp, void * ) {
-  if(inp->hist())
+  if(inp->hist()) {
     inp->hist()->addline( inp->value(), 0 );
+    if(ppui.cmd)
+	ppui.cmd->redraw();
+  }
   const char *cp;
   for(cp = inp->value(); isspace(*cp); cp++)
       ;
@@ -260,7 +263,7 @@ void pp_run_cb( Fl_Button *runbtn, void *stepsign ) {
   parti_set_running( ppui.st, runbtn->value() );
 }
 
-void pp_timeinput_cb( Fl_Input *inp, void * ) {
+void pp_timeinput_cb( Fl_Float_Input *inp, void * ) {
     double v;
 
     parti_set_running( ppui.st, 0 );
@@ -271,7 +274,7 @@ void pp_timeinput_cb( Fl_Input *inp, void * ) {
     }
 }
 
-void pp_timebaseinput_cb( Fl_Input *inp, void * ) {
+void pp_timebaseinput_cb( Fl_Float_Input *inp, void * ) {
     double newbase;
 
     parti_set_running( ppui.st, 0 );
@@ -452,6 +455,8 @@ int pp_viewevent_cb( Fl_Gview *view, int ev ) {
 	msg("%.4g fps", ppui.view->fps());
 	return 1;
     }
+  } else if(ev == FL_SHOW) {
+    ppui.view->redraw();	// XXX slevy DEBUG 2013.07.09
   }
 
   return 0;
@@ -510,6 +515,10 @@ void ppui_refresh( struct stuff *st ) {
 	ppui.steprow->show();
 	ppui.steprow->parent()->hide();	// force top-level Pack to be redraw()n
 	ppui.steprow->parent()->show(); // for some reason just ->redraw() doesn't.
+	ppui.mainwin->redraw();		// ... try harder.
+	Fl::wait(.01);			// delay ... to handle events?
+	ppui.cmdhist->redraw();		// ... and even harder.  This shouldn't be necessary, but trying to evade MacOS trouble.
+	ppui.cmd->redraw();
 	timeshown = 1;
     }
 
@@ -543,6 +552,7 @@ void ppui_refresh( struct stuff *st ) {
     ppui.objtogs->parent()->show();
     ppui.steprow->parent()->hide(); // force top-level Pack to be redraw()n
     ppui.steprow->parent()->show(); // for some reason just ->redraw() doesn't.
+    ppui.mainwin->redraw();
   }
 
   if(ppui.objtogs->visible()) {
@@ -717,8 +727,11 @@ int vmsg( const char *fmt, va_list args ) {
 #ifndef FLHACK
   if(gensliderchg) //steven marx: version 0.7.02 - we don't want voluminous generic slider output
     return 0;
-  if(ppui.cmdhist)
+  if(ppui.cmdhist) {
     ppui.cmdhist->addline( str, 1 );
+    ppui.cmdhist->redraw();
+    ppui.cmd->redraw();
+  }
 
   return printf("%s\n", str);
 
@@ -1254,5 +1267,8 @@ int main(int argc, char *argv[])
   for(i = 0; i < nlatecmds; i++)
     specks_commandstr( &ppui.st, latecmds[i] );
 
+  // this shouldn't be necessary, but does it help on MacOS X?? slevy 2013.07.11
+  ppui.view->redraw();
+
   return Fl::run();
 }
-- 
GitLab