Mercurial > octave-antonio
comparison libinterp/dldfcn/__init_fltk__.cc @ 20118:144498565de9
Return correct x,y coordinates for keystroke with ginput in FLTK (bug #44834).
* __init_fltk__.cc (handle): Update currentpoint property if a keypressfcn
callback (like that used by ginput) exists.
author | Rik <rik@octave.org> |
---|---|
date | Thu, 23 Apr 2015 08:38:49 -0700 |
parents | de1377a638d7 |
children | f46f6d906654 |
comparison
equal
deleted
inserted
replaced
20117:094ae7cc2d1d | 20118:144498565de9 |
---|---|
1425 case FL_KEYDOWN: | 1425 case FL_KEYDOWN: |
1426 { | 1426 { |
1427 int e_key = Fl::event_key (); | 1427 int e_key = Fl::event_key (); |
1428 const char *e_text = Fl::event_text (); | 1428 const char *e_text = Fl::event_text (); |
1429 int e_state = Fl::event_state (); | 1429 int e_state = Fl::event_state (); |
1430 octave_scalar_map evt = | 1430 octave_scalar_map evt = format_key_event (e_key, e_text, e_state); |
1431 format_key_event (e_key, e_text, e_state); | |
1432 | 1431 |
1433 fp.set_currentcharacter (std::string (e_text)); | 1432 fp.set_currentcharacter (std::string (e_text)); |
1434 if (fp.get_keypressfcn ().is_defined () | 1433 |
1434 if (! fp.get_keypressfcn ().is_empty () | |
1435 && (evt.contents ("Key").length () > 0)) | 1435 && (evt.contents ("Key").length () > 0)) |
1436 fp.execute_keypressfcn (evt); | 1436 { |
1437 | 1437 // Update CurrentPoint before callback |
1438 if (Fl::event_inside (canvas)) | |
1439 { | |
1440 pos_x = Fl::event_x (); | |
1441 pos_y = Fl::event_y () - menu_dy (); | |
1442 | |
1443 set_currentpoint (pos_x, pos_y); | |
1444 | |
1445 gh = pixel2axes_or_ca (pos_x, pos_y); | |
1446 | |
1447 if (gh.ok ()) | |
1448 { | |
1449 ax_obj = gh_manager::get_object (gh); | |
1450 set_axes_currentpoint (ax_obj, pos_x, pos_y); | |
1451 } | |
1452 } | |
1453 | |
1454 fp.execute_keypressfcn (evt); | |
1455 } | |
1456 | |
1457 // Handle special keys used in toolbar | |
1438 switch (e_key) | 1458 switch (e_key) |
1439 { | 1459 { |
1440 case 'a': | 1460 case 'a': |
1441 case 'A': | 1461 case 'A': |
1442 axis_auto (); | 1462 axis_auto (); |