Mercurial > jwe > octave
changeset 18968:0257a936dc4a
Fix FLTK redraw and event issue
* __init_fltk__.cc: Move axis auto code in own function (again).
Fix event issue where windowbuttondownfcn was called before
set_currentpoint and execute event only if it's defined.
* __add_default_menu__.m: Add drawnow () for grid and axis callback
author | Andreas Weber <andy.weber.aw@gmail.com> |
---|---|
date | Tue, 29 Jul 2014 21:13:03 +0200 |
parents | 69658bd9952b |
children | bb2a03f9ed20 |
files | libinterp/dldfcn/__init_fltk__.cc scripts/plot/util/private/__add_default_menu__.m |
diffstat | 2 files changed, 20 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/dldfcn/__init_fltk__.cc Tue Jul 29 10:18:05 2014 +0200 +++ b/libinterp/dldfcn/__init_fltk__.cc Tue Jul 29 21:13:03 2014 +0200 @@ -946,12 +946,7 @@ void button_press (Fl_Widget* widg, void*) { if (widg == autoscale) - { - set_on_ax_obj ("xlimmode", "auto"); - set_on_ax_obj ("ylimmode", "auto"); - set_on_ax_obj ("zlimmode", "auto"); - mark_modified (); - } + axis_auto (); else if (widg == togglegrid) toggle_grid (); else if (widg == panzoom) @@ -995,6 +990,19 @@ int pos_x; int pos_y; + + void axis_auto (void) + { + octave_value_list args; + if (fp.get_currentaxes ().ok ()) + { + args(0) = fp.get_currentaxes ().as_octave_value (); + args(1) = "auto"; + feval ("axis", args); + mark_modified (); + } + } + void toggle_grid (void) { octave_value_list args; @@ -1198,7 +1206,6 @@ if (event == FL_FOCUS) return 1; - Fl_Window::handle (event); graphics_handle gh; if (!fp.is_beingdeleted ()) @@ -1224,10 +1231,7 @@ { case 'a': case 'A': - set_on_ax_obj ("xlimmode", "auto"); - set_on_ax_obj ("ylimmode", "auto"); - set_on_ax_obj ("zlimmode", "auto"); - mark_modified (); + axis_auto (); return 1; case 'g': @@ -1278,13 +1282,14 @@ return 1; case FL_PUSH: - fp.execute_windowbuttondownfcn (Fl::event_button()); - pos_x = Fl::event_x (); pos_y = Fl::event_y () - menu_dy (); set_currentpoint (pos_x, pos_y); + if (fp.get_windowbuttonupfcn ().is_defined ()) + fp.execute_windowbuttondownfcn (Fl::event_button()); + gh = pixel2axes_or_ca (pos_x, pos_y); if (gh.ok ())
--- a/scripts/plot/util/private/__add_default_menu__.m Tue Jul 29 10:18:05 2014 +0200 +++ b/scripts/plot/util/private/__add_default_menu__.m Tue Jul 29 21:13:03 2014 +0200 @@ -105,11 +105,13 @@ otherwise arrayfun (@(h) grid(h, id), hax); endswitch + drawnow (); endfunction function autoscale_cb (h, e) hax = __get_axes__ (h); arrayfun (@(h) axis (h, "auto"), hax) + drawnow (); endfunction function guimode_cb (h, e)