#BUGFIX by sr
class: WinWorkstation
comment/format in: #nativeFileDialogWithTitle:defaultFilename:owningViewId:filterString:filterIndex:doSave:
changed:
#primCloseNativeFileDialogByDataAddress:threadHandleAddress:
#primNativeFileDialogWithTitle:defaultFilename:owningViewId:filterString:filterIndex:doSave:
--- a/WinWorkstation.st Mon Oct 22 15:05:08 2018 +0200
+++ b/WinWorkstation.st Mon Oct 22 15:13:04 2018 +0200
@@ -16595,7 +16595,7 @@
'expecco Logfile', null, '*.elf', null,
null
filterIndex:2
- doSave:false.
+ doSave:false.
########### example2 without owning view and termination ##########
@@ -16619,7 +16619,7 @@
Delay waitForSeconds:5.
- p terminate.
+ p terminate.
########### example2 with owning view (makes the launcher modal) ##########
@@ -16638,7 +16638,7 @@
'expecco Logfile', null, '*.elf', null,
null
filterIndex:2
- doSave:false.
+ doSave:false.
########### example3 with owning view (makes the launcher modal) and termination ##########
@@ -16664,11 +16664,11 @@
Delay waitForSeconds:5.
- p terminate.
+ p terminate.
"
"Created: / 22-10-2018 / 11:20:31 / sr"
- "Modified (comment): / 22-10-2018 / 14:03:20 / sr"
+ "Modified (comment): / 22-10-2018 / 15:12:56 / sr"
!
primCloseNativeFileDialogByDataAddress:dataAddress
@@ -16680,12 +16680,12 @@
%{ /* STACK: 100000 */
if (__isExternalAddress(dataAddress)) {
- fileDialogData *pFdd = __externalAddressVal(dataAddress);
- DWORD fileDialogThreadId = pFdd->fileDialogThreadId;
-
- if (fileDialogThreadId != 0) {
+ fileDialogData *pFdd = __externalAddressVal(dataAddress);
+ DWORD fileDialogThreadId = pFdd->fileDialogThreadId;
+
+ if (fileDialogThreadId != 0) {
EnumWindows(enumWindowsToFindAndDestroyFileDialogProc, fileDialogThreadId);
- }
+ }
if (__isExternalAddress(threadHandleAddress)) {
HANDLE fileDialogThread = _HWNDVal(threadHandleAddress);
TerminateThread(fileDialogThread, 0);
@@ -16697,6 +16697,7 @@
%}.
"Created: / 22-10-2018 / 13:53:02 / sr"
+ "Modified: / 22-10-2018 / 15:07:54 / sr"
!
primGetNativeFileDialogResultByDataAddress:dataAddress
@@ -16735,38 +16736,38 @@
%{ /* STACK: 100000 */
int i;
- fileDialogData *pFileDialogData = malloc(sizeof(fileDialogData));
- ZeroMemory(pFileDialogData, sizeof(fileDialogData));
+ fileDialogData *pFdd = malloc(sizeof(fileDialogData));
+ ZeroMemory(pFdd, sizeof(fileDialogData));
if (__isUnicode16String(defaultFilename)) {
for (i = 0; i < __unicode16StringSize(defaultFilename); i++) {
- pFileDialogData->filename[i] = __unicode16StringVal(defaultFilename)[i];
+ pFdd->filename[i] = __unicode16StringVal(defaultFilename)[i];
}
- pFileDialogData->filename[i] = 0;
+ pFdd->filename[i] = 0;
};
if (__isUnicode16String(dialogTitle)) {
for (i = 0; i < __unicode16StringSize(dialogTitle); i++) {
- pFileDialogData->title[i] = __unicode16StringVal(dialogTitle)[i];
+ pFdd->title[i] = __unicode16StringVal(dialogTitle)[i];
}
- pFileDialogData->title[i] = 0;
+ pFdd->title[i] = 0;
};
if (__isExternalAddress(owningViewId)) {
- pFileDialogData->owningWindow = _HWNDVal(owningViewId);
+ pFdd->owningWindow = _HWNDVal(owningViewId);
};
if (__isUnicode16String(filterString)) {
for (i = 0; i < __unicode16StringSize(filterString); i++) {
- pFileDialogData->filter[i] = __unicode16StringVal(filterString)[i];
+ pFdd->filter[i] = __unicode16StringVal(filterString)[i];
}
- pFileDialogData->filter[i] = 0;
+ pFdd->filter[i] = 0;
};
if (__isInteger(filterIndexArg)) {
- pFileDialogData->filterIndex = filterIndexArg;
- }
- pFileDialogData->trueForSave = doSave == true;
- pFileDialogData->fileDialogDidReturn = FALSE;
-
- fileDialogDataAddress = __MKEXTERNALADDRESS(pFileDialogData);
- fileDialogThreadHandle = __MKEXTERNALADDRESS(openFileDialogInNewThread(pFileDialogData));
+ pFdd->filterIndex = filterIndexArg;
+ }
+ pFdd->trueForSave = doSave == true;
+ pFdd->fileDialogDidReturn = FALSE;
+
+ fileDialogDataAddress = __MKEXTERNALADDRESS(pFdd);
+ fileDialogThreadHandle = __MKEXTERNALADDRESS(openFileDialogInNewThread(pFdd));
%}.
^ Array
@@ -16774,6 +16775,7 @@
with:fileDialogThreadHandle
"Created: / 22-10-2018 / 13:31:46 / sr"
+ "Modified: / 22-10-2018 / 15:11:47 / sr"
! !
!WinWorkstation methodsFor:'native widget support'!