44 lines
1.9 KiB
Kotlin
44 lines
1.9 KiB
Kotlin
package rs485.network.breakpoint
|
|
|
|
import com.intellij.lang.java.JavaLanguage
|
|
import com.intellij.openapi.application.ApplicationManager
|
|
import com.intellij.xdebugger.XDebugProcess
|
|
import com.intellij.xdebugger.XDebugSessionListener
|
|
import com.intellij.xdebugger.XDebuggerManagerListener
|
|
import com.intellij.xdebugger.evaluation.EvaluationMode
|
|
import com.intellij.xdebugger.frame.XValue
|
|
import com.intellij.xdebugger.impl.breakpoints.XExpressionImpl
|
|
import com.intellij.xdebugger.impl.ui.tree.nodes.XEvaluationCallbackBase
|
|
|
|
class LWJGLExitMouseGrabDebuggerManagerListener : XDebuggerManagerListener {
|
|
override fun processStarted(debugProcess: XDebugProcess) {
|
|
debugProcess.session.addSessionListener(object : XDebugSessionListener {
|
|
override fun sessionPaused() {
|
|
val evaluator = debugProcess.evaluator ?: return
|
|
ApplicationManager.getApplication().invokeLater {
|
|
val expression = XExpressionImpl(
|
|
/* expression = */ "Mouse.setGrabbed(false);",
|
|
/* language = */ JavaLanguage.INSTANCE,
|
|
/* customInfo = */ "org.lwjgl.input.Mouse",
|
|
/* mode = */ EvaluationMode.CODE_FRAGMENT,
|
|
)
|
|
evaluator.evaluate(
|
|
/* expression = */ expression,
|
|
/* callback = */
|
|
object : XEvaluationCallbackBase() {
|
|
override fun errorOccurred(errorMessage: String) {
|
|
// ignore
|
|
}
|
|
|
|
override fun evaluated(result: XValue) {
|
|
// ignore
|
|
}
|
|
},
|
|
/* expressionPosition = */ null,
|
|
)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|