File tree 1 file changed +23
-3
lines changed
1 file changed +23
-3
lines changed Original file line number Diff line number Diff line change @@ -1748,9 +1748,29 @@ void ColorPicker::_pick_button_pressed() {
1748
1748
1749
1749
void ColorPicker::_target_gui_input (const Ref<InputEvent> &p_event) {
1750
1750
const Ref<InputEventMouseButton> mouse_event = p_event;
1751
- if (mouse_event.is_valid () && mouse_event->is_pressed ()) {
1752
- picker_window->hide ();
1753
- _pick_finished ();
1751
+ if (mouse_event.is_null ()) {
1752
+ return ;
1753
+ }
1754
+ if (mouse_event->get_button_index () == MouseButton::LEFT) {
1755
+ if (mouse_event->is_pressed ()) {
1756
+ picker_window->hide ();
1757
+ _pick_finished ();
1758
+ }
1759
+ } else {
1760
+ Window *w = picker_window->get_parent_visible_window ();
1761
+ while (w) {
1762
+ Point2i win_mpos = w->get_mouse_position (); // Mouse position local to the window.
1763
+ Size2i win_size = w->get_size ();
1764
+ if (win_mpos.x >= 0 && win_mpos.y >= 0 && win_mpos.x <= win_size.x && win_mpos.y <= win_size.y ) {
1765
+ // Mouse event inside window bounds, forward this event to the window.
1766
+ Ref<InputEventMouseButton> new_ev = p_event->duplicate ();
1767
+ new_ev->set_position (win_mpos);
1768
+ new_ev->set_global_position (win_mpos);
1769
+ w->push_input (new_ev, true );
1770
+ return ;
1771
+ }
1772
+ w = w->get_parent_visible_window ();
1773
+ }
1754
1774
}
1755
1775
}
1756
1776
You can’t perform that action at this time.
0 commit comments