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