Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,7 @@
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.function.Predicate;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.Timer;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.EventListenerList;
Expand Down Expand Up @@ -80,6 +78,7 @@ class FlatWindowsNativeWindowBorder
private boolean colorizationColorAffectsBorders;
private Color colorizationColor;
private int colorizationColorBalance;
private boolean isMovingOrSizing;

private static FlatWindowsNativeWindowBorder instance;

Expand Down Expand Up @@ -223,6 +222,19 @@ private void updateColorization() {
colorizationColorBalance = registryGetIntValue( subKey, "ColorizationColorBalance", -1 );
}

protected void updateIsMovingOrSizingValue( boolean isMovingOrSizing ) {
boolean oldValue = this.isMovingOrSizing;
this.isMovingOrSizing = isMovingOrSizing;

if(oldValue != isMovingOrSizing){
fireStateChanged();
}
}

public boolean isMovingOrSizing() {
return isMovingOrSizing;
}

private native static int registryGetIntValue( String key, String valueName, int defaultValue );

@Override
Expand Down Expand Up @@ -435,5 +447,11 @@ private boolean isFullscreen() {
private void fireStateChangedLaterOnce() {
FlatWindowsNativeWindowBorder.this.fireStateChangedLaterOnce();
}

private void setIsMovingOrSizing( boolean isMovingOrSizing ) {
EventQueue.invokeLater(() ->
FlatWindowsNativeWindowBorder.this.updateIsMovingOrSizingValue( isMovingOrSizing )
);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ int FlatWndProc::initialized = 0;
jmethodID FlatWndProc::onNcHitTestMID;
jmethodID FlatWndProc::isFullscreenMID;
jmethodID FlatWndProc::fireStateChangedLaterOnceMID;
jmethodID FlatWndProc::setIsMovingOrSizingMID;

HWNDMap* FlatWndProc::hwndMap;
DWORD FlatWndProc::osBuildNumber = 0;
Expand Down Expand Up @@ -175,11 +176,13 @@ void FlatWndProc::initIDs( JNIEnv *env, jobject obj ) {
onNcHitTestMID = env->GetMethodID( cls, "onNcHitTest", "(IIZ)I" );
isFullscreenMID = env->GetMethodID( cls, "isFullscreen", "()Z" );
fireStateChangedLaterOnceMID = env->GetMethodID( cls, "fireStateChangedLaterOnce", "()V" );
setIsMovingOrSizingMID = env->GetMethodID( cls, "setIsMovingOrSizing", "(Z)V" );

// check whether all IDs were found
if( onNcHitTestMID != NULL &&
isFullscreenMID != NULL &&
fireStateChangedLaterOnceMID != NULL )
fireStateChangedLaterOnceMID != NULL &&
setIsMovingOrSizingMID != NULL )
initialized = 1;
}

Expand Down Expand Up @@ -276,10 +279,12 @@ LRESULT CALLBACK FlatWndProc::WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, L

case WM_ENTERSIZEMOVE:
isMovingOrSizing = true;
setIsMovingOrSizing ( true );
break;

case WM_EXITSIZEMOVE:
isMovingOrSizing = isMoving = false;
setIsMovingOrSizing ( false );
break;

case WM_MOVE:
Expand Down Expand Up @@ -522,6 +527,14 @@ void FlatWndProc::fireStateChangedLaterOnce() {
env->CallVoidMethod( obj, fireStateChangedLaterOnceMID );
}

void FlatWndProc::setIsMovingOrSizing( boolean isMovingOrSizing ) {
JNIEnv* env = getEnv();
if( env == NULL )
return;

env->CallIntMethod( obj, setIsMovingOrSizingMID, (jboolean) isMovingOrSizing );
}

// similar to JNU_GetEnv() in jni_util.c
JNIEnv* FlatWndProc::getEnv() {
if( env != NULL )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class FlatWndProc
static jmethodID onNcHitTestMID;
static jmethodID isFullscreenMID;
static jmethodID fireStateChangedLaterOnceMID;
static jmethodID setIsMovingOrSizingMID;

static HWNDMap* hwndMap;
static DWORD osBuildNumber;
Expand Down Expand Up @@ -63,6 +64,7 @@ class FlatWndProc
BOOL isFullscreen();
int onNcHitTest( int x, int y, boolean isOnResizeBorder );
void fireStateChangedLaterOnce();
void setIsMovingOrSizing( boolean isMovingOrSizing );
JNIEnv* getEnv();

void sendMessageToClientArea( HWND hwnd, int uMsg, LPARAM lParam );
Expand Down