mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-06 14:00:55 +03:00
Update new and delete FlatWndProc.cpp
This commit is contained in:
@@ -99,15 +99,24 @@ HWND FlatWndProc::install( JNIEnv *env, jobject obj, jobject window ) {
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// create HWND map
|
// create HWND map
|
||||||
if( hwndMap == NULL )
|
if( hwndMap == NULL ) {
|
||||||
hwndMap = new HWNDMap();
|
HWNDMap* newHwndMap = new (FlatLafNoThrow) HWNDMap();
|
||||||
|
if(newHwndMap == NULL) {
|
||||||
|
return 0;
|
||||||
|
} else if(!newHwndMap->isTableAllocated()) {
|
||||||
|
FlatLafWin32ProcessHeapFree(newHwndMap);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
hwndMap = newHwndMap;
|
||||||
|
}
|
||||||
|
|
||||||
// get window handle
|
// get window handle
|
||||||
HWND hwnd = getWindowHandle( env, window );
|
HWND hwnd = getWindowHandle( env, window );
|
||||||
if( hwnd == NULL || hwndMap->get( hwnd ) != NULL )
|
if( hwnd == NULL || hwndMap->get( hwnd ) != NULL )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
FlatWndProc* fwp = new FlatWndProc();
|
FlatWndProc* fwp = new (FlatLafNoThrow) FlatWndProc();
|
||||||
env->GetJavaVM( &fwp->jvm );
|
env->GetJavaVM( &fwp->jvm );
|
||||||
fwp->obj = env->NewGlobalRef( obj );
|
fwp->obj = env->NewGlobalRef( obj );
|
||||||
fwp->hwnd = hwnd;
|
fwp->hwnd = hwnd;
|
||||||
@@ -140,7 +149,7 @@ void FlatWndProc::uninstall( JNIEnv *env, jobject obj, HWND hwnd ) {
|
|||||||
env->DeleteGlobalRef( fwp->obj );
|
env->DeleteGlobalRef( fwp->obj );
|
||||||
if( fwp->background != NULL )
|
if( fwp->background != NULL )
|
||||||
::DeleteObject( fwp->background );
|
::DeleteObject( fwp->background );
|
||||||
delete fwp;
|
FlatLafWin32ProcessHeapDelete(fwp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlatWndProc::initIDs( JNIEnv *env, jobject obj ) {
|
void FlatWndProc::initIDs( JNIEnv *env, jobject obj ) {
|
||||||
@@ -298,7 +307,7 @@ LRESULT FlatWndProc::WmDestroy( HWND hwnd, int uMsg, WPARAM wParam, LPARAM lPara
|
|||||||
if( background != NULL )
|
if( background != NULL )
|
||||||
::DeleteObject( background );
|
::DeleteObject( background );
|
||||||
hwndMap->remove( hwnd );
|
hwndMap->remove( hwnd );
|
||||||
delete this;
|
FlatLafWin32ProcessHeapFree(this);
|
||||||
|
|
||||||
// call original AWT window procedure because it may fire window closed event in AwtWindow::WmDestroy()
|
// call original AWT window procedure because it may fire window closed event in AwtWindow::WmDestroy()
|
||||||
return ::CallWindowProc( defaultWndProc2, hwnd, uMsg, wParam, lParam );
|
return ::CallWindowProc( defaultWndProc2, hwnd, uMsg, wParam, lParam );
|
||||||
|
|||||||
Reference in New Issue
Block a user