| 893 | } |
| 894 | |
| 895 | void |
| 896 | ViewObjectUI::send_mouse_double_clicked_event (const db::DPoint &pt, unsigned int buttons) |
| 897 | { |
| 898 | ensure_entered (); |
| 899 | begin_mouse_event (lay::Cursor::none); |
| 900 | |
| 901 | #if defined(HAVE_QT) |
| 902 | if (mp_widget) { |
| 903 | mp_widget->setFocus (); |
| 904 | } |
| 905 | #endif |
| 906 | |
| 907 | bool done = false; |
| 908 | |
| 909 | m_mouse_pos = pt; |
| 910 | m_mouse_pressed = m_mouse_pos; |
| 911 | m_mouse_pressed_state = false; |
| 912 | |
| 913 | db::DPoint p = pixel_to_um (m_mouse_pos); |
| 914 | |
| 915 | auto grabbed = m_grabbed; |
| 916 | for (auto g = grabbed.begin (); !done && g != grabbed.end (); ++g) { |
| 917 | done = ((*g)->m_enabled && (*g)->mouse_double_click_event (p, buttons, true)); |
| 918 | } |
| 919 | |
| 920 | if (! done && mp_active_service) { |
| 921 | done = (mp_active_service->enabled () && mp_active_service->mouse_double_click_event (p, buttons, true)); |
| 922 | } |
| 923 | |
| 924 | service_iterator svc = begin_services (); |
| 925 | while (svc != end_services () && !done) { |
| 926 | service_iterator next = svc; |
| 927 | ++next; |
| 928 | done = ((*svc)->enabled () && (*svc)->mouse_double_click_event (p, buttons, false)); |
| 929 | svc = next; |
| 930 | } |
| 931 | |
| 932 | if (! done) { |
| 933 | mouse_double_click_event (p, buttons); |
| 934 | } |
| 935 | |
| 936 | end_mouse_event (); |
| 937 | } |
| 938 | |
| 939 | void |
| 940 | ViewObjectUI::send_mouse_release_event (const db::DPoint &pt, unsigned int buttons) |
no test coverage detected