| 804 | } |
| 805 | |
| 806 | void |
| 807 | ViewObjectUI::send_leave_event () |
| 808 | { |
| 809 | try { |
| 810 | |
| 811 | bool done = false; |
| 812 | |
| 813 | auto grabbed = m_grabbed; |
| 814 | for (auto g = grabbed.begin (); !done && g != grabbed.end (); ++g) { |
| 815 | done = ((*g)->enabled () && (*g)->leave_event (true)); |
| 816 | } |
| 817 | |
| 818 | if (! done && mp_active_service) { |
| 819 | done = (mp_active_service->enabled () && mp_active_service->leave_event (true)); |
| 820 | } |
| 821 | |
| 822 | service_iterator svc = begin_services (); |
| 823 | while (svc != end_services () && !done) { |
| 824 | service_iterator next = svc; |
| 825 | ++next; |
| 826 | done = ((*svc)->enabled () && (*svc)->leave_event (false)); |
| 827 | svc = next; |
| 828 | } |
| 829 | |
| 830 | if (! done) { |
| 831 | leave_event (); |
| 832 | } |
| 833 | |
| 834 | end_mouse_event (); |
| 835 | |
| 836 | m_mouse_inside = false; |
| 837 | |
| 838 | } catch (...) { |
| 839 | m_mouse_inside = false; |
| 840 | throw; |
| 841 | } |
| 842 | } |
| 843 | |
| 844 | void |
| 845 | ViewObjectUI::send_enter_event () |
no test coverage detected