summaryrefslogtreecommitdiffstats
path: root/macosx/tkMacOSXDialog.c
diff options
context:
space:
mode:
authordas <das>2005-09-10 14:54:17 (GMT)
committerdas <das>2005-09-10 14:54:17 (GMT)
commitb9cdc82d5a519ef9d27ee4bb737b1f4f8117b3de (patch)
treec5d114fa56aed882bdf4f126b2e1efcf0d19cb72 /macosx/tkMacOSXDialog.c
parent2fa6889f4c599bda43fd66dbc9d1c04870413e59 (diff)
downloadtk-b9cdc82d5a519ef9d27ee4bb737b1f4f8117b3de.zip
tk-b9cdc82d5a519ef9d27ee4bb737b1f4f8117b3de.tar.gz
tk-b9cdc82d5a519ef9d27ee4bb737b1f4f8117b3de.tar.bz2
* macosx/tkMacOSXMouseEvent.c (TkMacOSXProcessMouseEvent): check if
process is in front on MouseDown, otherwise request process activation from BringWindowForward() via new isFrontProcess param. * macosx/tkMacOSXCarbonEvents.c (TkMacOSXInitCarbonEvents): register our event handler on the dispatcher target for all carbon events of interest to TkAqua; this replaces event processing directly from the event queue and thus allows to capture events that are syntesized by Carbon and sent directly to the dispatcher and not to the event queue. * macosx/tkMacOSXEvent.c: remove TkMacOSXCountAndProcessMacEvents(), rename ReceiveAndProcessEvent() to TkMacOSXReceiveAndProcessEvent(). (TkMacOSXReceiveAndProcessEvent): remove tk event processing before sending events to the dispatcher, all events of interest are now processed in our dispatcher target event handler. * macosx/tkMacOSXNotify.c (CarbonEventsCheckProc): dispatch events directly via TkMacOSXReceiveAndProcessEvent(), but dispatch no more than four carbon events at one time to avoid starving other event sources. * macosx/tkMacOSXEvent.c: formatting cleanup, move XSync() to XStubs, * macosx/tkMacOSXEvent.h: removed obsolete kEventClassWish handling. * macosx/tkMacOSXXStubs.c * macosx/tkMacOSXButton.c: conditionalize all debug message printing to * macosx/tkMacOSXCursor.c: stderr via TK_MAC_DEBUG define. * macosx/tkMacOSXDebug.c: * macosx/tkMacOSXDebug.h: * macosx/tkMacOSXDialog.c: * macosx/tkMacOSXEvent.c: * macosx/tkMacOSXInit.c: * macosx/tkMacOSXKeyEvent.c: * macosx/tkMacOSXMenu.c: * macosx/tkMacOSXMenubutton.c: * macosx/tkMacOSXScale.c: * macosx/tkMacOSXWindowEvent.c: * macosx/tkMacOSXWm.c: * unix/configure.in: define TK_MAC_DEBUG on aqua when symbols enabled. * unix/configure: autoconf-2.13 * library/listbox.tcl: corrected comments. * library/text.tcl: * xlib/xcolors.c: fixed warning
Diffstat (limited to 'macosx/tkMacOSXDialog.c')
-rw-r--r--macosx/tkMacOSXDialog.c54
1 files changed, 36 insertions, 18 deletions
diff --git a/macosx/tkMacOSXDialog.c b/macosx/tkMacOSXDialog.c
index bc7b3c8..37d07f6 100644
--- a/macosx/tkMacOSXDialog.c
+++ b/macosx/tkMacOSXDialog.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacOSXDialog.c,v 1.4.2.7 2005/08/23 22:08:27 hobbs Exp $
+ * RCS: @(#) $Id: tkMacOSXDialog.c,v 1.4.2.8 2005/09/10 14:54:17 das Exp $
*/
#include <Carbon/Carbon.h>
@@ -19,10 +19,10 @@
#include "tkFileFilter.h"
#ifndef StrLength
-#define StrLength(s) (*((unsigned char *) (s)))
+#define StrLength(s) (*((unsigned char *) (s)))
#endif
#ifndef StrBody
-#define StrBody(s) ((char *) (s) + 1)
+#define StrBody(s) ((char *) (s) + 1)
#endif
/*
@@ -47,14 +47,12 @@
* information about the file dialog and the file filters.
*/
typedef struct _OpenFileData {
- FileFilterList fl; /* List of file filters. */
- SInt16 curType; /* The filetype currently being
- * listed. */
- short popupItem; /* Item number of the popup in the
- * dialog. */
- int usePopup; /* True if we show the popup menu (this
- * is an open operation and the
- * -filetypes option is set). */
+ FileFilterList fl; /* List of file filters. */
+ SInt16 curType; /* The filetype currently being listed. */
+ short popupItem; /* Item number of the popup in the dialog. */
+ int usePopup; /* True if we show the popup menu (this is
+ * an open operation and the -filetypes
+ * option is set). */
} OpenFileData;
@@ -755,24 +753,24 @@ NavServicesGetFile(
diagOptions.optionFlags += kNavAllowMultipleFiles;
}
diagOptions.modality = kWindowModalityAppModal;
-
+
if (ofdPtr != NULL && ofdPtr->usePopup) {
FileFilter *filterPtr;
-
+
filterPtr = ofdPtr->fl.filters;
if (filterPtr == NULL) {
ofdPtr->usePopup = 0;
}
}
-
- if (ofdPtr != NULL && ofdPtr->usePopup) {
+
+ if (ofdPtr != NULL && ofdPtr->usePopup) {
FileFilter *filterPtr;
int index = 0;
ofdPtr->curType = 0;
-
+
menuItemNames = (CFStringRef *)ckalloc(ofdPtr->fl.numFilters
* sizeof(CFStringRef));
-
+
for (filterPtr = ofdPtr->fl.filters; filterPtr != NULL;
filterPtr = filterPtr->next, index++) {
menuItemNames[index] = CFStringCreateWithCString(NULL,
@@ -780,7 +778,7 @@ NavServicesGetFile(
}
diagOptions.popupExtension = CFArrayCreate(NULL,
(const void **) menuItemNames, ofdPtr->fl.numFilters, NULL);
- } else {
+ } else {
diagOptions.optionFlags += kNavNoTypePopup;
diagOptions.popupExtension = NULL;
}
@@ -820,21 +818,27 @@ NavServicesGetFile(
ofdPtr,
&dialogRef);
if (err != noErr) {
+#ifdef TK_MAC_DEBUG
fprintf(stderr,"NavCreateGetFileDialog failed, %d\n", err );
+#endif
dialogRef = NULL;
}
} else if (isOpen == SAVE_FILE) {
err = NavCreatePutFileDialog(&diagOptions, 'TEXT', 'WIsH',
openFileEventUPP, NULL, &dialogRef);
if (err!=noErr){
+#ifdef TK_MAC_DEBUG
fprintf(stderr,"NavCreatePutFileDialog failed, %d\n", err );
+#endif
dialogRef = NULL;
}
} else if (isOpen == CHOOSE_FOLDER) {
err = NavCreateChooseFolderDialog(&diagOptions, openFileEventUPP,
openFileFilterUPP, NULL, &dialogRef);
if (err!=noErr){
+#ifdef TK_MAC_DEBUG
fprintf(stderr,"NavCreateChooseFolderDialog failed, %d\n", err );
+#endif
dialogRef = NULL;
}
}
@@ -849,10 +853,14 @@ NavServicesGetFile(
}
if ((err = NavDialogRun(dialogRef)) != noErr ){
+#ifdef TK_MAC_DEBUG
fprintf(stderr,"NavDialogRun failed, %d\n", err );
+#endif
} else {
if ((err = NavDialogGetReply(dialogRef, &theReply)) != noErr) {
+#ifdef TK_MAC_DEBUG
fprintf(stderr,"NavGetReply failed, %d\n", err );
+#endif
}
}
}
@@ -887,10 +895,14 @@ NavServicesGetFile(
if (err == noErr) {
if ((err = AEGetDescData(&resultDesc, &fsRef, sizeof(fsRef)))
!= noErr ) {
+#ifdef TK_MAC_DEBUG
fprintf(stderr,"AEGetDescData failed %d\n", err );
+#endif
} else {
if ((err = FSRefMakePath(&fsRef, (unsigned char*) pathPtr, 1024))) {
+#ifdef TK_MAC_DEBUG
fprintf(stderr,"FSRefMakePath failed, %d\n", err );
+#endif
} else {
if (isOpen == SAVE_FILE) {
CFStringRef saveNameRef;
@@ -903,13 +915,19 @@ NavServicesGetFile(
strcat(pathPtr, saveName);
pathValid = 1;
} else {
+#ifdef TK_MAC_DEBUG
fprintf(stderr, "Path name too long\n");
+#endif
}
} else {
+#ifdef TK_MAC_DEBUG
fprintf(stderr, "CFStringGetCString failed\n");
+#endif
}
} else {
+#ifdef TK_MAC_DEBUG
fprintf(stderr, "NavDialogGetSaveFileName failed\n");
+#endif
}
} else {
pathValid = 1;