99import javafx .event .EventTarget ;
1010import javafx .event .EventType ;
1111import javafx .scene .Node ;
12- import javafx .scene .control .Control ;
12+ import javafx .scene .control .TextInputControl ;
1313import javafx .scene .input .*;
1414import javafx .stage .Stage ;
1515import org .jetbrains .annotations .NotNull ;
@@ -101,7 +101,7 @@ private void init() {
101101 if (target == destination ) return ;
102102
103103 final FileEditor currentEditor = editorAreaComponent .getCurrentEditor ();
104- if (currentEditor == null || !currentEditor .isInside (event .getSceneX (), event .getSceneY ())) {
104+ if (currentEditor == null || !currentEditor .isInside (event .getSceneX (), event .getSceneY (), event . getClass () )) {
105105 return ;
106106 }
107107
@@ -118,7 +118,7 @@ private void init() {
118118 updateCoords (event );
119119
120120 final FileEditor currentEditor = editorAreaComponent .getCurrentEditor ();
121- if (currentEditor == null || !currentEditor .isInside (event .getSceneX (), event .getSceneY ())) {
121+ if (currentEditor == null || !currentEditor .isInside (event .getSceneX (), event .getSceneY (), event . getClass () )) {
122122 return ;
123123 }
124124
@@ -127,6 +127,10 @@ private void init() {
127127
128128 stage .addEventFilter (MouseEvent .MOUSE_DRAGGED , event -> {
129129
130+ if (Config .DEV_DEBUG_JFX_MOUSE_INPUT ) {
131+ LOGGER .debug ("Mouse dragged " + event );
132+ }
133+
130134 final EventTarget target = event .getTarget ();
131135 if (target == destination ) return ;
132136
@@ -135,7 +139,7 @@ private void init() {
135139 final FileEditor currentEditor = editorAreaComponent .getCurrentEditor ();
136140 if (currentEditor == null ) return ;
137141
138- if (!isMousePressed (event .getButton ()) && !currentEditor .isInside (event .getSceneX (), event .getSceneY ())) {
142+ if (!isMousePressed (event .getButton ()) && !currentEditor .isInside (event .getSceneX (), event .getSceneY (), event . getClass () )) {
139143 return ;
140144 }
141145
@@ -153,7 +157,7 @@ private void redirect(@NotNull final GestureEvent event) {
153157 if (target == destination ) return ;
154158
155159 final FileEditor currentEditor = editorAreaComponent .getCurrentEditor ();
156- if (currentEditor == null || !currentEditor .isInside (event .getSceneX (), event .getSceneY ())) {
160+ if (currentEditor == null || !currentEditor .isInside (event .getSceneX (), event .getSceneY (), event . getClass () )) {
157161 return ;
158162 }
159163
@@ -163,17 +167,24 @@ private void redirect(@NotNull final GestureEvent event) {
163167 private void redirect (@ NotNull final InputEvent event ) {
164168
165169 final EventTarget target = event .getTarget ();
166- if (target == destination || target instanceof Control ) return ;
170+ if (target == destination ) {
171+ return ;
172+ } else if (target instanceof TextInputControl ) {
173+ if (Config .DEV_DEBUG_JFX_KEY_INPUT && LOGGER .isEnabledDebug ()) {
174+ LOGGER .debug ("Key event was skipped because it was from " + target );
175+ }
176+ return ;
177+ }
167178
168179 final EventType <? extends InputEvent > eventType = event .getEventType ();
169180 final FileEditor currentEditor = editorAreaComponent .getCurrentEditor ();
170181
171182 if (Config .DEV_DEBUG_JFX_KEY_INPUT && LOGGER .isEnabledDebug ()) {
172183 LOGGER .debug ("Key event " + event .getEventType () + " is inside " +
173- currentEditor .isInside (getSceneX (), getSceneY ()));
184+ currentEditor .isInside (getSceneX (), getSceneY (), event . getClass () ));
174185 }
175186
176- if (currentEditor == null || eventType != KeyEvent .KEY_RELEASED && !currentEditor .isInside (getSceneX (), getSceneY ())) {
187+ if (currentEditor == null || eventType != KeyEvent .KEY_RELEASED && !currentEditor .isInside (getSceneX (), getSceneY (), event . getClass () )) {
177188 return ;
178189 }
179190
0 commit comments