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 ();