Skip to content

Commit

Permalink
solve the problem issue #30 (#31)
Browse files Browse the repository at this point in the history
  • Loading branch information
RocketMaDev committed Aug 6, 2021
1 parent 37e460d commit 9791a53
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 11 deletions.
10 changes: 10 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,16 @@
<role>Strings for Register Hotkeys</role>
</roles>
</contributor>
<contributor>
<name>Rocket</name>
<email>ma2014119@outlook.com</email>
<url>https://github.com/RocketMaDev</url>
<organization />
<organizationUrl />
<roles>
<role>Make it usable above JDK 9</role>
</roles>
</contributor>
</contributors>
<build>
<plugins>
Expand Down
19 changes: 10 additions & 9 deletions src/main/cpp/JIntellitypeHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include "JIntellitypeHandler.h"
#include "JIntellitypeThread.h"
#include <stdlib.h>
#include <iostream>


UINT WM_SHELLHOOK = 0;
Expand All @@ -34,10 +35,10 @@ UINT WM_SHELLHOOK = 0;
JIntellitypeHandler *JIntellitypeHandler::extract( JNIEnv *env, jobject object )
{
// Get field ID
jfieldID l_handlerId = env->GetFieldID( env->GetObjectClass( object ), "handler", "I" );
jfieldID l_handlerId = env->GetFieldID( env->GetObjectClass( object ), "handler", "J" );

// Get field
JIntellitypeHandler *l_handler = (JIntellitypeHandler *) env->GetIntField( object, l_handlerId );
JIntellitypeHandler *l_handler = (JIntellitypeHandler *) env->GetLongField(object, l_handlerId);

return l_handler;
}
Expand All @@ -57,10 +58,10 @@ JIntellitypeHandler::JIntellitypeHandler( JNIEnv *env, jobject object )
m_fireIntellitype = env->GetMethodID( env->GetObjectClass( m_object ) , "onIntellitype", "(I)V" );

// Get field ID
jfieldID l_handlerId = env->GetFieldID( env->GetObjectClass( m_object ) , "handler", "I" );
jfieldID l_handlerId = env->GetFieldID( env->GetObjectClass( m_object ) , "handler", "J" );

// Set field
env->SetIntField( m_object, l_handlerId, (jint) this );
env->SetLongField( m_object, l_handlerId, (jlong) this );
}

/*
Expand All @@ -69,10 +70,10 @@ JIntellitypeHandler::JIntellitypeHandler( JNIEnv *env, jobject object )
JIntellitypeHandler::~JIntellitypeHandler()
{
// Get field ID
jfieldID l_handlerId = g_JIntellitypeThread.m_env->GetFieldID( g_JIntellitypeThread.m_env->GetObjectClass( m_object ), "handler", "I" );
jfieldID l_handlerId = g_JIntellitypeThread.m_env->GetFieldID( g_JIntellitypeThread.m_env->GetObjectClass( m_object ), "handler", "J" );

// Set field
g_JIntellitypeThread.m_env->SetIntField( m_object, l_handlerId, 0 );
g_JIntellitypeThread.m_env->SetLongField( m_object, l_handlerId, 0 );

// Release our reference
g_JIntellitypeThread.m_env->DeleteGlobalRef( m_object );
Expand Down Expand Up @@ -137,7 +138,7 @@ void JIntellitypeHandler::doInitialize()
return;

//Set pointer to this object inside the Window's USERDATA section
SetWindowLong( m_window, GWL_USERDATA, (LONG) this );
SetWindowLongPtr( m_window, GWLP_USERDATA, (LONG_PTR) this );

// hide the window
ShowWindow(m_window, SW_HIDE);
Expand Down Expand Up @@ -255,7 +256,7 @@ LRESULT CALLBACK JIntellitypeHandler::WndProc( HWND hWnd, UINT uMessage, WPARAM
if (uMessage == WM_SHELLHOOK) {
if (wParam == HSHELL_APPCOMMAND) {
jint cmd = GET_APPCOMMAND_LPARAM(lParam);
JIntellitypeHandler *l_this = (JIntellitypeHandler *) GetWindowLong( hWnd, GWL_USERDATA );
JIntellitypeHandler *l_this = (JIntellitypeHandler *) GetWindowLongPtr( hWnd, GWLP_USERDATA );
l_this->intellitype(cmd);
}
return TRUE;
Expand All @@ -264,7 +265,7 @@ LRESULT CALLBACK JIntellitypeHandler::WndProc( HWND hWnd, UINT uMessage, WPARAM
// check for registered hotkey messages and send them to HotKeyListeners
switch( uMessage ) {
case WM_HOTKEY: {
JIntellitypeHandler *l_this = (JIntellitypeHandler *) GetWindowLong( hWnd, GWL_USERDATA );
JIntellitypeHandler *l_this = (JIntellitypeHandler *) GetWindowLongPtr( hWnd, GWLP_USERDATA );
l_this->fireHotKey(wParam);
return TRUE;
break;
Expand Down
5 changes: 4 additions & 1 deletion src/main/cpp/com_melloware_jintellitype_JIntellitype.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/main/java/com/melloware/jintellitype/JIntellitype.java
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public final class JIntellitype implements JIntellitypeConstants {
/**
* Handler is used by JNI code to keep different JVM instances separate
*/
private final int handler = 0;
private final long handler = 0;

/**
* Map containing key->keycode mapping
Expand Down

0 comments on commit 9791a53

Please sign in to comment.