annotate mac/dw.m @ 2070:370baf78abdc

Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 15 May 2020 01:19:55 +0000
parents 3ccd0da07514
children c2f13c5eefac
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2 * Dynamic Windows:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3 * A GTK like implementation of the MacOS GUI using Cocoa
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4 *
2067
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
5 * (C) 2011-2020 Brian Smith <brian@dbsoft.org>
1938
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6 * (C) 2011-2018 Mark Hessling <mark@rexx.org>
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7 *
1774
4cc999e757a3 Check for pointerArrayWithWeakObjects before weakObjectsPointerArray on Mac
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1773
diff changeset
8 * Requires 10.5 or later.
942
3c9dfb004df6 Minor change to the build comment.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 941
diff changeset
9 * clang -std=c99 -g -o dwtest -D__MAC__ -I. dwtest.c mac/dw.m -framework Cocoa -framework WebKit
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11 #import <Cocoa/Cocoa.h>
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
12 #import <WebKit/WebKit.h>
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
13 #include "dw.h"
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
14 #include <sys/utsname.h>
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
15 #include <sys/socket.h>
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
16 #include <sys/un.h>
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
17 #include <sys/mman.h>
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
18 #include <sys/time.h>
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
19 #include <sys/stat.h>
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
20 #include <math.h>
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
21
1956
2924bc788170 Mac: Added code to avoid unused variable/parameter warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1955
diff changeset
22 /* This may move to dw.h for use on all platforms in the future */
2924bc788170 Mac: Added code to avoid unused variable/parameter warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1955
diff changeset
23 #define __DW_UNUSED__ __attribute__((unused))
2924bc788170 Mac: Added code to avoid unused variable/parameter warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1955
diff changeset
24
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
25 /* Create a define to let us know to include Snow Leopard specific features */
1740
2d44ca344863 Test fix for warnings generated in Xcode 4.3... hopefully this still allows 10.5 builds to work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1719
diff changeset
26 #if defined(MAC_OS_X_VERSION_10_6) && ((defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6) || !defined(MAC_OS_X_VERSION_MAX_ALLOWED))
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
27 #define BUILDING_FOR_SNOW_LEOPARD
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
28 #endif
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
29
1994
4c53c8367a12 Mac: Some minor code cleanup in the SDK section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1993
diff changeset
30 /* Create a define to let us know to include Lion specific features */
1924
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
31 #if defined(MAC_OS_X_VERSION_10_7) && ((defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7) || !defined(MAC_OS_X_VERSION_MAX_ALLOWED))
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
32 #define BUILDING_FOR_LION
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
33 #endif
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
34
2067
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
35 /* Create a define to let us know to include Mountain Lion specific features */
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
36 #if defined(MAC_OS_X_VERSION_10_8) && ((defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8) || !defined(MAC_OS_X_VERSION_MAX_ALLOWED))
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
37 #define BUILDING_FOR_MOUNTAIN_LION
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
38 #endif
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
39
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
40 /* Macros to handle local auto-release pools */
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
41 #define DW_LOCAL_POOL_IN NSAutoreleasePool *localpool = nil; \
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
42 if(DWThread != (DWTID)-1 && pthread_self() != DWThread) \
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
43 localpool = [[NSAutoreleasePool alloc] init];
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
44 #define DW_LOCAL_POOL_OUT if(localpool) [localpool drain];
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
45
1904
2e456850e027 Minor fix for that last commit... code actually works now. ;)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1903
diff changeset
46 /* Handle deprecation of several constants in 10.10...
1903
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
47 * the replacements are not available in earlier versions.
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
48 */
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
49 #if defined(MAC_OS_X_VERSION_10_10) && ((defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_10) || !defined(MAC_OS_X_VERSION_MAX_ALLOWED))
1903
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
50 #define DWModalResponseOK NSModalResponseOK
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
51 #define DWModalResponseCancel NSModalResponseCancel
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
52 #define DWPaperOrientationPortrait NSPaperOrientationPortrait
2004
ebbdb2120659 Mac: Fix building on 10.9 and earlier due to changed constant names.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2002
diff changeset
53 #define DWCalendarUnitDay NSCalendarUnitDay
ebbdb2120659 Mac: Fix building on 10.9 and earlier due to changed constant names.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2002
diff changeset
54 #define DWCalendarUnitMonth NSCalendarUnitMonth
ebbdb2120659 Mac: Fix building on 10.9 and earlier due to changed constant names.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2002
diff changeset
55 #define DWCalendarUnitYear NSCalendarUnitYear
ebbdb2120659 Mac: Fix building on 10.9 and earlier due to changed constant names.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2002
diff changeset
56 #define DWCalendarIdentifierGregorian NSCalendarIdentifierGregorian
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
57 #define BUILDING_FOR_YOSEMITE
1903
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
58 #else
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
59 #define DWModalResponseOK NSOKButton
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
60 #define DWModalResponseCancel NSCancelButton
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
61 #define DWPaperOrientationPortrait NSPortraitOrientation
2004
ebbdb2120659 Mac: Fix building on 10.9 and earlier due to changed constant names.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2002
diff changeset
62 #define DWCalendarUnitDay NSDayCalendarUnit
ebbdb2120659 Mac: Fix building on 10.9 and earlier due to changed constant names.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2002
diff changeset
63 #define DWCalendarUnitMonth NSMonthCalendarUnit
ebbdb2120659 Mac: Fix building on 10.9 and earlier due to changed constant names.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2002
diff changeset
64 #define DWCalendarUnitYear NSYearCalendarUnit
ebbdb2120659 Mac: Fix building on 10.9 and earlier due to changed constant names.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2002
diff changeset
65 #define DWCalendarIdentifierGregorian (NSString *)kCFGregorianCalendar
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
66 #endif
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
67
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
68 /* Handle deprecation of several constants in 10.12...
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
69 * the replacements are not available in earlier versions.
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
70 */
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
71 #if defined(MAC_OS_X_VERSION_10_12) && ((defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12) || !defined(MAC_OS_X_VERSION_MAX_ALLOWED))
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
72 #define DWButtonTypeSwitch NSButtonTypeSwitch
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
73 #define DWButtonTypeRadio NSButtonTypeRadio
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
74 #define DWButtonTypeMomentaryPushIn NSButtonTypeMomentaryPushIn
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
75 #define DWBezelStyleRegularSquare NSBezelStyleRegularSquare
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
76 #define DWBezelStyleRounded NSBezelStyleRounded
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
77 #define DWEventTypeApplicationDefined NSEventTypeApplicationDefined
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
78 #define DWCompositingOperationSourceOver NSCompositingOperationSourceOver
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
79 #define DWEventTypeKeyDown NSEventTypeKeyDown
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
80 #define DWEventModifierFlagControl NSEventModifierFlagControl
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
81 #define DWEventModifierFlagCommand NSEventModifierFlagCommand
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
82 #define DWEventModifierFlagOption NSEventModifierFlagOption
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
83 #define DWEventTypeRightMouseDown NSEventTypeRightMouseDown
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
84 #define DWEventTypeRightMouseUp NSEventTypeRightMouseUp
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
85 #define DWEventTypeLeftMouseDown NSEventTypeLeftMouseDown
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
86 #define DWEventTypeLeftMouseUp NSEventTypeLeftMouseUp
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
87 #define DWEventTypeOtherMouseDown NSEventTypeOtherMouseDown
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
88 #define DWEventTypeOtherMouseUp NSEventTypeOtherMouseUp
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
89 #define DWEventModifierFlagDeviceIndependentFlagsMask NSEventModifierFlagDeviceIndependentFlagsMask
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
90 #define DWEventMaskAny NSEventMaskAny
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
91 #define DWAlertStyleCritical NSAlertStyleCritical
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
92 #define DWAlertStyleInformational NSAlertStyleInformational
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
93 #define DWAlertStyleWarning NSAlertStyleWarning
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
94 #define DWTextAlignmentCenter NSTextAlignmentCenter
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
95 #define DWTextAlignmentRight NSTextAlignmentRight
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
96 #define DWTextAlignmentLeft NSTextAlignmentLeft
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
97 #define DWEventMaskLeftMouseUp NSEventMaskLeftMouseUp
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
98 #define DWEventMaskLeftMouseDown NSEventMaskLeftMouseDown
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
99 #define DWEventMaskRightMouseUp NSEventMaskRightMouseUp
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
100 #define DWEventMaskRightMouseDown NSEventMaskRightMouseDown
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
101 #define DWWindowStyleMaskResizable NSWindowStyleMaskResizable
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
102 #define BUILDING_FOR_SIERRA
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
103 #else
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
104 #define DWButtonTypeSwitch NSSwitchButton
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
105 #define DWButtonTypeRadio NSRadioButton
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
106 #define DWButtonTypeMomentaryPushIn NSMomentaryPushInButton
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
107 #define DWBezelStyleRegularSquare NSRegularSquareBezelStyle
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
108 #define DWBezelStyleRounded NSRoundedBezelStyle
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
109 #define DWEventTypeApplicationDefined NSApplicationDefined
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
110 #define DWCompositingOperationSourceOver NSCompositeSourceOver
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
111 #define DWEventTypeKeyDown NSKeyDown
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
112 #define DWEventModifierFlagControl NSControlKeyMask
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
113 #define DWEventModifierFlagCommand NSCommandKeyMask
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
114 #define DWEventModifierFlagOption NSAlternateKeyMask
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
115 #define DWEventTypeRightMouseDown NSRightMouseDown
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
116 #define DWEventTypeRightMouseUp NSRightMouseUp
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
117 #define DWEventTypeLeftMouseDown NSLeftMouseDown
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
118 #define DWEventTypeLeftMouseUp NSLeftMouseUp
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
119 #define DWEventTypeOtherMouseDown NSOtherMouseDown
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
120 #define DWEventTypeOtherMouseUp NSOtherMouseUp
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
121 #define DWEventModifierFlagDeviceIndependentFlagsMask NSDeviceIndependentModifierFlagsMask
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
122 #define DWEventMaskAny NSAnyEventMask
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
123 #define DWAlertStyleCritical NSCriticalAlertStyle
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
124 #define DWAlertStyleInformational NSInformationalAlertStyle
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
125 #define DWAlertStyleWarning NSWarningAlertStyle
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
126 #define DWTextAlignmentCenter NSCenterTextAlignment
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
127 #define DWTextAlignmentRight NSRightTextAlignment
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
128 #define DWTextAlignmentLeft NSLeftTextAlignment
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
129 #define DWEventMaskLeftMouseUp NSLeftMouseUpMask
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
130 #define DWEventMaskLeftMouseDown NSLeftMouseDownMask
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
131 #define DWEventMaskRightMouseUp NSRightMouseUpMask
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
132 #define DWEventMaskRightMouseDown NSRightMouseDownMask
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
133 #define DWWindowStyleMaskResizable NSResizableWindowMask
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
134 #endif
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
135
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
136 /* Handle deprecation of several constants in 10.13...
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
137 * the replacements are not available in earlier versions.
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
138 */
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
139 #if defined(MAC_OS_X_VERSION_10_13) && ((defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_13) || !defined(MAC_OS_X_VERSION_MAX_ALLOWED))
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
140 #define DWControlStateValueOff NSControlStateValueOff
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
141 #define DWControlStateValueOn NSControlStateValueOn
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
142 #define BUILDING_FOR_HIGH_SIERRA
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
143 #else
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
144 #define DWControlStateValueOff NSOffState
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
145 #define DWControlStateValueOn NSOnState
1903
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
146 #endif
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
147
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
148 /* Handle deprecation of several constants in 10.14...
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
149 * the replacements are not available in earlier versions.
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
150 */
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
151 #if defined(MAC_OS_X_VERSION_10_14) && ((defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_14) || !defined(MAC_OS_X_VERSION_MAX_ALLOWED))
1941
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
152 #define DWProgressIndicatorStyleBar NSProgressIndicatorStyleBar
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
153 #define BUILDING_FOR_MOJAVE
2067
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
154 #import <UserNotifications/UserNotifications.h>
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
155 #else
1941
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
156 #define DWProgressIndicatorStyleBar NSProgressIndicatorBarStyle
1952
8ce5c562348f Mac: Attempting a better WKWebKit fix, use the WK_API_ENABLED constant to determine if the API is available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1951
diff changeset
157 #endif
8ce5c562348f Mac: Attempting a better WKWebKit fix, use the WK_API_ENABLED constant to determine if the API is available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1951
diff changeset
158
1994
4c53c8367a12 Mac: Some minor code cleanup in the SDK section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1993
diff changeset
159 /* Handle deprecation of constants in 10.15... */
1993
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
160 #if defined(MAC_OS_X_VERSION_10_15) && ((defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_15) || !defined(MAC_OS_X_VERSION_MAX_ALLOWED))
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
161 #define BUILDING_FOR_CATALINA
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
162 #define WK_API_ENABLED 1
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
163 #endif
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
164
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
165 /* Macros to encapsulate running functions on the main thread
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
166 * on Mojave or later... and locking mutexes on earlier versions.
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
167 */
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
168 #ifdef BUILDING_FOR_MOJAVE
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
169 #define DW_FUNCTION_INIT
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
170 #define DW_FUNCTION_DEFINITION(func, rettype, ...) void _##func(NSPointerArray *_args); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
171 rettype API func(__VA_ARGS__) { \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
172 DW_LOCAL_POOL_IN; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
173 NSPointerArray *_args = [[NSPointerArray alloc] initWithOptions:NSPointerFunctionsOpaqueMemory]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
174 [_args addPointer:(void *)_##func];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
175 #define DW_FUNCTION_ADD_PARAM1(param1) [_args addPointer:(void *)&param1];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
176 #define DW_FUNCTION_ADD_PARAM2(param1, param2) [_args addPointer:(void *)&param1]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
177 [_args addPointer:(void *)&param2];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
178 #define DW_FUNCTION_ADD_PARAM3(param1, param2, param3) [_args addPointer:(void *)&param1]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
179 [_args addPointer:(void *)&param2]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
180 [_args addPointer:(void *)&param3];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
181 #define DW_FUNCTION_ADD_PARAM4(param1, param2, param3, param4) [_args addPointer:(void *)&param1]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
182 [_args addPointer:(void *)&param2]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
183 [_args addPointer:(void *)&param3]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
184 [_args addPointer:(void *)&param4];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
185 #define DW_FUNCTION_ADD_PARAM5(param1, param2, param3, param4, param5) [_args addPointer:(void *)&param1]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
186 [_args addPointer:(void *)&param2]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
187 [_args addPointer:(void *)&param3]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
188 [_args addPointer:(void *)&param4]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
189 [_args addPointer:(void *)&param5];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
190 #define DW_FUNCTION_ADD_PARAM6(param1, param2, param3, param4, param5, param6) \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
191 [_args addPointer:(void *)&param1]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
192 [_args addPointer:(void *)&param2]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
193 [_args addPointer:(void *)&param3]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
194 [_args addPointer:(void *)&param4]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
195 [_args addPointer:(void *)&param5]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
196 [_args addPointer:(void *)&param6];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
197 #define DW_FUNCTION_ADD_PARAM7(param1, param2, param3, param4, param5, param6, param7) \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
198 [_args addPointer:(void *)&param1]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
199 [_args addPointer:(void *)&param2]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
200 [_args addPointer:(void *)&param3]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
201 [_args addPointer:(void *)&param4]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
202 [_args addPointer:(void *)&param5]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
203 [_args addPointer:(void *)&param6]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
204 [_args addPointer:(void *)&param7];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
205 #define DW_FUNCTION_ADD_PARAM8(param1, param2, param3, param4, param5, param6, param7, param8) \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
206 [_args addPointer:(void *)&param1]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
207 [_args addPointer:(void *)&param2]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
208 [_args addPointer:(void *)&param3]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
209 [_args addPointer:(void *)&param4]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
210 [_args addPointer:(void *)&param5]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
211 [_args addPointer:(void *)&param6]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
212 [_args addPointer:(void *)&param7]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
213 [_args addPointer:(void *)&param8];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
214 #define DW_FUNCTION_ADD_PARAM9(param1, param2, param3, param4, param5, param6, param7, param8, param9) \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
215 [_args addPointer:(void *)&param1]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
216 [_args addPointer:(void *)&param2]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
217 [_args addPointer:(void *)&param3]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
218 [_args addPointer:(void *)&param4]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
219 [_args addPointer:(void *)&param5]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
220 [_args addPointer:(void *)&param6]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
221 [_args addPointer:(void *)&param7]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
222 [_args addPointer:(void *)&param8]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
223 [_args addPointer:(void *)&param9];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
224 #define DW_FUNCTION_RESTORE_PARAM1(param1, vartype1) vartype1 param1 = *((vartype1 *)[_args pointerAtIndex:1]);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
225 #define DW_FUNCTION_RESTORE_PARAM2(param1, vartype1, param2, vartype2) \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
226 vartype1 param1 = *((vartype1 *)[_args pointerAtIndex:1]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
227 vartype2 param2 = *((vartype2 *)[_args pointerAtIndex:2]);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
228 #define DW_FUNCTION_RESTORE_PARAM3(param1, vartype1, param2, vartype2, param3, vartype3) \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
229 vartype1 param1 = *((vartype1 *)[_args pointerAtIndex:1]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
230 vartype2 param2 = *((vartype2 *)[_args pointerAtIndex:2]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
231 vartype3 param3 = *((vartype3 *)[_args pointerAtIndex:3]);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
232 #define DW_FUNCTION_RESTORE_PARAM4(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4) \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
233 vartype1 param1 = *((vartype1 *)[_args pointerAtIndex:1]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
234 vartype2 param2 = *((vartype2 *)[_args pointerAtIndex:2]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
235 vartype3 param3 = *((vartype3 *)[_args pointerAtIndex:3]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
236 vartype4 param4 = *((vartype4 *)[_args pointerAtIndex:4]);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
237 #define DW_FUNCTION_RESTORE_PARAM5(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5) \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
238 vartype1 param1 = *((vartype1 *)[_args pointerAtIndex:1]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
239 vartype2 param2 = *((vartype2 *)[_args pointerAtIndex:2]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
240 vartype3 param3 = *((vartype3 *)[_args pointerAtIndex:3]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
241 vartype4 param4 = *((vartype4 *)[_args pointerAtIndex:4]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
242 vartype5 param5 = *((vartype5 *)[_args pointerAtIndex:5]);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
243 #define DW_FUNCTION_RESTORE_PARAM6(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6) \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
244 vartype1 param1 = *((vartype1 *)[_args pointerAtIndex:1]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
245 vartype2 param2 = *((vartype2 *)[_args pointerAtIndex:2]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
246 vartype3 param3 = *((vartype3 *)[_args pointerAtIndex:3]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
247 vartype4 param4 = *((vartype4 *)[_args pointerAtIndex:4]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
248 vartype5 param5 = *((vartype5 *)[_args pointerAtIndex:5]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
249 vartype6 param6 = *((vartype6 *)[_args pointerAtIndex:6]);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
250 #define DW_FUNCTION_RESTORE_PARAM7(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7) \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
251 vartype1 param1 = *((vartype1 *)[_args pointerAtIndex:1]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
252 vartype2 param2 = *((vartype2 *)[_args pointerAtIndex:2]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
253 vartype3 param3 = *((vartype3 *)[_args pointerAtIndex:3]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
254 vartype4 param4 = *((vartype4 *)[_args pointerAtIndex:4]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
255 vartype5 param5 = *((vartype5 *)[_args pointerAtIndex:5]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
256 vartype6 param6 = *((vartype6 *)[_args pointerAtIndex:6]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
257 vartype7 param7 = *((vartype7 *)[_args pointerAtIndex:7]);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
258 #define DW_FUNCTION_RESTORE_PARAM8(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8) \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
259 vartype1 param1 = *((vartype1 *)[_args pointerAtIndex:1]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
260 vartype2 param2 = *((vartype2 *)[_args pointerAtIndex:2]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
261 vartype3 param3 = *((vartype3 *)[_args pointerAtIndex:3]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
262 vartype4 param4 = *((vartype4 *)[_args pointerAtIndex:4]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
263 vartype5 param5 = *((vartype5 *)[_args pointerAtIndex:5]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
264 vartype6 param6 = *((vartype6 *)[_args pointerAtIndex:6]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
265 vartype7 param7 = *((vartype7 *)[_args pointerAtIndex:7]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
266 vartype8 param8 = *((vartype8 *)[_args pointerAtIndex:8]);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
267 #define DW_FUNCTION_RESTORE_PARAM9(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8, param9, vartype9) \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
268 vartype1 param1 = *((vartype1 *)[_args pointerAtIndex:1]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
269 vartype2 param2 = *((vartype2 *)[_args pointerAtIndex:2]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
270 vartype3 param3 = *((vartype3 *)[_args pointerAtIndex:3]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
271 vartype4 param4 = *((vartype4 *)[_args pointerAtIndex:4]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
272 vartype5 param5 = *((vartype5 *)[_args pointerAtIndex:5]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
273 vartype6 param6 = *((vartype6 *)[_args pointerAtIndex:6]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
274 vartype7 param7 = *((vartype7 *)[_args pointerAtIndex:7]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
275 vartype8 param8 = *((vartype8 *)[_args pointerAtIndex:8]); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
276 vartype9 param9 = *((vartype9 *)[_args pointerAtIndex:9]);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
277 #define DW_FUNCTION_END }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
278 #define DW_FUNCTION_NO_RETURN(func) [DWObj safeCall:@selector(callBack:) withObject:_args]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
279 [_args release]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
280 DW_LOCAL_POOL_OUT; } \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
281 void _##func(NSPointerArray *_args) {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
282 #define DW_FUNCTION_RETURN(func, rettype) [DWObj safeCall:@selector(callBack:) withObject:_args]; {\
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
283 void *tmp = [_args pointerAtIndex:[_args count]-1]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
284 rettype myreturn = *((rettype *)tmp); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
285 free(tmp); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
286 return myreturn; } \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
287 [_args release]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
288 DW_LOCAL_POOL_OUT; } \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
289 void _##func(NSPointerArray *_args) {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
290 #define DW_FUNCTION_RETURN_THIS(_retvar) { void *_myreturn = malloc(sizeof(_retvar)); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
291 memcpy(_myreturn, (void *)&_retvar, sizeof(_retvar)); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
292 [_args addPointer:_myreturn]; }}
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
293 #define DW_FUNCTION_RETURN_NOTHING }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
294 #else
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
295 /* Macros to protect access to thread unsafe classes */
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
296 #define DW_FUNCTION_INIT int _locked_by_me = FALSE; { \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
297 if(DWThread != (DWTID)-1 && pthread_self() != DWThread && pthread_self() != _dw_mutex_locked) { \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
298 dw_mutex_lock(DWThreadMutex); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
299 _dw_mutex_locked = pthread_self(); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
300 dw_mutex_lock(DWThreadMutex2); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
301 [DWObj performSelectorOnMainThread:@selector(synchronizeThread:) withObject:nil waitUntilDone:NO]; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
302 dw_mutex_lock(DWRunMutex); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
303 _locked_by_me = TRUE; } }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
304 #define DW_FUNCTION_DEFINITION(func, rettype, ...) rettype API func(__VA_ARGS__)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
305 #define DW_FUNCTION_ADD_PARAM1(param1)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
306 #define DW_FUNCTION_ADD_PARAM2(param1, param2)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
307 #define DW_FUNCTION_ADD_PARAM3(param1, param2, param3)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
308 #define DW_FUNCTION_ADD_PARAM4(param1, param2, param3, param4)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
309 #define DW_FUNCTION_ADD_PARAM5(param1, param2, param3, param4, param5)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
310 #define DW_FUNCTION_ADD_PARAM6(param1, param2, param3, param4, param5, param6)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
311 #define DW_FUNCTION_ADD_PARAM7(param1, param2, param3, param4, param5, param6, param7)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
312 #define DW_FUNCTION_ADD_PARAM8(param1, param2, param3, param4, param5, param6, param7, param8)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
313 #define DW_FUNCTION_ADD_PARAM9(param1, param2, param3, param4, param5, param6, param7, param8, param9)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
314 #define DW_FUNCTION_RESTORE_PARAM1(param1, vartype1)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
315 #define DW_FUNCTION_RESTORE_PARAM2(param1, vartype1, param2, vartype2)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
316 #define DW_FUNCTION_RESTORE_PARAM3(param1, vartype1, param2, vartype2, param3, vartype3)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
317 #define DW_FUNCTION_RESTORE_PARAM4(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
318 #define DW_FUNCTION_RESTORE_PARAM5(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
319 #define DW_FUNCTION_RESTORE_PARAM6(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
320 #define DW_FUNCTION_RESTORE_PARAM7(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
321 #define DW_FUNCTION_RESTORE_PARAM8(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
322 #define DW_FUNCTION_RESTORE_PARAM9(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8, param9, vartype9)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
323 #define DW_FUNCTION_END
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
324 #define DW_FUNCTION_NO_RETURN(func)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
325 #define DW_FUNCTION_RETURN(func, rettype)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
326 #define DW_FUNCTION_RETURN_THIS(retvar) { \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
327 if(pthread_self() != DWThread && _locked_by_me == TRUE) { \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
328 dw_mutex_unlock(DWRunMutex); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
329 dw_mutex_unlock(DWThreadMutex2); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
330 _dw_mutex_locked = (pthread_t)-1; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
331 dw_mutex_unlock(DWThreadMutex); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
332 _locked_by_me = FALSE; } } \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
333 return retvar;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
334 #define DW_FUNCTION_RETURN_NOTHING { \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
335 if(pthread_self() != DWThread && _locked_by_me == TRUE) { \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
336 dw_mutex_unlock(DWRunMutex); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
337 dw_mutex_unlock(DWThreadMutex2); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
338 _dw_mutex_locked = (pthread_t)-1; \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
339 dw_mutex_unlock(DWThreadMutex); \
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
340 _locked_by_me = FALSE; } }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
341 HMTX DWRunMutex;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
342 HMTX DWThreadMutex;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
343 HMTX DWThreadMutex2;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
344 DWTID _dw_mutex_locked = (DWTID)-1;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
345 #endif
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
346
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
347 unsigned long _colors[] =
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
348 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
349 0x00000000, /* 0 black */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
350 0x000000bb, /* 1 red */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
351 0x0000bb00, /* 2 green */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
352 0x0000aaaa, /* 3 yellow */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
353 0x00cc0000, /* 4 blue */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
354 0x00bb00bb, /* 5 magenta */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
355 0x00bbbb00, /* 6 cyan */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
356 0x00bbbbbb, /* 7 white */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
357 0x00777777, /* 8 grey */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
358 0x000000ff, /* 9 bright red */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
359 0x0000ff00, /* 10 bright green */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
360 0x0000eeee, /* 11 bright yellow */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
361 0x00ff0000, /* 12 bright blue */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
362 0x00ff00ff, /* 13 bright magenta */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
363 0x00eeee00, /* 14 bright cyan */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
364 0x00ffffff, /* 15 bright white */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
365 0xff000000 /* 16 default color */
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
366 };
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
367
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
368 /*
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
369 * List those icons that have transparency first
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
370 */
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
371 #define NUM_EXTS 8
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
372 char *image_exts[NUM_EXTS] =
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
373 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
374 ".png",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
375 ".ico",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
376 ".icns",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
377 ".gif",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
378 ".jpg",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
379 ".jpeg",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
380 ".tiff",
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
381 ".bmp"
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
382 };
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
383
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
384 char *_dw_get_image_extension(const char *filename)
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
385 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
386 char *file = alloca(strlen(filename) + 6);
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
387 int found_ext = 0,i;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
388
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
389 /* Try various extentions */
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
390 for ( i = 0; i < NUM_EXTS; i++ )
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
391 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
392 strcpy( file, filename );
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
393 strcat( file, image_exts[i] );
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
394 if ( access( file, R_OK ) == 0 )
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
395 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
396 found_ext = 1;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
397 break;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
398 }
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
399 }
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
400 if ( found_ext == 1 )
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
401 {
940
b5ae9cf15f68 Fix for returning wrong extension in _dw_get_image_extension; only worked for .ico files
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 939
diff changeset
402 return image_exts[i];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
403 }
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
404 return NULL;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
405 }
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
406
1958
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
407 /* Return the RGB color regardless if a predefined color was passed */
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
408 unsigned long _get_color(unsigned long thiscolor)
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
409 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
410 if(thiscolor & DW_RGB_COLOR)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
411 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
412 return thiscolor & ~DW_RGB_COLOR;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
413 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
414 else if(thiscolor < 17)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
415 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
416 return _colors[thiscolor];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
417 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
418 return 0;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
419 }
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
420
1958
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
421 /* Returns TRUE of Mojave or later is in Dark Mode */
1984
09a102c92788 Mac: Fix building on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1983
diff changeset
422 BOOL _is_dark(id object)
1958
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
423 {
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
424 #ifdef BUILDING_FOR_MOJAVE
1984
09a102c92788 Mac: Fix building on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1983
diff changeset
425 NSAppearance *appearance = [object effectiveAppearance];
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
426
1958
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
427 if(@available(macOS 10.14, *))
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
428 {
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
429 NSAppearanceName basicAppearance = [appearance bestMatchFromAppearancesWithNames:@[
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
430 NSAppearanceNameAqua,
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
431 NSAppearanceNameDarkAqua]];
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
432 return [basicAppearance isEqualToString:NSAppearanceNameDarkAqua];
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
433 }
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
434 #endif
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
435 return NO;
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
436 }
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
437
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
438 /* Thread specific storage */
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
439 #if !defined(GARBAGE_COLLECT)
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
440 pthread_key_t _dw_pool_key;
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
441 #endif
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
442 pthread_key_t _dw_fg_color_key;
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
443 pthread_key_t _dw_bg_color_key;
1770
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
444 int DWOSMajor, DWOSMinor, DWOSBuild;
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
445 static char _dw_bundle_path[PATH_MAX+1] = { 0 };
2070
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
446 static char _dw_app_id[101]= {0};
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
447
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
448 /* Create a default colors for a thread */
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
449 void _init_colors(void)
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
450 {
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
451 NSColor *fgcolor = [[NSColor grayColor] retain];
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
452 pthread_setspecific(_dw_fg_color_key, fgcolor);
891
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
453 pthread_setspecific(_dw_bg_color_key, NULL);
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
454 }
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
455
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
456 typedef struct _sighandler
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
457 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
458 struct _sighandler *next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
459 ULONG message;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
460 HWND window;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
461 int id;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
462 void *signalfunction;
1853
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
463 void *discfunction;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
464 void *data;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
465
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
466 } SignalHandler;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
467
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
468 SignalHandler *Root = NULL;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
469
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
470 /* Some internal prototypes */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
471 static void _do_resize(Box *thisbox, int x, int y);
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
472 void _handle_resize_events(Box *thisbox);
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
473 int _remove_userdata(UserData **root, const char *varname, int all);
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
474 int _dw_main_iteration(NSDate *date);
1945
7af41bfd5190 Mac: Moved an internal prototype to be with the rest for consistency.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1944
diff changeset
475 NSGraphicsContext *_dw_draw_context(NSBitmapImageRep *image);
1993
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
476 typedef id (*DWIMP)(id, SEL, ...);
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
477
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
478 /* Internal function to queue a window redraw */
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
479 void _dw_redraw(id window, int skip)
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
480 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
481 static id lastwindow = nil;
1425
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
482 id redraw = lastwindow;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
483
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
484 if(skip && window == nil)
1425
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
485 return;
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
486
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
487 lastwindow = window;
1425
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
488 if(redraw != lastwindow && redraw != nil)
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
489 {
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
490 dw_window_redraw(redraw);
1628bf383893 Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1422
diff changeset
491 }
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
492 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
493
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
494 SignalHandler *_get_handler(HWND window, int messageid)
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
495 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
496 SignalHandler *tmp = Root;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
497
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
498 /* Find any callbacks for this function */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
499 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
500 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
501 if(tmp->message == messageid && window == tmp->window)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
502 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
503 return tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
504 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
505 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
506 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
507 return NULL;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
508 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
509
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
510 typedef struct
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
511 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
512 ULONG message;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
513 char name[30];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
514
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
515 } SignalList;
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
516
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
517 /* List of signals */
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
518 #define SIGNALMAX 19
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
519
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
520 SignalList SignalTranslate[SIGNALMAX] = {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
521 { 1, DW_SIGNAL_CONFIGURE },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
522 { 2, DW_SIGNAL_KEY_PRESS },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
523 { 3, DW_SIGNAL_BUTTON_PRESS },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
524 { 4, DW_SIGNAL_BUTTON_RELEASE },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
525 { 5, DW_SIGNAL_MOTION_NOTIFY },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
526 { 6, DW_SIGNAL_DELETE },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
527 { 7, DW_SIGNAL_EXPOSE },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
528 { 8, DW_SIGNAL_CLICKED },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
529 { 9, DW_SIGNAL_ITEM_ENTER },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
530 { 10, DW_SIGNAL_ITEM_CONTEXT },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
531 { 11, DW_SIGNAL_LIST_SELECT },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
532 { 12, DW_SIGNAL_ITEM_SELECT },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
533 { 13, DW_SIGNAL_SET_FOCUS },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
534 { 14, DW_SIGNAL_VALUE_CHANGED },
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
535 { 15, DW_SIGNAL_SWITCH_PAGE },
803
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
536 { 16, DW_SIGNAL_TREE_EXPAND },
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
537 { 17, DW_SIGNAL_COLUMN_CLICK },
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
538 { 18, DW_SIGNAL_HTML_RESULT },
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
539 { 19, DW_SIGNAL_HTML_CHANGED }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
540 };
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
541
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
542 int _event_handler1(id object, NSEvent *event, int message)
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
543 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
544 SignalHandler *handler = _get_handler(object, message);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
545 /* NSLog(@"Event handler - type %d\n", message); */
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
546
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
547 if(handler)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
548 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
549 switch(message)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
550 {
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
551 /* Timer event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
552 case 0:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
553 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
554 int (* API timerfunc)(void *) = (int (* API)(void *))handler->signalfunction;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
555
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
556 if(!timerfunc(handler->data))
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
557 dw_timer_disconnect(handler->id);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
558 return 0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
559 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
560 /* Configure/Resize event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
561 case 1:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
562 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
563 int (*sizefunc)(HWND, int, int, void *) = handler->signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
564 NSSize size;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
565
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
566 if([object isKindOfClass:[NSWindow class]])
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
567 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
568 NSWindow *window = object;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
569 size = [[window contentView] frame].size;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
570 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
571 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
572 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
573 NSView *view = object;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
574 size = [view frame].size;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
575 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
576
706
79b38b1f3346 Scrollbar event fixes... scale was wrong... not sure it is correct but it is better.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 705
diff changeset
577 if(size.width > 0 && size.height > 0)
79b38b1f3346 Scrollbar event fixes... scale was wrong... not sure it is correct but it is better.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 705
diff changeset
578 {
79b38b1f3346 Scrollbar event fixes... scale was wrong... not sure it is correct but it is better.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 705
diff changeset
579 return sizefunc(object, size.width, size.height, handler->data);
79b38b1f3346 Scrollbar event fixes... scale was wrong... not sure it is correct but it is better.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 705
diff changeset
580 }
79b38b1f3346 Scrollbar event fixes... scale was wrong... not sure it is correct but it is better.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 705
diff changeset
581 return 0;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
582 }
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
583 case 2:
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
584 {
1748
e4fcd1e81f0d Added optional utf8 parameter to keypress callback on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1744
diff changeset
585 int (*keypressfunc)(HWND, char, int, int, void *, char *) = handler->signalfunction;
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
586 NSString *nchar = [event charactersIgnoringModifiers];
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
587 int special = (int)[event modifierFlags];
724
41080d22edc8 Couple more fixes to keyhandling... committed before I finished what I was doing...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 723
diff changeset
588 unichar vk = [nchar characterAtIndex:0];
1748
e4fcd1e81f0d Added optional utf8 parameter to keypress callback on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1744
diff changeset
589 char *utf8 = NULL, ch = '\0';
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
590
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
591 /* Handle a valid key */
724
41080d22edc8 Couple more fixes to keyhandling... committed before I finished what I was doing...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 723
diff changeset
592 if([nchar length] == 1)
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
593 {
1748
e4fcd1e81f0d Added optional utf8 parameter to keypress callback on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1744
diff changeset
594 char *tmp = (char *)[nchar UTF8String];
899
3fbba8b1f440 Don't pass in a partial UTF8 string in the character field during key press events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 898
diff changeset
595 if(tmp && strlen(tmp) == 1)
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
596 {
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
597 ch = tmp[0];
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
598 }
1748
e4fcd1e81f0d Added optional utf8 parameter to keypress callback on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1744
diff changeset
599 utf8 = tmp;
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
600 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
601
1748
e4fcd1e81f0d Added optional utf8 parameter to keypress callback on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1744
diff changeset
602 return keypressfunc(handler->window, ch, (int)vk, special, handler->data, utf8);
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
603 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
604 /* Button press and release event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
605 case 3:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
606 case 4:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
607 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
608 int (* API buttonfunc)(HWND, int, int, int, void *) = (int (* API)(HWND, int, int, int, void *))handler->signalfunction;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
609 NSPoint p = [NSEvent mouseLocation];
922
07f9a73c6847 Fix for button press/release events coordinates being relative to the window instead of the screen on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 921
diff changeset
610 int button = 1;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
611
1222
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
612 if([event isMemberOfClass:[NSEvent class]])
922
07f9a73c6847 Fix for button press/release events coordinates being relative to the window instead of the screen on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 921
diff changeset
613 {
1222
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
614 id view = [[[event window] contentView] superview];
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
615 NSEventType type = [event type];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
616
1222
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
617 p = [view convertPoint:[event locationInWindow] toView:object];
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
618
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
619 if(type == DWEventTypeRightMouseDown || type == DWEventTypeRightMouseUp)
1222
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
620 {
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
621 button = 2;
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
622 }
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
623 else if(type == DWEventTypeOtherMouseDown || type == DWEventTypeOtherMouseUp)
1222
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
624 {
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
625 button = 3;
aac69b11e821 Fix to get button press events working from the task/statusbar on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1220
diff changeset
626 }
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
627 else if([event modifierFlags] & DWEventModifierFlagControl)
1647
b2c26ed9031c On Mac set button to 2 (right) when Control key is pressed and left clicking
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1644
diff changeset
628 {
b2c26ed9031c On Mac set button to 2 (right) when Control key is pressed and left clicking
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1644
diff changeset
629 button = 2;
b2c26ed9031c On Mac set button to 2 (right) when Control key is pressed and left clicking
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1644
diff changeset
630 }
922
07f9a73c6847 Fix for button press/release events coordinates being relative to the window instead of the screen on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 921
diff changeset
631 }
07f9a73c6847 Fix for button press/release events coordinates being relative to the window instead of the screen on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 921
diff changeset
632
954
cfb12bf3bb06 Fixes for some more coordinate system issues on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 953
diff changeset
633 return buttonfunc(object, (int)p.x, (int)p.y, button, handler->data);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
634 }
886
d94a4fa0359e Implemented the motion notify event on Mac. Most of it was there except the event handler.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 882
diff changeset
635 /* Motion notify event */
d94a4fa0359e Implemented the motion notify event on Mac. Most of it was there except the event handler.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 882
diff changeset
636 case 5:
d94a4fa0359e Implemented the motion notify event on Mac. Most of it was there except the event handler.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 882
diff changeset
637 {
d94a4fa0359e Implemented the motion notify event on Mac. Most of it was there except the event handler.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 882
diff changeset
638 int (* API motionfunc)(HWND, int, int, int, void *) = (int (* API)(HWND, int, int, int, void *))handler->signalfunction;
945
254b50be1bc1 Coordinate system changes to button press and motion notify events on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 944
diff changeset
639 id view = [[[event window] contentView] superview];
254b50be1bc1 Coordinate system changes to button press and motion notify events on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 944
diff changeset
640 NSPoint p = [view convertPoint:[event locationInWindow] toView:object];
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
641 SEL spmb = NSSelectorFromString(@"pressedMouseButtons");
1993
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
642 DWIMP ipmb = [[NSEvent class] respondsToSelector:spmb] ? (DWIMP)[[NSEvent class] methodForSelector:spmb] : 0;
1995
e0669accc85b Mac: Fix typecast to int of different size with gcc for 32bit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1994
diff changeset
643 NSUInteger buttonmask = ipmb ? (NSUInteger)ipmb([NSEvent class], spmb) : (1 << [event buttonNumber]);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
644
1996
289a8ca4855b Mac: Clang didn't like the loss of precision without a cast from the previous change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1995
diff changeset
645 return motionfunc(object, (int)p.x, (int)p.y, (int)buttonmask, handler->data);
886
d94a4fa0359e Implemented the motion notify event on Mac. Most of it was there except the event handler.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 882
diff changeset
646 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
647 /* Window close event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
648 case 6:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
649 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
650 int (* API closefunc)(HWND, void *) = (int (* API)(HWND, void *))handler->signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
651 return closefunc(object, handler->data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
652 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
653 /* Window expose/draw event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
654 case 7:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
655 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
656 DWExpose exp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
657 int (* API exposefunc)(HWND, DWExpose *, void *) = (int (* API)(HWND, DWExpose *, void *))handler->signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
658 NSRect rect = [object frame];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
659
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
660 exp.x = rect.origin.x;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
661 exp.y = rect.origin.y;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
662 exp.width = rect.size.width;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
663 exp.height = rect.size.height;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
664 int result = exposefunc(object, &exp, handler->data);
1941
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
665 #ifndef BUILDING_FOR_MOJAVE
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
666 [[object window] flushWindow];
1941
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
667 #endif
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
668 return result;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
669 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
670 /* Clicked event for buttons and menu items */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
671 case 8:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
672 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
673 int (* API clickfunc)(HWND, void *) = (int (* API)(HWND, void *))handler->signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
674
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
675 return clickfunc(object, handler->data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
676 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
677 /* Container class selection event */
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
678 case 9:
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
679 {
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
680 int (*containerselectfunc)(HWND, char *, void *, void *) = handler->signalfunction;
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
681 void **params = (void **)event;
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
682
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
683 return containerselectfunc(handler->window, params[0], handler->data, params[1]);
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
684 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
685 /* Container context menu event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
686 case 10:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
687 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
688 int (* API containercontextfunc)(HWND, char *, int, int, void *, void *) = (int (* API)(HWND, char *, int, int, void *, void *))handler->signalfunction;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
689 char *text = (char *)event;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
690 void *user = NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
691 LONG x,y;
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
692
1061
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
693 /* Fill in both items for the tree */
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
694 if([object isKindOfClass:[NSOutlineView class]])
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
695 {
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
696 id item = event;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
697 NSString *nstr = [item objectAtIndex:1];
1061
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
698 text = (char *)[nstr UTF8String];
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
699 NSValue *value = [item objectAtIndex:2];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
700 if(value && [value isKindOfClass:[NSValue class]])
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
701 {
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
702 user = [value pointerValue];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
703 }
1061
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
704 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
705
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
706 dw_pointer_query_pos(&x, &y);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
707
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
708 return containercontextfunc(handler->window, text, (int)x, (int)y, handler->data, user);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
709 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
710 /* Generic selection changed event for several classes */
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
711 case 11:
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
712 case 14:
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
713 {
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
714 int (* API valuechangedfunc)(HWND, int, void *) = (int (* API)(HWND, int, void *))handler->signalfunction;
1102
cfe7d2b6bc16 Added DW_INT_TO_POINTER/DW_UINT_TO_POINTER/DW_POINTER_TO_INT/DW_POINTER_TO_UINT macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1101
diff changeset
715 int selected = DW_POINTER_TO_INT(event);
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
716
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
717 return valuechangedfunc(handler->window, selected, handler->data);;
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
718 }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
719 /* Tree class selection event */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
720 case 12:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
721 {
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
722 int (* API treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = (int (* API)(HWND, HTREEITEM, char *, void *, void *))handler->signalfunction;
1874
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
723 char *text = NULL;
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
724 void *user = NULL;
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
725 id item = nil;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
726
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
727 if([object isKindOfClass:[NSOutlineView class]])
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
728 {
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
729 item = (id)event;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
730 NSString *nstr = [item objectAtIndex:1];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
731
727
f190b5c2ce16 Fixed 2 errors in the tree select event handler. Also removed unused experimental code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 726
diff changeset
732 if(nstr)
712
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
733 {
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
734 text = strdup([nstr UTF8String]);
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
735 }
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
736
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
737 NSValue *value = [item objectAtIndex:2];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
738 if(value && [value isKindOfClass:[NSValue class]])
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
739 {
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
740 user = [value pointerValue];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
741 }
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
742 int result = treeselectfunc(handler->window, item, text, handler->data, user);
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
743 if(text)
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
744 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
745 free(text);
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
746 }
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
747 return result;
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
748 }
1874
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
749 else if(event)
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
750 {
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
751 void **params = (void **)event;
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
752
1874
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
753 text = params[0];
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
754 user = params[1];
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
755 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
756
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
757 return treeselectfunc(handler->window, item, text, handler->data, user);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
758 }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
759 /* Set Focus event */
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
760 case 13:
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
761 {
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
762 int (* API setfocusfunc)(HWND, void *) = (int (* API)(HWND, void *))handler->signalfunction;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
763
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
764 return setfocusfunc(handler->window, handler->data);
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
765 }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
766 /* Notebook page change event */
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
767 case 15:
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
768 {
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
769 int (* API switchpagefunc)(HWND, unsigned long, void *) = (int (* API)(HWND, unsigned long, void *))handler->signalfunction;
1102
cfe7d2b6bc16 Added DW_INT_TO_POINTER/DW_UINT_TO_POINTER/DW_POINTER_TO_INT/DW_POINTER_TO_UINT macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1101
diff changeset
770 int pageid = DW_POINTER_TO_INT(event);
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
771
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
772 return switchpagefunc(handler->window, pageid, handler->data);
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
773 }
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
774 /* Tree expand event */
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
775 case 16:
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
776 {
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
777 int (* API treeexpandfunc)(HWND, HTREEITEM, void *) = (int (* API)(HWND, HTREEITEM, void *))handler->signalfunction;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
778
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
779 return treeexpandfunc(handler->window, (HTREEITEM)event, handler->data);
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
780 }
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
781 /* Column click event */
803
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
782 case 17:
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
783 {
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
784 int (* API clickcolumnfunc)(HWND, int, void *) = handler->signalfunction;
1102
cfe7d2b6bc16 Added DW_INT_TO_POINTER/DW_UINT_TO_POINTER/DW_POINTER_TO_INT/DW_POINTER_TO_UINT macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1101
diff changeset
785 int column_num = DW_POINTER_TO_INT(event);
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
786
803
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
787 return clickcolumnfunc(handler->window, column_num, handler->data);
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
788 }
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
789 /* HTML result event */
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
790 case 18:
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
791 {
2014
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
792 int (* API htmlresultfunc)(HWND, int, char *, void *, void *) = handler->signalfunction;
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
793 void **params = (void **)event;
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
794 NSString *result = params[0];
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
795
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
796 return htmlresultfunc(handler->window, [result length] ? DW_ERROR_NONE : DW_ERROR_UNKNOWN, [result length] ? (char *)[result UTF8String] : NULL, params[1], handler->data);
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
797 }
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
798 /* HTML changed event */
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
799 case 19:
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
800 {
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
801 int (* API htmlchangedfunc)(HWND, int, char *, void *) = handler->signalfunction;
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
802 void **params = (void **)event;
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
803 NSString *uri = params[1];
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
804
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
805 return htmlchangedfunc(handler->window, DW_POINTER_TO_INT(params[0]), (char *)[uri UTF8String], handler->data);
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
806 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
807 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
808 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
809 return -1;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
810 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
811
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
812 /* Sub function to handle redraws */
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
813 int _event_handler(id object, NSEvent *event, int message)
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
814 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
815 int ret = _event_handler1(object, event, message);
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
816 if(ret != -1)
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
817 _dw_redraw(nil, FALSE);
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
818 return ret;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
819 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
820
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
821 /* Subclass for the Timer type */
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
822 @interface DWTimerHandler : NSObject { }
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
823 -(void)runTimer:(id)sender;
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
824 @end
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
825
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
826 @implementation DWTimerHandler
674
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
827 -(void)runTimer:(id)sender { _event_handler(sender, nil, 0); }
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
828 @end
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
829
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
830 NSApplication *DWApp;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
831 NSMenu *DWMainMenu;
740
bb3b2d804f0e Working on fonts some more.... setting a default label font that is smaller.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 739
diff changeset
832 NSFont *DWDefaultFont;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
833 DWTimerHandler *DWHandler;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
834 #if !defined(GARBAGE_COLLECT)
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
835 NSAutoreleasePool *pool;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
836 #endif
1954
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
837 #ifdef BUILDING_FOR_MOJAVE
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
838 NSMutableArray *_DWDirtyDrawables;
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
839 #else
661
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
840 HWND _DWLastDrawable;
1949
c71e5da5b801 Mac: Fix mojave #ifdefs so it builds pre-mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1948
diff changeset
841 #endif
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
842 DWTID DWThread = (DWTID)-1;
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
843
1558
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
844 /* Send fake event to make sure the loop isn't stuck */
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
845 void _dw_wakeup_app()
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
846 {
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
847 [DWApp postEvent:[NSEvent otherEventWithType:DWEventTypeApplicationDefined
1558
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
848 location:NSMakePoint(0, 0)
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
849 modifierFlags:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
850 timestamp:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
851 windowNumber:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
852 context:NULL
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
853 subtype:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
854 data1:0
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
855 data2:0]
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
856 atStart:NO];
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
857 }
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
858
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
859 /* Used for doing bitblts from the main thread */
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
860 typedef struct _bitbltinfo
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
861 {
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
862 id src;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
863 id dest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
864 int xdest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
865 int ydest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
866 int width;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
867 int height;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
868 int xsrc;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
869 int ysrc;
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
870 int srcwidth;
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
871 int srcheight;
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
872 } DWBitBlt;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
873
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
874 /* Subclass for a test object type */
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
875 @interface DWObject : NSObject {}
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
876 -(void)uselessThread:(id)sender;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
877 #ifndef BUILDING_FOR_MOJAVE
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
878 -(void)synchronizeThread:(id)param;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
879 #endif
1378
a54720b10821 Fix menu items getting stuck highlighted on Mac if the action triggered a window focus change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1376
diff changeset
880 -(void)menuHandler:(id)param;
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
881 -(void)doBitBlt:(id)param;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
882 -(void)doFlush:(id)param;
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
883 @end
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
884
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
885 @interface DWMenuItem : NSMenuItem
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
886 {
1517
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
887 int check;
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
888 }
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
889 -(void)setCheck:(int)input;
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
890 -(int)check;
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
891 -(void)dealloc;
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
892 @end
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
893
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
894 /* So basically to implement our event handlers...
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
895 * it looks like we are going to have to subclass
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
896 * basically everything. Was hoping to add methods
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
897 * to the superclasses but it looks like you can
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
898 * only add methods and no variables, which isn't
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
899 * going to work. -Brian
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
900 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
901
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
902 /* Subclass for a box type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
903 @interface DWBox : NSView
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
904 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
905 Box *box;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
906 void *userdata;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
907 NSColor *bgcolor;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
908 }
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
909 -(id)init;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
910 -(void)dealloc;
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
911 -(Box *)box;
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
912 -(id)contentView;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
913 -(void *)userdata;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
914 -(void)setUserdata:(void *)input;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
915 -(void)drawRect:(NSRect)rect;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
916 -(BOOL)isFlipped;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
917 -(void)mouseDown:(NSEvent *)theEvent;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
918 -(void)mouseUp:(NSEvent *)theEvent;
701
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
919 -(NSMenu *)menuForEvent:(NSEvent *)theEvent;
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
920 -(void)rightMouseUp:(NSEvent *)theEvent;
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
921 -(void)otherMouseDown:(NSEvent *)theEvent;
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
922 -(void)otherMouseUp:(NSEvent *)theEvent;
723
37c8d2b4cec5 Initial key press event/signal handling... does not seem to trap on all controls...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 722
diff changeset
923 -(void)keyDown:(NSEvent *)theEvent;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
924 -(void)setColor:(unsigned long)input;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
925 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
926
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
927 @implementation DWBox
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
928 -(id)init
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
929 {
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
930 self = [super init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
931
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
932 if (self)
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
933 {
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
934 box = calloc(1, sizeof(Box));
1453
4b516ef23b62 Boxes need to default to vertical on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1449
diff changeset
935 box->type = DW_VERT;
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
936 box->vsize = box->hsize = SIZEEXPAND;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
937 box->width = box->height = 1;
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
938 }
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
939 return self;
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
940 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
941 -(void)dealloc
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
942 {
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
943 UserData *root = userdata;
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
944 if(box->items)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
945 free(box->items);
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
946 free(box);
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
947 _remove_userdata(&root, NULL, TRUE);
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
948 dw_signal_disconnect_by_window(self);
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
949 [super dealloc];
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
950 }
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
951 -(Box *)box { return box; }
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
952 -(id)contentView { return self; }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
953 -(void *)userdata { return userdata; }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
954 -(void)setUserdata:(void *)input { userdata = input; }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
955 -(void)drawRect:(NSRect)rect
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
956 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
957 if(bgcolor)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
958 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
959 [bgcolor set];
755
f574028932cc Fix for crash when changing background colors, needed retain and release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 754
diff changeset
960 NSRectFill([self bounds]);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
961 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
962 }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
963 -(BOOL)isFlipped { return YES; }
701
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
964 -(void)mouseDown:(NSEvent *)theEvent { _event_handler(self, (void *)1, 3); }
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
965 -(void)mouseUp:(NSEvent *)theEvent { _event_handler(self, (void *)1, 4); }
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
966 -(NSMenu *)menuForEvent:(NSEvent *)theEvent { _event_handler(self, (void *)2, 3); return nil; }
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
967 -(void)rightMouseUp:(NSEvent *)theEvent { _event_handler(self, (void *)2, 4); }
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
968 -(void)otherMouseDown:(NSEvent *)theEvent { _event_handler(self, (void *)3, 3); }
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
969 -(void)otherMouseUp:(NSEvent *)theEvent { _event_handler(self, (void *)3, 4); }
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
970 -(void)keyDown:(NSEvent *)theEvent { _event_handler(self, theEvent, 2); }
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
971 -(void)setColor:(unsigned long)input
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
972 {
755
f574028932cc Fix for crash when changing background colors, needed retain and release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 754
diff changeset
973 id orig = bgcolor;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
974
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
975 if(input == _colors[DW_CLR_DEFAULT])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
976 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
977 bgcolor = nil;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
978 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
979 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
980 {
755
f574028932cc Fix for crash when changing background colors, needed retain and release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 754
diff changeset
981 bgcolor = [[NSColor colorWithDeviceRed: DW_RED_VALUE(input)/255.0 green: DW_GREEN_VALUE(input)/255.0 blue: DW_BLUE_VALUE(input)/255.0 alpha: 1] retain];
812
f8bfb19090f9 dw_window_set_color() now affects boxes immediately (no longer on the next window refresh).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 811
diff changeset
982 [bgcolor set];
f8bfb19090f9 dw_window_set_color() now affects boxes immediately (no longer on the next window refresh).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 811
diff changeset
983 NSRectFill([self bounds]);
1848
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
984 }
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
985 [self setNeedsDisplay:YES];
755
f574028932cc Fix for crash when changing background colors, needed retain and release.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 754
diff changeset
986 [orig release];
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
987 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
988 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
989
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
990 /* Subclass for a group box type */
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
991 @interface DWGroupBox : NSBox
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
992 {
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
993 void *userdata;
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
994 NSColor *bgcolor;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
995 NSSize borderSize;
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
996 }
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
997 -(Box *)box;
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
998 -(void *)userdata;
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
999 -(void)setUserdata:(void *)input;
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
1000 @end
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
1001
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
1002 @implementation DWGroupBox
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
1003 -(Box *)box { return [[self contentView] box]; }
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
1004 -(void *)userdata { return userdata; }
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
1005 -(NSSize)borderSize { return borderSize; }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1006 -(NSSize)initBorder
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
1007 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
1008 NSSize frameSize = [self frame].size;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1009
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
1010 if(frameSize.height < 20 || frameSize.width < 20)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
1011 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
1012 frameSize.width = frameSize.height = 100;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
1013 [self setFrameSize:frameSize];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1014 }
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
1015 NSSize contentSize = [[self contentView] frame].size;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
1016 NSSize titleSize = [self titleRect].size;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1017
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
1018 borderSize.width = 100-contentSize.width;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
1019 borderSize.height = (100-contentSize.height)-titleSize.height;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
1020 return borderSize;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
1021 }
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
1022 -(void)setUserdata:(void *)input { userdata = input; }
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
1023 @end
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
1024
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
1025 @interface DWWindow : NSWindow
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
1026 {
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
1027 int redraw;
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
1028 int shown;
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
1029 }
898
bf2ca780f62d One more try at window key handling... since I can't seem to trap keyDown events in most places that get focus...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 895
diff changeset
1030 -(void)sendEvent:(NSEvent *)theEvent;
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
1031 -(void)keyDown:(NSEvent *)theEvent;
932
ed10b5284f36 Fixes for dw_window_capture(), dw_window_release() and motion notify events on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 931
diff changeset
1032 -(void)mouseDragged:(NSEvent *)theEvent;
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
1033 -(int)redraw;
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
1034 -(void)setRedraw:(int)val;
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
1035 -(int)shown;
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
1036 -(void)setShown:(int)val;
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
1037 @end
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
1038
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
1039 @implementation DWWindow
1129
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
1040 -(void)sendEvent:(NSEvent *)theEvent
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
1041 {
1133
25bea6526ca1 Similar Mac fix to what I just commited on Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1130
diff changeset
1042 int rcode = -1;
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
1043 if([theEvent type] == DWEventTypeKeyDown)
1129
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
1044 {
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
1045 rcode = _event_handler(self, theEvent, 2);
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
1046 }
1133
25bea6526ca1 Similar Mac fix to what I just commited on Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1130
diff changeset
1047 if ( rcode != TRUE )
1129
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
1048 [super sendEvent:theEvent];
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
1049 }
898
bf2ca780f62d One more try at window key handling... since I can't seem to trap keyDown events in most places that get focus...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 895
diff changeset
1050 -(void)keyDown:(NSEvent *)theEvent { }
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1051 -(void)mouseDragged:(NSEvent *)theEvent { _event_handler(self, theEvent, 5); }
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
1052 -(int)redraw { return redraw; }
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
1053 -(void)setRedraw:(int)val { redraw = val; }
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
1054 -(int)shown { return shown; }
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
1055 -(void)setShown:(int)val { shown = val; }
1862
9c7485b1921c Fixed object/signal/memory leak on Mac when destroying
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1861
diff changeset
1056 -(void)dealloc { dw_signal_disconnect_by_window(self); [super dealloc]; }
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1057 @end
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1058
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1059 /* Subclass for a render area type */
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1060 @interface DWRender : NSControl
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1061 {
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1062 void *userdata;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1063 NSFont *font;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1064 NSSize size;
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1065 #ifdef BUILDING_FOR_MOJAVE
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1066 NSBitmapImageRep *cachedDrawingRep;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1067 #endif
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1068 }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1069 -(void *)userdata;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1070 -(void)setUserdata:(void *)input;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1071 -(void)setFont:(NSFont *)input;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1072 -(NSFont *)font;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1073 -(void)setSize:(NSSize)input;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1074 -(NSSize)size;
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1075 #ifdef BUILDING_FOR_MOJAVE
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1076 -(NSBitmapImageRep *)cachedDrawingRep;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1077 #endif
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1078 -(void)mouseDown:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1079 -(void)mouseUp:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1080 -(NSMenu *)menuForEvent:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1081 -(void)rightMouseUp:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1082 -(void)otherMouseDown:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1083 -(void)otherMouseUp:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1084 -(void)drawRect:(NSRect)rect;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1085 -(void)keyDown:(NSEvent *)theEvent;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1086 -(BOOL)isFlipped;
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1087 @end
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1088
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1089 @implementation DWRender
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1090 -(void *)userdata { return userdata; }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1091 -(void)setUserdata:(void *)input { userdata = input; }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1092 -(void)setFont:(NSFont *)input { [font release]; font = input; [font retain]; }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1093 -(NSFont *)font { return font; }
1948
bbb1fb54f321 Mac: Need to retain the cached render bitmap and recreate it on resize on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1947
diff changeset
1094 -(void)setSize:(NSSize)input {
bbb1fb54f321 Mac: Need to retain the cached render bitmap and recreate it on resize on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1947
diff changeset
1095 size = input;
1949
c71e5da5b801 Mac: Fix mojave #ifdefs so it builds pre-mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1948
diff changeset
1096 #ifdef BUILDING_FOR_MOJAVE
1948
bbb1fb54f321 Mac: Need to retain the cached render bitmap and recreate it on resize on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1947
diff changeset
1097 if(cachedDrawingRep)
bbb1fb54f321 Mac: Need to retain the cached render bitmap and recreate it on resize on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1947
diff changeset
1098 {
bbb1fb54f321 Mac: Need to retain the cached render bitmap and recreate it on resize on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1947
diff changeset
1099 NSBitmapImageRep *oldrep = cachedDrawingRep;
bbb1fb54f321 Mac: Need to retain the cached render bitmap and recreate it on resize on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1947
diff changeset
1100 cachedDrawingRep = [self bitmapImageRepForCachingDisplayInRect:self.bounds];
bbb1fb54f321 Mac: Need to retain the cached render bitmap and recreate it on resize on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1947
diff changeset
1101 [cachedDrawingRep retain];
bbb1fb54f321 Mac: Need to retain the cached render bitmap and recreate it on resize on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1947
diff changeset
1102 [oldrep release];
bbb1fb54f321 Mac: Need to retain the cached render bitmap and recreate it on resize on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1947
diff changeset
1103 }
1949
c71e5da5b801 Mac: Fix mojave #ifdefs so it builds pre-mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1948
diff changeset
1104 #endif
1948
bbb1fb54f321 Mac: Need to retain the cached render bitmap and recreate it on resize on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1947
diff changeset
1105 }
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1106 -(NSSize)size { return size; }
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1107 #ifdef BUILDING_FOR_MOJAVE
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1108 -(NSBitmapImageRep *)cachedDrawingRep {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1109 if(!cachedDrawingRep)
1948
bbb1fb54f321 Mac: Need to retain the cached render bitmap and recreate it on resize on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1947
diff changeset
1110 {
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1111 cachedDrawingRep = [self bitmapImageRepForCachingDisplayInRect:self.bounds];
1948
bbb1fb54f321 Mac: Need to retain the cached render bitmap and recreate it on resize on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1947
diff changeset
1112 [cachedDrawingRep retain];
bbb1fb54f321 Mac: Need to retain the cached render bitmap and recreate it on resize on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1947
diff changeset
1113 }
1954
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1114 /* Mark this render dirty if something is requesting it to draw */
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1115 if(![_DWDirtyDrawables containsObject:self])
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1116 [_DWDirtyDrawables addObject:self];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1117 return cachedDrawingRep;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1118 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1119 #endif
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1120 -(void)mouseDown:(NSEvent *)theEvent
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1121 {
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
1122 if(![theEvent isMemberOfClass:[NSEvent class]] || !([theEvent modifierFlags] & DWEventModifierFlagControl))
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1123 _event_handler(self, theEvent, 3);
1648
7a9b1189934a Another fix for Contol clicking on Mac... getting double events
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1647
diff changeset
1124 }
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1125 -(void)mouseUp:(NSEvent *)theEvent { _event_handler(self, theEvent, 4); }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1126 -(NSMenu *)menuForEvent:(NSEvent *)theEvent { _event_handler(self, theEvent, 3); return nil; }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1127 -(void)rightMouseUp:(NSEvent *)theEvent { _event_handler(self, theEvent, 4); }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1128 -(void)otherMouseDown:(NSEvent *)theEvent { _event_handler(self, theEvent, 3); }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1129 -(void)otherMouseUp:(NSEvent *)theEvent { _event_handler(self, theEvent, 4); }
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1130 -(void)mouseDragged:(NSEvent *)theEvent { _event_handler(self, theEvent, 5); }
2032
5ca399fb2d6f Mac: Put back the delayed setNeedsDisplay workaround for Mojave only.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2031
diff changeset
1131 -(void)delayedNeedsDisplay { [self setNeedsDisplay:YES]; }
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1132 -(void)drawRect:(NSRect)rect {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1133 _event_handler(self, nil, 7);
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1134 #ifdef BUILDING_FOR_MOJAVE
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1135 if (cachedDrawingRep)
1954
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1136 {
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1137 [cachedDrawingRep drawInRect:self.bounds];
1954
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1138 [_DWDirtyDrawables removeObject:self];
2032
5ca399fb2d6f Mac: Put back the delayed setNeedsDisplay workaround for Mojave only.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2031
diff changeset
1139 /* Work around a bug in Mojave 10.14 by delaying the setNeedsDisplay */
5ca399fb2d6f Mac: Put back the delayed setNeedsDisplay workaround for Mojave only.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2031
diff changeset
1140 if(DWOSMinor != 14)
5ca399fb2d6f Mac: Put back the delayed setNeedsDisplay workaround for Mojave only.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2031
diff changeset
1141 [self setNeedsDisplay:YES];
5ca399fb2d6f Mac: Put back the delayed setNeedsDisplay workaround for Mojave only.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2031
diff changeset
1142 else
5ca399fb2d6f Mac: Put back the delayed setNeedsDisplay workaround for Mojave only.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2031
diff changeset
1143 [self performSelector:@selector(delayedNeedsDisplay) withObject:nil afterDelay:0];
1954
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1144 }
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1145 #endif
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1146 }
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1147 -(void)keyDown:(NSEvent *)theEvent { _event_handler(self, theEvent, 2); }
954
cfb12bf3bb06 Fixes for some more coordinate system issues on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 953
diff changeset
1148 -(BOOL)isFlipped { return YES; }
1947
3aef9be654ce Mac: Fix pre-mojave build, cached render image not available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1946
diff changeset
1149 -(void)dealloc {
3aef9be654ce Mac: Fix pre-mojave build, cached render image not available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1946
diff changeset
1150 UserData *root = userdata;
3aef9be654ce Mac: Fix pre-mojave build, cached render image not available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1946
diff changeset
1151 _remove_userdata(&root, NULL, TRUE);
3aef9be654ce Mac: Fix pre-mojave build, cached render image not available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1946
diff changeset
1152 [font release];
3aef9be654ce Mac: Fix pre-mojave build, cached render image not available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1946
diff changeset
1153 dw_signal_disconnect_by_window(self);
3aef9be654ce Mac: Fix pre-mojave build, cached render image not available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1946
diff changeset
1154 #ifdef BUILDING_FOR_MOJAVE
3aef9be654ce Mac: Fix pre-mojave build, cached render image not available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1946
diff changeset
1155 [cachedDrawingRep release];
1954
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1156 [_DWDirtyDrawables removeObject:self];
1947
3aef9be654ce Mac: Fix pre-mojave build, cached render image not available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1946
diff changeset
1157 #endif
3aef9be654ce Mac: Fix pre-mojave build, cached render image not available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1946
diff changeset
1158 [super dealloc];
3aef9be654ce Mac: Fix pre-mojave build, cached render image not available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1946
diff changeset
1159 }
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1160 -(BOOL)acceptsFirstResponder { return YES; }
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
1161 @end
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
1162
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1163 @implementation DWObject
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1164 -(void)uselessThread:(id)sender { /* Thread only to initialize threading */ }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
1165 #ifndef BUILDING_FOR_MOJAVE
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1166 -(void)synchronizeThread:(id)param
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1167 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1168 pthread_mutex_unlock(DWRunMutex);
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1169 pthread_mutex_lock(DWThreadMutex2);
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1170 pthread_mutex_unlock(DWThreadMutex2);
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1171 pthread_mutex_lock(DWRunMutex);
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1172 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
1173 #endif
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1174 -(void)menuHandler:(id)param
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1175 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1176 DWMenuItem *item = param;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1177 if([item check])
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1178 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1179 if([item state] == DWControlStateValueOn)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1180 [item setState:DWControlStateValueOff];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1181 else
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1182 [item setState:DWControlStateValueOn];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1183 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1184 _event_handler(param, nil, 8);
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1185 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
1186 #ifdef BUILDING_FOR_MOJAVE
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
1187 -(void)callBack:(NSPointerArray *)params
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
1188 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
1189 void (*mycallback)(NSPointerArray *) = [params pointerAtIndex:0];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
1190 if(mycallback)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
1191 mycallback(params);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
1192 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
1193 #endif
1985
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1194 -(void)messageBox:(NSMutableArray *)params
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1195 {
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1196 NSInteger iResponse;
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1197 NSAlert *alert = [[NSAlert alloc] init];
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1198 [alert setMessageText:[params objectAtIndex:0]];
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1199 [alert setInformativeText:[params objectAtIndex:1]];
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1200 [alert addButtonWithTitle:[params objectAtIndex:3]];
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1201 if([params count] > 4)
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1202 [alert addButtonWithTitle:[params objectAtIndex:4]];
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1203 if([params count] > 5)
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1204 [alert addButtonWithTitle:[params objectAtIndex:5]];
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1205 [alert setAlertStyle:[[params objectAtIndex:2] integerValue]];
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1206 iResponse = [alert runModal];
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1207 [alert release];
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1208 [params addObject:[NSNumber numberWithInteger:iResponse]];
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
1209 }
1953
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1210 -(void)safeCall:(SEL)sel withObject:(id)param
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1211 {
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1212 if([self respondsToSelector:sel])
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1213 {
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1214 DWTID curr = pthread_self();
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1215
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1216 if(DWThread == (DWTID)-1 || DWThread == curr)
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1217 {
1993
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
1218 DWIMP imp = (DWIMP)[self methodForSelector:sel];
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
1219
1953
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1220 if(imp)
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1221 imp(self, sel, param);
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1222 }
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1223 else
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1224 [self performSelectorOnMainThread:sel withObject:param waitUntilDone:YES];
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1225 }
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
1226 }
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1227 -(void)doBitBlt:(id)param
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1228 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1229 NSValue *bi = (NSValue *)param;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1230 DWBitBlt *bltinfo = (DWBitBlt *)[bi pointerValue];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1231 id bltdest = bltinfo->dest;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1232 id bltsrc = bltinfo->src;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
1233
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1234 #ifdef BUILDING_FOR_MOJAVE
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1235 if([bltdest isMemberOfClass:[DWRender class]])
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1236 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1237 DWRender *render = bltdest;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
1238
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1239 bltdest = [render cachedDrawingRep];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1240 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1241 #endif
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1242 if([bltdest isMemberOfClass:[NSBitmapImageRep class]])
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1243 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1244 [NSGraphicsContext saveGraphicsState];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1245 [NSGraphicsContext setCurrentContext:_dw_draw_context(bltdest)];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1246 [[[NSDictionary alloc] initWithObjectsAndKeys:bltdest, NSGraphicsContextDestinationAttributeName, nil] autorelease];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1247 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1248 #ifndef BUILDING_FOR_MOJAVE
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1249 else
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1250 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1251 if([bltdest lockFocusIfCanDraw] == NO)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1252 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1253 free(bltinfo);
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1254 return;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1255 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1256 _DWLastDrawable = bltinfo->dest;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1257 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1258 #endif
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1259 if([bltsrc isMemberOfClass:[NSBitmapImageRep class]])
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1260 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1261 NSBitmapImageRep *rep = bltsrc;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1262 NSImage *image = [NSImage alloc];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1263 SEL siwc = NSSelectorFromString(@"initWithCGImage");
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1264 NSCompositingOperation op = DWCompositingOperationSourceOver;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
1265
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1266 if([image respondsToSelector:siwc])
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1267 {
1993
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
1268 DWIMP iiwc = (DWIMP)[image methodForSelector:siwc];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1269 image = iiwc(image, siwc, [rep CGImage], NSZeroSize);
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1270 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1271 else
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1272 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1273 image = [image initWithSize:[rep size]];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1274 [image addRepresentation:rep];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1275 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1276 if(bltinfo->srcwidth != -1)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1277 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1278 [image drawInRect:NSMakeRect(bltinfo->xdest, bltinfo->ydest, bltinfo->width, bltinfo->height)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1279 fromRect:NSMakeRect(bltinfo->xsrc, bltinfo->ysrc, bltinfo->srcwidth, bltinfo->srcheight)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1280 operation:op fraction:1.0];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1281 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1282 else
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1283 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1284 [image drawAtPoint:NSMakePoint(bltinfo->xdest, bltinfo->ydest)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1285 fromRect:NSMakeRect(bltinfo->xsrc, bltinfo->ysrc, bltinfo->width, bltinfo->height)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1286 operation:op fraction:1.0];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1287 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1288 [bltsrc release];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1289 [image release];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1290 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1291 if([bltdest isMemberOfClass:[NSBitmapImageRep class]])
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1292 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1293 [NSGraphicsContext restoreGraphicsState];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1294 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1295 #ifndef BUILDING_FOR_MOJAVE
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1296 else
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1297 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1298 [bltdest unlockFocus];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1299 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1300 #endif
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1301 free(bltinfo);
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1302 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1303 -(void)doFlush:(id)param
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1304 {
1954
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1305 #ifdef BUILDING_FOR_MOJAVE
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1306 NSEnumerator *enumerator = [_DWDirtyDrawables objectEnumerator];
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1307 DWRender *rend;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
1308
1954
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1309 while (rend = [enumerator nextObject])
2031
c4fc33d70a8e Mac: Removed delayed setNeedsDisplay:YES to fix the incorrect dwtest file
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2023
diff changeset
1310 [rend setNeedsDisplay:YES];
1954
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1311 [_DWDirtyDrawables removeAllObjects];
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1312 #else
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1313 if(_DWLastDrawable)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1314 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1315 id object = _DWLastDrawable;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1316 NSWindow *window = [object window];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1317 [window flushWindow];
1954
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
1318 _DWLastDrawable = nil;
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1319 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1320 #endif
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1321 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1322 -(void)doWindowFunc:(id)param
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1323 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1324 NSValue *v = (NSValue *)param;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1325 void **params = (void **)[v pointerValue];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1326 void (* windowfunc)(void *);
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
1327
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1328 if(params)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1329 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1330 windowfunc = params[0];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1331 if(windowfunc)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1332 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1333 windowfunc(params[1]);
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1334 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1335 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1336 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1337 @end
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1338
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1339 DWObject *DWObj;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
1340
1843
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1341 /* Subclass for the application class */
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1342 @interface DWAppDel : NSObject
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1343 #ifdef BUILDING_FOR_SNOW_LEOPARD
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1344 <NSApplicationDelegate>
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1345 #endif
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1346 {
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1347 }
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1348 -(NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1349 @end
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1350
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1351 /* Apparently the WKWebKit API is only enabled on intel 64bit...
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1352 * Causing build failures on 32bit builds, so this should allow
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1353 * WKWebKit on intel 64 and the old WebKit on intel 32 bit and earlier.
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1354 */
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1355 #if WK_API_ENABLED
2023
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1356 @interface DWWebView : WKWebView <WKNavigationDelegate>
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1357 {
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1358 void *userdata;
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1359 }
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1360 -(void *)userdata;
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1361 -(void)setUserdata:(void *)input;
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1362 -(void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation;
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1363 -(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation;
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1364 -(void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation;
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1365 -(void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation;
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1366 @end
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1367
2023
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1368 @implementation DWWebView : WKWebView
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1369 -(void *)userdata { return userdata; }
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1370 -(void)setUserdata:(void *)input { userdata = input; }
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1371 -(void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1372 {
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1373 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_STARTED), [[self URL] absoluteString] };
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1374 _event_handler(self, (NSEvent *)params, 19);
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1375 }
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1376 -(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1377 {
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1378 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_COMPLETE), [[self URL] absoluteString] };
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1379 _event_handler(self, (NSEvent *)params, 19);
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1380 }
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1381 -(void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1382 {
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1383 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_LOADING), [[self URL] absoluteString] };
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1384 _event_handler(self, (NSEvent *)params, 19);
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1385 }
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1386 -(void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1387 {
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1388 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_REDIRECT), [[self URL] absoluteString] };
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1389 _event_handler(self, (NSEvent *)params, 19);
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1390 }
2023
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1391 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1392 @end
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1393 #else
2014
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1394 @interface DWWebView : WebView
2023
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1395 {
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1396 void *userdata;
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1397 }
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1398 -(void *)userdata;
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1399 -(void)setUserdata:(void *)input;
2014
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1400 -(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame;
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1401 -(void)webView:(WebView *)sender didCommitLoadForFrame:(WebFrame *)frame;
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1402 -(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame;
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1403 @end
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1404
2023
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1405 @implementation DWWebView : WebView
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1406 -(void *)userdata { return userdata; }
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1407 -(void)setUserdata:(void *)input { userdata = input; }
2014
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1408 -(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1409 {
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1410 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_COMPLETE), [self mainFrameURL] };
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1411 _event_handler(self, (NSEvent *)params, 19);
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1412 }
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1413 -(void)webView:(WebView *)sender didCommitLoadForFrame:(WebFrame *)frame
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1414 {
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1415 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_STARTED), [self mainFrameURL] };
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1416 _event_handler(self, (NSEvent *)params, 19);
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1417 }
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1418 -(void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1419 {
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1420 void *params[2] = { DW_INT_TO_POINTER(DW_HTML_CHANGE_LOADING), [self mainFrameURL] };
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1421 _event_handler(self, (NSEvent *)params, 19);
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
1422 }
2023
3f265cd5b069 Mac: Added cleanup to the DWWebView subclasses and userdata for dw_window_set_data() on it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2020
diff changeset
1423 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1424 @end
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1425 #endif
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1426
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
1427
1843
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1428 @implementation DWAppDel
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1429 -(NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1430 {
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1431 if(_event_handler(sender, nil, 6) > 0)
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1432 return NSTerminateCancel;
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1433 return NSTerminateNow;
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1434 }
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1435 @end
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
1436
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1437 /* Subclass for a top-level window */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1438 @interface DWView : DWBox
854
d44bb4c4902d Fixed an error on the close event handler on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 853
diff changeset
1439 #ifdef BUILDING_FOR_SNOW_LEOPARD
d44bb4c4902d Fixed an error on the close event handler on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 853
diff changeset
1440 <NSWindowDelegate>
d44bb4c4902d Fixed an error on the close event handler on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 853
diff changeset
1441 #endif
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1442 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1443 NSMenu *windowmenu;
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
1444 NSSize oldsize;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1445 }
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1446 -(BOOL)windowShouldClose:(id)sender;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1447 -(void)setMenu:(NSMenu *)input;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1448 -(void)windowDidBecomeMain:(id)sender;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1449 -(void)menuHandler:(id)sender;
932
ed10b5284f36 Fixes for dw_window_capture(), dw_window_release() and motion notify events on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 931
diff changeset
1450 -(void)mouseDragged:(NSEvent *)theEvent;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1451 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1452
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1453 @implementation DWView
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1454 -(BOOL)windowShouldClose:(id)sender
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
1455 {
1018
a943f973c3ff If there is no close event handler, the window should close by default on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 992
diff changeset
1456 if(_event_handler(sender, nil, 6) > 0)
a943f973c3ff If there is no close event handler, the window should close by default on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 992
diff changeset
1457 return NO;
a943f973c3ff If there is no close event handler, the window should close by default on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 992
diff changeset
1458 return YES;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1459 }
1862
9c7485b1921c Fixed object/signal/memory leak on Mac when destroying
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1861
diff changeset
1460 -(void)viewDidMoveToWindow
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1461 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1462 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowResized:) name:NSWindowDidResizeNotification object:[self window]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1463 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidBecomeMain:) name:NSWindowDidBecomeMainNotification object:[self window]];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1464 }
1862
9c7485b1921c Fixed object/signal/memory leak on Mac when destroying
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1861
diff changeset
1465 -(void)dealloc
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1466 {
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
1467 if(windowmenu)
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
1468 {
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
1469 [windowmenu release];
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
1470 }
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
1471 [[NSNotificationCenter defaultCenter] removeObserver:self];
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1472 dw_signal_disconnect_by_window(self);
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
1473 [super dealloc];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1474 }
1862
9c7485b1921c Fixed object/signal/memory leak on Mac when destroying
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1861
diff changeset
1475 -(void)windowResized:(NSNotification *)notification;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1476 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1477 NSSize size = [self frame].size;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1478
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
1479 if(oldsize.width != size.width || oldsize.height != size.height)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
1480 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
1481 _do_resize(box, size.width, size.height);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
1482 _event_handler([self window], nil, 1);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
1483 oldsize.width = size.width;
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
1484 oldsize.height = size.height;
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
1485 _handle_resize_events(box);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
1486 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1487 }
930
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
1488 -(void)showWindow
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
1489 {
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
1490 NSSize size = [self frame].size;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1491
930
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
1492 if(oldsize.width == size.width && oldsize.height == size.height)
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
1493 {
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
1494 _do_resize(box, size.width, size.height);
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
1495 _handle_resize_events(box);
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
1496 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1497
930
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
1498 }
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1499 -(void)windowDidBecomeMain:(id)sender
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1500 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1501 if(windowmenu)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1502 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1503 [DWApp setMainMenu:windowmenu];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1504 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1505 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1506 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1507 [DWApp setMainMenu:DWMainMenu];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1508 }
1026
f15dc5226c35 Fixed focus event was getting ignored because wrong handle passed to the event handler on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1023
diff changeset
1509 _event_handler([self window], nil, 13);
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
1510 }
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
1511 -(void)setMenu:(NSMenu *)input { windowmenu = input; [windowmenu retain]; }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1512 -(void)menuHandler:(id)sender
1593
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1513 {
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1514 id menu = [sender menu];
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1515
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1516 /* Find the highest menu for this item */
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1517 while([menu supermenu])
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1518 {
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1519 menu = [menu supermenu];
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1520 }
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1521
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1522 /* Only perform the delay if this item is a child of the main menu */
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1523 if([DWApp mainMenu] == menu)
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1524 [DWObj performSelector:@selector(menuHandler:) withObject:sender afterDelay:0];
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1525 else
19af25f71e1f Yet another fix attempt for mene item issues on Mac 10.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1590
diff changeset
1526 [DWObj menuHandler:sender];
1558
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
1527 _dw_wakeup_app();
1522
c98b2ce2d5b2 Fix menuHandler not being called until an event on Mac 10.5. This reinstitutes the menu display bug on Leopard but that is only a cosmetic issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1517
diff changeset
1528 }
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1529 -(void)mouseDragged:(NSEvent *)theEvent { _event_handler(self, theEvent, 5); }
952
abb9203adc05 Use NSCompositeSourceOver for bitblting that respects transparency of the source
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 951
diff changeset
1530 -(void)mouseMoved:(NSEvent *)theEvent
abb9203adc05 Use NSCompositeSourceOver for bitblting that respects transparency of the source
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 951
diff changeset
1531 {
944
cdb7a53e5515 Some motion notify changes... so it can handle events without the mouse button pressed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 943
diff changeset
1532 id hit = [self hitTest:[theEvent locationInWindow]];
952
abb9203adc05 Use NSCompositeSourceOver for bitblting that respects transparency of the source
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 951
diff changeset
1533
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1534 if([hit isMemberOfClass:[DWRender class]])
952
abb9203adc05 Use NSCompositeSourceOver for bitblting that respects transparency of the source
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 951
diff changeset
1535 {
abb9203adc05 Use NSCompositeSourceOver for bitblting that respects transparency of the source
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 951
diff changeset
1536 _event_handler(hit, theEvent, 5);
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
1537 }
944
cdb7a53e5515 Some motion notify changes... so it can handle events without the mouse button pressed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 943
diff changeset
1538 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1539 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1540
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1541 /* Subclass for a button type */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1542 @interface DWButton : NSButton
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1543 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1544 void *userdata;
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1545 NSButtonType buttonType;
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1546 DWBox *parent;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1547 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1548 -(void *)userdata;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1549 -(void)setUserdata:(void *)input;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1550 -(void)buttonClicked:(id)sender;
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1551 -(void)setButtonType:(NSButtonType)input;
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1552 -(NSButtonType)buttonType;
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1553 -(void)setParent:(DWBox *)input;
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1554 -(DWBox *)parent;
1849
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1555 -(NSColor *)textColor;
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1556 -(void)setTextColor:(NSColor *)textColor;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1557 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1558
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1559 @implementation DWButton
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1560 -(void *)userdata { return userdata; }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1561 -(void)setUserdata:(void *)input { userdata = input; }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1562 -(void)buttonClicked:(id)sender
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1563 {
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1564 _event_handler(self, nil, 8);
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
1565 if([self buttonType] == DWButtonTypeRadio)
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1566 {
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1567 DWBox *viewbox = [self parent];
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1568 Box *thisbox = [viewbox box];
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1569 int z;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1570
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1571 for(z=0;z<thisbox->count;z++)
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1572 {
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1573 if(thisbox->items[z].type != TYPEBOX)
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1574 {
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1575 id object = thisbox->items[z].hwnd;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1576
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1577 if([object isMemberOfClass:[DWButton class]])
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1578 {
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1579 DWButton *button = object;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1580
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
1581 if(button != self && [button buttonType] == DWButtonTypeRadio)
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1582 {
1938
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
1583 [button setState:DWControlStateValueOff];
793
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1584 }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1585 }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1586 }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1587 }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1588 }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1589 }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1590 -(void)setButtonType:(NSButtonType)input { buttonType = input; [super setButtonType:input]; }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1591 -(NSButtonType)buttonType { return buttonType; }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1592 -(void)setParent:(DWBox *)input { parent = input; }
e328c7746cda Basic code to handle unchecking other radio buttons attached to the same box when one is selected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 792
diff changeset
1593 -(DWBox *)parent { return parent; }
1849
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1594 -(NSColor *)textColor
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1595 {
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1596 NSAttributedString *attrTitle = [self attributedTitle];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1597 NSUInteger len = [attrTitle length];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1598 NSRange range = NSMakeRange(0, MIN(len, 1));
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1599 NSDictionary *attrs = [attrTitle fontAttributesInRange:range];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1600 NSColor *textColor = [NSColor controlTextColor];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1601 if (attrs) {
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1602 textColor = [attrs objectForKey:NSForegroundColorAttributeName];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1603 }
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1604 return textColor;
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1605 }
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1606 -(void)setTextColor:(NSColor *)textColor
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1607 {
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1608 NSMutableAttributedString *attrTitle = [[NSMutableAttributedString alloc]
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1609 initWithAttributedString:[self attributedTitle]];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1610 NSUInteger len = [attrTitle length];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1611 NSRange range = NSMakeRange(0, len);
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1612 [attrTitle addAttribute:NSForegroundColorAttributeName
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1613 value:textColor
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1614 range:range];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1615 [attrTitle fixAttributesInRange:range];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1616 [self setAttributedTitle:attrTitle];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1617 [attrTitle release];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
1618 }
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1619 -(void)keyDown:(NSEvent *)theEvent
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1620 {
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1621 unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1622 if(vk == VK_RETURN || vk == VK_SPACE)
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1623 {
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
1624 if(buttonType == DWButtonTypeSwitch)
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
1625 [self setState:([self state] ? DWControlStateValueOff : DWControlStateValueOn)];
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
1626 else if(buttonType == DWButtonTypeRadio)
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
1627 [self setState:DWControlStateValueOn];
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1628 [self buttonClicked:self];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1629 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1630 else
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1631 {
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1632 [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1633 [super keyDown:theEvent];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1634 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1635 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1636 -(void)insertTab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectNextKeyView:self]; }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
1637 -(void)insertBacktab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectPreviousKeyView:self]; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1638 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1639 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1640
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1641 /* Subclass for a progress type */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1642 @interface DWPercent : NSProgressIndicator
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1643 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1644 void *userdata;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1645 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1646 -(void *)userdata;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1647 -(void)setUserdata:(void *)input;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1648 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1649
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1650 @implementation DWPercent
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1651 -(void *)userdata { return userdata; }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1652 -(void)setUserdata:(void *)input { userdata = input; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1653 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1654 @end
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1655
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1656 /* Subclass for a menu item type */
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1657 @implementation DWMenuItem
1517
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
1658 -(void)setCheck:(int)input { check = input; }
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
1659 -(int)check { return check; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1660 -(void)dealloc { dw_signal_disconnect_by_window(self); [super dealloc]; }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1661 @end
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1662
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1663 /* Subclass for a scrollbox type */
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1664 @interface DWScrollBox : NSScrollView
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1665 {
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1666 void *userdata;
840
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
1667 id box;
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1668 }
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1669 -(void *)userdata;
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1670 -(void)setUserdata:(void *)input;
840
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
1671 -(void)setBox:(void *)input;
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
1672 -(id)box;
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1673 @end
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1674
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1675 @implementation DWScrollBox
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1676 -(void *)userdata { return userdata; }
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1677 -(void)setUserdata:(void *)input { userdata = input; }
840
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
1678 -(void)setBox:(void *)input { box = input; }
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
1679 -(id)box { return box; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1680 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1681 @end
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
1682
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1683 /* Subclass for a textfield that supports vertical centering */
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1684 @interface DWTextFieldCell : NSTextFieldCell
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1685 {
860
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1686 BOOL vcenter;
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1687 }
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1688 -(NSRect)drawingRectForBounds:(NSRect)theRect;
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1689 -(void)setVCenter:(BOOL)input;
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1690 @end
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1691
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1692 @implementation DWTextFieldCell
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1693 -(NSRect)drawingRectForBounds:(NSRect)theRect
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1694 {
860
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1695 /* Get the parent's idea of where we should draw */
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1696 NSRect newRect = [super drawingRectForBounds:theRect];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1697
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1698 /* If we are being vertically centered */
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1699 if(vcenter)
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1700 {
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1701 /* Get our ideal size for current text */
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1702 NSSize textSize = [self cellSizeForBounds:theRect];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1703
860
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1704 /* Center that in the proposed rect */
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1705 float heightDelta = newRect.size.height - textSize.height;
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1706 if (heightDelta > 0)
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1707 {
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1708 newRect.size.height -= heightDelta;
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1709 newRect.origin.y += (heightDelta / 2);
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1710 }
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1711 }
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1712
860
93ac372941c4 Formatting cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 859
diff changeset
1713 return newRect;
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1714 }
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1715 -(void)setVCenter:(BOOL)input { vcenter = input; }
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1716 @end
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
1717
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1718 @interface DWEntryFieldFormatter : NSFormatter
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1719 {
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1720 int maxLength;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1721 }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1722 - (void)setMaximumLength:(int)len;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1723 - (int)maximumLength;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1724 @end
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1725
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1726 /* This formatter subclass will allow us to limit
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1727 * the text length in an entryfield.
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1728 */
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1729 @implementation DWEntryFieldFormatter
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1730 -(id)init
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1731 {
1063
2ebaea72ac95 Fix for some release calls causing issues on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1061
diff changeset
1732 self = [super init];
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1733 maxLength = INT_MAX;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1734 return self;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1735 }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1736 -(void)setMaximumLength:(int)len { maxLength = len; }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1737 -(int)maximumLength { return maxLength; }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1738 -(NSString *)stringForObjectValue:(id)object { return (NSString *)object; }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1739 -(BOOL)getObjectValue:(id *)object forString:(NSString *)string errorDescription:(NSString **)error { *object = string; return YES; }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1740 -(BOOL)isPartialStringValid:(NSString **)partialStringPtr
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1741 proposedSelectedRange:(NSRangePointer)proposedSelRangePtr
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1742 originalString:(NSString *)origString
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1743 originalSelectedRange:(NSRange)origSelRange
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1744 errorDescription:(NSString **)error
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1745 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1746 if([*partialStringPtr length] > maxLength)
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1747 {
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1748 return NO;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1749 }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1750 return YES;
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1751 }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1752 -(NSAttributedString *)attributedStringForObjectValue:(id)anObject withDefaultAttributes:(NSDictionary *)attributes { return nil; }
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1753 @end
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
1754
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1755 /* Subclass for a entryfield type */
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1756 @interface DWEntryField : NSTextField
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1757 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1758 void *userdata;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1759 id clickDefault;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1760 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1761 -(void *)userdata;
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1762 -(void)setUserdata:(void *)input;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1763 -(void)setClickDefault:(id)input;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1764 @end
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1765
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1766 @implementation DWEntryField
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1767 -(void *)userdata { return userdata; }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1768 -(void)setUserdata:(void *)input { userdata = input; }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1769 -(void)setClickDefault:(id)input { clickDefault = input; }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1770 -(void)keyUp:(NSEvent *)theEvent
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1771 {
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1772 unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1773 if(clickDefault && vk == VK_RETURN)
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1774 {
1236
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1775 if([clickDefault isKindOfClass:[NSButton class]])
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1776 [clickDefault buttonClicked:self];
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1777 else
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1778 [[self window] makeFirstResponder:clickDefault];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1779 } else
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1780 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1781 [super keyUp:theEvent];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1782 }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1783 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1784 -(BOOL)performKeyEquivalent:(NSEvent *)theEvent
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1785 {
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
1786 if(([theEvent modifierFlags] & DWEventModifierFlagDeviceIndependentFlagsMask) == DWEventModifierFlagCommand)
1235
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1787 {
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1788 if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"x"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1789 return [NSApp sendAction:@selector(cut:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1790 else if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"c"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1791 return [NSApp sendAction:@selector(copy:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1792 else if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"v"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1793 return [NSApp sendAction:@selector(paste:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1794 else if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"a"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1795 return [NSApp sendAction:@selector(selectAll:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1796 }
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1797 return [super performKeyEquivalent:theEvent];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1798 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1799 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1800 @end
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1801
1564
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1802 /* Subclass for a text and status text type */
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1803 @interface DWText : NSTextField
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1804 {
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1805 void *userdata;
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1806 id clickDefault;
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1807 }
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1808 -(void *)userdata;
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1809 -(void)setUserdata:(void *)input;
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1810 @end
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1811
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1812 @implementation DWText
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1813 -(void *)userdata { return userdata; }
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1814 -(void)setUserdata:(void *)input { userdata = input; }
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1815 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); [super dealloc]; }
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1816 @end
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1817
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
1818
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1819 /* Subclass for a entryfield password type */
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1820 @interface DWEntryFieldPassword : NSSecureTextField
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1821 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1822 void *userdata;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1823 id clickDefault;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1824 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1825 -(void *)userdata;
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1826 -(void)setUserdata:(void *)input;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1827 -(void)setClickDefault:(id)input;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1828 @end
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1829
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1830 @implementation DWEntryFieldPassword
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1831 -(void *)userdata { return userdata; }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1832 -(void)setUserdata:(void *)input { userdata = input; }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1833 -(void)setClickDefault:(id)input { clickDefault = input; }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1834 -(void)keyUp:(NSEvent *)theEvent
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1835 {
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1836 if(clickDefault && [[theEvent charactersIgnoringModifiers] characterAtIndex:0] == VK_RETURN)
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1837 {
1236
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1838 if([clickDefault isKindOfClass:[NSButton class]])
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1839 [clickDefault buttonClicked:self];
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1840 else
46de4dbe710d Fixed clickdefault not triggering event for buttons on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1235
diff changeset
1841 [[self window] makeFirstResponder:clickDefault];
1235
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1842 }
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1843 else
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1844 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1845 [super keyUp:theEvent];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
1846 }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
1847 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1848 -(BOOL)performKeyEquivalent:(NSEvent *)theEvent
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1849 {
1983
59146d14e21e Mac: Fix building for MacOS 10.10 Yosemite.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1974
diff changeset
1850 if(([theEvent modifierFlags] & DWEventModifierFlagDeviceIndependentFlagsMask) == DWEventModifierFlagCommand)
1235
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1851 {
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1852 if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"x"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1853 return [NSApp sendAction:@selector(cut:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1854 else if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"c"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1855 return [NSApp sendAction:@selector(copy:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1856 else if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"v"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1857 return [NSApp sendAction:@selector(paste:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1858 else if ([[theEvent charactersIgnoringModifiers] isEqualToString:@"a"])
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1859 return [NSApp sendAction:@selector(selectAll:) to:[[self window] firstResponder] from:self];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1860 }
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1861 return [super performKeyEquivalent:theEvent];
9327f684c9b8 Attempt at fixing Copy, Cut, Paste, Select All Mac key combos...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1234
diff changeset
1862 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1863 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1864 @end
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
1865
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1866 /* Subclass for a Notebook control type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1867 @interface DWNotebook : NSTabView
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
1868 #ifdef BUILDING_FOR_SNOW_LEOPARD
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
1869 <NSTabViewDelegate>
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
1870 #endif
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1871 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1872 void *userdata;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1873 int pageid;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1874 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1875 -(void *)userdata;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1876 -(void)setUserdata:(void *)input;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1877 -(int)pageid;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1878 -(void)setPageid:(int)input;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1879 -(void)tabView:(NSTabView *)notebook didSelectTabViewItem:(NSTabViewItem *)notepage;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1880 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1881
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1882 /* Subclass for a Notebook page type */
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1883 @interface DWNotebookPage : NSTabViewItem
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1884 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1885 void *userdata;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1886 int pageid;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1887 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1888 -(void *)userdata;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1889 -(void)setUserdata:(void *)input;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1890 -(int)pageid;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1891 -(void)setPageid:(int)input;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1892 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1893
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1894 @implementation DWNotebook
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1895 -(void *)userdata { return userdata; }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1896 -(void)setUserdata:(void *)input { userdata = input; }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1897 -(int)pageid { return pageid; }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1898 -(void)setPageid:(int)input { pageid = input; }
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1899 -(void)tabView:(NSTabView *)notebook didSelectTabViewItem:(NSTabViewItem *)notepage
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1900 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1901 id object = [notepage view];
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1902 DWNotebookPage *page = (DWNotebookPage *)notepage;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1903
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1904 if([object isMemberOfClass:[DWBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1905 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1906 DWBox *view = object;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1907 Box *box = [view box];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1908 NSSize size = [view frame].size;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1909 _do_resize(box, size.width, size.height);
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
1910 _handle_resize_events(box);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1911 }
1102
cfe7d2b6bc16 Added DW_INT_TO_POINTER/DW_UINT_TO_POINTER/DW_POINTER_TO_INT/DW_POINTER_TO_UINT macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1101
diff changeset
1912 _event_handler(self, DW_INT_TO_POINTER([page pageid]), 15);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
1913 }
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1914 -(void)keyDown:(NSEvent *)theEvent
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1915 {
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1916 unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
1917
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
1918 if(vk == NSTabCharacter || vk == NSBackTabCharacter)
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1919 [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
1920 else if(vk == NSLeftArrowFunctionKey)
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1921 {
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1922 NSArray *pages = [self tabViewItems];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1923 DWNotebookPage *page = (DWNotebookPage *)[self selectedTabViewItem];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1924 NSUInteger index = [pages indexOfObject:page];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
1925
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1926 if(index != NSNotFound)
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1927 {
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1928 if(index > 0)
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1929 [self selectTabViewItem:[pages objectAtIndex:(index-1)]];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1930 else
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1931 [self selectTabViewItem:[pages objectAtIndex:0]];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
1932
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1933 }
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1934 }
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
1935 else if(vk == NSRightArrowFunctionKey)
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1936 {
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1937 NSArray *pages = [self tabViewItems];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1938 DWNotebookPage *page = (DWNotebookPage *)[self selectedTabViewItem];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1939 NSUInteger index = [pages indexOfObject:page];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1940 NSUInteger count = [pages count];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
1941
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1942 if(index != NSNotFound)
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1943 {
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1944 if(index + 1 < count)
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1945 [self selectTabViewItem:[pages objectAtIndex:(index+1)]];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1946 else
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1947 [self selectTabViewItem:[pages objectAtIndex:(count-1)]];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
1948
1808
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1949 }
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1950 }
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1951 [super keyDown:theEvent];
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1952 }
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1953 -(void)insertTab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectNextKeyView:self]; }
f3458cd6277c Added keyboard support to the notebook control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1807
diff changeset
1954 -(void)insertBacktab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectPreviousKeyView:self]; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1955 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1956 @end
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
1957
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1958 @implementation DWNotebookPage
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1959 -(void *)userdata { return userdata; }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1960 -(void)setUserdata:(void *)input { userdata = input; }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1961 -(int)pageid { return pageid; }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1962 -(void)setPageid:(int)input { pageid = input; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
1963 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1964 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1965
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1966 /* Subclass for a color chooser type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
1967 @interface DWColorChoose : NSColorPanel
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1968 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
1969 DWDialog *dialog;
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
1970 NSColor *pickedcolor;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1971 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1972 -(void)changeColor:(id)sender;
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1973 -(void)setDialog:(DWDialog *)input;
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
1974 -(DWDialog *)dialog;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1975 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1976
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1977 @implementation DWColorChoose
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1978 -(void)changeColor:(id)sender
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1979 {
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1980 if(!dialog)
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1981 [self close];
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1982 else
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1983 pickedcolor = [self color];
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1984 }
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1985 -(BOOL)windowShouldClose:(id)window
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1986 {
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1987 if(dialog)
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1988 {
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1989 DWDialog *d = dialog;
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1990 dialog = nil;
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1991 dw_dialog_dismiss(d, pickedcolor);
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1992 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1993 [self close];
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
1994 return NO;
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
1995 }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1996 -(void)setDialog:(DWDialog *)input { dialog = input; }
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
1997 -(DWDialog *)dialog { return dialog; }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1998 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
1999
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2000 /* Subclass for a font chooser type */
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2001 @interface DWFontChoose : NSFontPanel
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2002 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2003 DWDialog *dialog;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2004 NSFontManager *fontManager;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2005 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2006 -(void)setDialog:(DWDialog *)input;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2007 -(void)setFontManager:(NSFontManager *)input;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2008 -(DWDialog *)dialog;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2009 @end
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2010
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2011 @implementation DWFontChoose
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
2012 -(BOOL)windowShouldClose:(id)window
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
2013 {
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2014 DWDialog *d = dialog; dialog = nil;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2015 NSFont *pickedfont = [fontManager selectedFont];
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
2016 dw_dialog_dismiss(d, pickedfont);
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
2017 [window orderOut:nil];
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
2018 return NO;
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2019 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2020 -(void)setDialog:(DWDialog *)input { dialog = input; }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2021 -(void)setFontManager:(NSFontManager *)input { fontManager = input; }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2022 -(DWDialog *)dialog { return dialog; }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2023 @end
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
2024
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
2025 /* Subclass for a splitbar type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2026 @interface DWSplitBar : NSSplitView
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
2027 #ifdef BUILDING_FOR_SNOW_LEOPARD
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2028 <NSSplitViewDelegate>
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2029 #endif
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2030 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2031 void *userdata;
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
2032 float percent;
1956
2924bc788170 Mac: Added code to avoid unused variable/parameter warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1955
diff changeset
2033 NSInteger Tag;
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
2034 }
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
2035 -(void)splitViewDidResizeSubviews:(NSNotification *)aNotification;
1956
2924bc788170 Mac: Added code to avoid unused variable/parameter warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1955
diff changeset
2036 -(void)setTag:(NSInteger)tag;
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
2037 -(void *)userdata;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
2038 -(void)setUserdata:(void *)input;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
2039 -(float)percent;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
2040 -(void)setPercent:(float)input;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
2041 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
2042
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
2043 @implementation DWSplitBar
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
2044 -(void)splitViewDidResizeSubviews:(NSNotification *)aNotification
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
2045 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2046 NSArray *views = [self subviews];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2047 id object;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2048
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2049 for(object in views)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2050 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2051 if([object isMemberOfClass:[DWBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2052 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2053 DWBox *view = object;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2054 Box *box = [view box];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2055 NSSize size = [view frame].size;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2056 _do_resize(box, size.width, size.height);
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
2057 _handle_resize_events(box);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2058 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2059 }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
2060 }
1957
c15af2f757e2 Mac: Initial code to support Dark Mode on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1956
diff changeset
2061 -(void)setTag:(NSInteger)tag { Tag = tag; }
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
2062 -(void *)userdata { return userdata; }
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
2063 -(void)setUserdata:(void *)input { userdata = input; }
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
2064 -(float)percent { return percent; }
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
2065 -(void)setPercent:(float)input { percent = input; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
2066 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
2067 @end
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
2068
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2069 /* Subclass for a slider type */
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2070 @interface DWSlider : NSSlider
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2071 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2072 void *userdata;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2073 }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2074 -(void *)userdata;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2075 -(void)setUserdata:(void *)input;
704
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
2076 -(void)sliderChanged:(id)sender;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2077 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2078
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2079 @implementation DWSlider
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2080 -(void *)userdata { return userdata; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2081 -(void)setUserdata:(void *)input { userdata = input; }
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
2082 -(void)sliderChanged:(id)sender { _event_handler(self, (void *)[self integerValue], 14); }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
2083 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2084 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2085
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2086 /* Subclass for a slider type */
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2087 @interface DWScrollbar : NSScroller
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2088 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2089 void *userdata;
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
2090 double range;
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
2091 double visible;
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
2092 int vertical;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2093 }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2094 -(void *)userdata;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2095 -(void)setUserdata:(void *)input;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2096 -(float)range;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2097 -(float)visible;
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
2098 -(int)vertical;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
2099 -(void)setVertical:(int)value;
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
2100 -(void)setRange:(double)input1 andVisible:(double)input2;
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
2101 -(void)scrollerChanged:(id)sender;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2102 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2103
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2104 @implementation DWScrollbar
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2105 -(void *)userdata { return userdata; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2106 -(void)setUserdata:(void *)input { userdata = input; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2107 -(float)range { return range; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2108 -(float)visible { return visible; }
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
2109 -(int)vertical { return vertical; }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
2110 -(void)setVertical:(int)value { vertical = value; }
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
2111 -(void)setRange:(double)input1 andVisible:(double)input2 { range = input1; visible = input2; }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2112 -(void)scrollerChanged:(id)sender
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2113 {
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
2114 double max = (range - visible);
923
0ac67b62b594 Fix int to double conversion issues causing scrollbar issues on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 922
diff changeset
2115 double result = ([self doubleValue] * max);
0ac67b62b594 Fix int to double conversion issues causing scrollbar issues on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 922
diff changeset
2116 double newpos = result;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2117
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2118 switch ([sender hitPart])
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2119 {
1944
d37f30a7c233 Mac: In an earlier commit I moved code regarding NSScroller arrow positions into YOSEMITE #ifdef due to the arrows not being available since 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1943
diff changeset
2120 #ifndef BUILDING_FOR_YOSEMITE
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2121 case NSScrollerDecrementLine:
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2122 if(newpos > 0)
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2123 {
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2124 newpos--;
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2125 }
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2126 break;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2127
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2128 case NSScrollerIncrementLine:
712
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
2129 if(newpos < max)
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2130 {
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2131 newpos++;
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2132 }
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2133 break;
1944
d37f30a7c233 Mac: In an earlier commit I moved code regarding NSScroller arrow positions into YOSEMITE #ifdef due to the arrows not being available since 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1943
diff changeset
2134 #endif
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2135 case NSScrollerDecrementPage:
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
2136 newpos -= visible;
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2137 if(newpos < 0)
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2138 {
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2139 newpos = 0;
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2140 }
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2141 break;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2142
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2143 case NSScrollerIncrementPage:
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
2144 newpos += visible;
712
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
2145 if(newpos > max)
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2146 {
712
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
2147 newpos = max;
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2148 }
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2149 break;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2150
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2151 default:
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
2152 ; /* do nothing */
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2153 }
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
2154 int newposi = (int)newpos;
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
2155 newpos = (newpos - (double)newposi) > 0.5 ? (double)(newposi + 1) : (double)newposi;
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2156 if(newpos != result)
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2157 {
923
0ac67b62b594 Fix int to double conversion issues causing scrollbar issues on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 922
diff changeset
2158 [self setDoubleValue:(newpos/max)];
0ac67b62b594 Fix int to double conversion issues causing scrollbar issues on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 922
diff changeset
2159 }
1102
cfe7d2b6bc16 Added DW_INT_TO_POINTER/DW_UINT_TO_POINTER/DW_POINTER_TO_INT/DW_POINTER_TO_UINT macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1101
diff changeset
2160 _event_handler(self, DW_INT_TO_POINTER((int)newpos), 14);
707
86d76fc09237 Added support for scrollbar line and page scrolling. Need to check the calculations...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 706
diff changeset
2161 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
2162 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2163 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2164
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2165 /* Subclass for a MLE type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2166 @interface DWMLE : NSTextView
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2167 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2168 void *userdata;
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
2169 id scrollview;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2170 }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2171 -(void *)userdata;
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2172 -(void)setUserdata:(void *)input;
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
2173 -(id)scrollview;
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
2174 -(void)setScrollview:(id)input;
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2175 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2176
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2177 @implementation DWMLE
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2178 -(void *)userdata { return userdata; }
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2179 -(void)setUserdata:(void *)input { userdata = input; }
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
2180 -(id)scrollview { return scrollview; }
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
2181 -(void)setScrollview:(id)input { scrollview = input; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
2182 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
653
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2183 @end
36c6669422d2 Continuing to add types... looking to almost be usable. :)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 652
diff changeset
2184
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2185 /* Subclass NSTextFieldCell for displaying image and text */
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2186 @interface DWImageAndTextCell : NSTextFieldCell
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2187 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2188 @private
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2189 NSImage *image;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2190 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2191 -(void)setImage:(NSImage *)anImage;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2192 -(NSImage *)image;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2193 -(void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2194 -(NSSize)cellSize;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2195 @end
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2196
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2197 @implementation DWImageAndTextCell
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2198 -(void)dealloc
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2199 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2200 [image release];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2201 image = nil;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2202 [super dealloc];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2203 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2204 -copyWithZone:(NSZone *)zone
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2205 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2206 DWImageAndTextCell *cell = (DWImageAndTextCell *)[super copyWithZone:zone];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2207 cell->image = [image retain];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2208 return cell;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2209 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2210 -(void)setImage:(NSImage *)anImage
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2211 {
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2212 if(anImage != image)
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2213 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2214 [image release];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2215 image = [anImage retain];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2216 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2217 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2218 -(NSImage *)image
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2219 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2220 return [[image retain] autorelease];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2221 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2222 -(NSRect)imageFrameForCellFrame:(NSRect)cellFrame
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2223 {
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2224 if(image != nil)
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2225 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2226 NSRect imageFrame;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2227 imageFrame.size = [image size];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2228 imageFrame.origin = cellFrame.origin;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2229 imageFrame.origin.x += 3;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2230 imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2);
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2231 return imageFrame;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2232 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2233 else
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2234 return NSZeroRect;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2235 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2236 -(void)editWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject event:(NSEvent *)theEvent
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2237 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2238 NSRect textFrame, imageFrame;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2239 NSDivideRect (aRect, &imageFrame, &textFrame, 3 + [image size].width, NSMinXEdge);
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2240 [super editWithFrame: textFrame inView: controlView editor:textObj delegate:anObject event: theEvent];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2241 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2242 -(void)selectWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject start:(NSInteger)selStart length:(NSInteger)selLength
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2243 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2244 NSRect textFrame, imageFrame;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2245 NSDivideRect (aRect, &imageFrame, &textFrame, 3 + [image size].width, NSMinXEdge);
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2246 [super selectWithFrame: textFrame inView: controlView editor:textObj delegate:anObject start:selStart length:selLength];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2247 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2248 -(void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2249 {
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2250 if(image != nil)
1210
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
2251 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2252 NSSize imageSize;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2253 NSRect imageFrame;
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
2254 SEL sdir = NSSelectorFromString(@"drawInRect:fromRect:operation:fraction:respectFlipped:hints:");
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
2255 NSCompositingOperation op = DWCompositingOperationSourceOver;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2256
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2257 imageSize = [image size];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2258 NSDivideRect(cellFrame, &imageFrame, &cellFrame, 3 + imageSize.width, NSMinXEdge);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2259 if ([self drawsBackground])
1210
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
2260 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2261 [[self backgroundColor] set];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2262 NSRectFill(imageFrame);
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2263 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2264 imageFrame.origin.x += 3;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2265 imageFrame.size = imageSize;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2266
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
2267 /* New method for 10.6 and later */
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
2268 if([image respondsToSelector:sdir])
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
2269 {
1993
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
2270 DWIMP idir = (DWIMP)[image methodForSelector:sdir];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2271
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
2272 imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2273
1914
3872ab37297b Fix numerous deprecation warnings building with SDK 10.12 Sierra.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1908
diff changeset
2274 idir(image, sdir, imageFrame, NSZeroRect, op, 1.0, YES, nil);
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
2275 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2276 else
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
2277 {
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
2278 /* Old method for 10.5 */
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
2279 SEL sctp = NSSelectorFromString(@"compositeToPoint:operation:");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2280
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2281 if ([controlView isFlipped])
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2282 imageFrame.origin.y += ceil((cellFrame.size.height + imageFrame.size.height) / 2);
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2283 else
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2284 imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2);
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2285
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
2286 if([image respondsToSelector:sctp])
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
2287 {
1993
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
2288 DWIMP ictp = (DWIMP)[image methodForSelector:sctp];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2289
1914
3872ab37297b Fix numerous deprecation warnings building with SDK 10.12 Sierra.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1908
diff changeset
2290 ictp(image, sctp, imageFrame.origin, op);
1779
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
2291 }
f77b76c86d19 Readd support for 10.5... the drawInRect method I was using only supports 10.6 and higher...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1778
diff changeset
2292 }
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2293 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2294 [super drawWithFrame:cellFrame inView:controlView];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2295 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2296 -(NSSize)cellSize
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2297 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2298 NSSize cellSize = [super cellSize];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2299 cellSize.width += (image ? [image size].width : 0) + 3;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2300 return cellSize;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2301 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2302 @end
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2303
655
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
2304 /* Subclass for a Container/List type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2305 @interface DWContainer : NSTableView
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
2306 #ifdef BUILDING_FOR_SNOW_LEOPARD
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
2307 <NSTableViewDataSource,NSTableViewDelegate>
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2308 #endif
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
2309 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2310 void *userdata;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2311 NSMutableArray *tvcols;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2312 NSMutableArray *data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2313 NSMutableArray *types;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2314 NSPointerArray *titles;
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2315 NSPointerArray *rowdatas;
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2316 NSColor *fgcolor, *oddcolor, *evencolor;
1958
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2317 unsigned long dw_oddcolor, dw_evencolor;
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2318 unsigned long _DW_COLOR_ROW_ODD, _DW_COLOR_ROW_EVEN;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2319 int lastAddPoint, lastQueryPoint;
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
2320 id scrollview;
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
2321 int filesystem;
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2322 }
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2323 -(NSInteger)numberOfRowsInTableView:(NSTableView *)aTable;
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2324 -(id)tableView:(NSTableView *)aTable objectValueForTableColumn:(NSTableColumn *)aCol row:(NSInteger)aRow;
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
2325 -(BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
2326 -(void *)userdata;
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
2327 -(void)setUserdata:(void *)input;
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
2328 -(void)setFilesystem:(int)input;
831
168b9db65825 Minor fix for dw_container_column_set_width() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 829
diff changeset
2329 -(int)filesystem;
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
2330 -(id)scrollview;
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
2331 -(void)setScrollview:(id)input;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
2332 -(void)addColumn:(NSTableColumn *)input andType:(int)type;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
2333 -(NSTableColumn *)getColumn:(int)col;
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2334 -(int)addRow:(NSArray *)input;
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2335 -(int)addRows:(int)number;
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2336 -(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
2337 -(void)editCell:(id)input at:(int)row and:(int)col;
662
d7badd5606ca Removed the Carbon source file, and changes to configure to build the Cocoa version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 661
diff changeset
2338 -(void)removeRow:(int)row;
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
2339 -(void)setRow:(int)row title:(const char *)input;
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2340 -(void *)getRowTitle:(int)row;
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
2341 -(id)getRow:(int)row and:(int)col;
662
d7badd5606ca Removed the Carbon source file, and changes to configure to build the Cocoa version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 661
diff changeset
2342 -(int)cellType:(int)col;
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2343 -(int)lastAddPoint;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
2344 -(int)lastQueryPoint;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
2345 -(void)setLastQueryPoint:(int)input;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
2346 -(void)clear;
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
2347 -(void)setup;
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2348 -(void)optimize;
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2349 -(NSSize)getsize;
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2350 -(void)setForegroundColor:(NSColor *)input;
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
2351 -(void)doubleClicked:(id)sender;
829
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
2352 -(void)keyUp:(NSEvent *)theEvent;
867
139acecd6ca0 Guess I wanted to trap didClickTableColumn instead of mouseDownInHeaderOfTableColumn to avoid spurious events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 866
diff changeset
2353 -(void)tableView:(NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn;
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2354 -(void)selectionChanged:(id)sender;
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2355 -(NSMenu *)menuForEvent:(NSEvent *)event;
1924
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2356 #ifdef BUILDING_FOR_LION1
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2357 -(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row;
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2358 #endif
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
2359 @end
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
2360
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
2361 @implementation DWContainer
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2362 -(NSInteger)numberOfRowsInTableView:(NSTableView *)aTable
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2363 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2364 if(tvcols && data)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2365 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2366 int cols = (int)[tvcols count];
1134
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
2367 int total = (int)[data count];
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
2368 if(cols && total)
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
2369 {
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
2370 return total / cols;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2371 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2372 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2373 return 0;
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2374 }
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2375 -(id)tableView:(NSTableView *)aTable objectValueForTableColumn:(NSTableColumn *)aCol row:(NSInteger)aRow
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
2376 {
1134
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
2377 if(tvcols && data)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2378 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2379 int z, col = -1;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2380 int count = (int)[tvcols count];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2381
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2382 for(z=0;z<count;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2383 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2384 if([tvcols objectAtIndex:z] == aCol)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2385 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2386 col = z;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2387 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2388 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2389 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2390 if(col != -1)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2391 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2392 int index = (int)(aRow * count) + col;
1134
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
2393 if(index < [data count])
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
2394 {
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
2395 id this = [data objectAtIndex:index];
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
2396 return ([this isKindOfClass:[NSNull class]]) ? nil : this;
41a93f9896e3 Avoid an array out of bounds after container clear on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1133
diff changeset
2397 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2398 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2399 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2400 return nil;
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
2401 }
1924
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2402 #ifdef BUILDING_FOR_LION1
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2403 -(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2404 {
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2405 ItemCellView *result = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2406 Item *item = [self.items objectAtIndex:row];
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2407 result.imageView.image = item.itemIcon;
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2408 result.textField.stringValue = item.itemDisplayName;
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2409 result.detailTextField.stringValue = item.itemKind;
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2410 return result;
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2411 }
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
2412 #endif
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
2413 -(BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex { return NO; }
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2414 -(void *)userdata { return userdata; }
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2415 -(void)setUserdata:(void *)input { userdata = input; }
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
2416 -(void)setFilesystem:(int)input { filesystem = input; }
831
168b9db65825 Minor fix for dw_container_column_set_width() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 829
diff changeset
2417 -(int)filesystem { return filesystem; }
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2418 -(id)scrollview { return scrollview; }
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2419 -(void)setScrollview:(id)input { scrollview = input; }
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
2420 -(void)addColumn:(NSTableColumn *)input andType:(int)type { if(tvcols) { [tvcols addObject:input]; [types addObject:[NSNumber numberWithInt:type]]; } }
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
2421 -(NSTableColumn *)getColumn:(int)col { if(tvcols) { return [tvcols objectAtIndex:col]; } return nil; }
1958
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2422 -(void)refreshColors
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2423 {
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2424 NSColor *oldodd = oddcolor;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2425 NSColor *oldeven = evencolor;
1958
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2426 unsigned long thisodd = dw_oddcolor == DW_CLR_DEFAULT ? _DW_COLOR_ROW_ODD : dw_oddcolor;
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2427 unsigned long _odd = _get_color(thisodd);
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2428 unsigned long thiseven = dw_evencolor == DW_CLR_DEFAULT ? _DW_COLOR_ROW_EVEN : dw_evencolor;
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2429 unsigned long _even = _get_color(thiseven);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2430
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2431 /* Get the NSColor for non-default colors */
1958
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2432 if(thisodd != DW_RGB_TRANSPARENT)
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2433 oddcolor = [[NSColor colorWithDeviceRed: DW_RED_VALUE(_odd)/255.0 green: DW_GREEN_VALUE(_odd)/255.0 blue: DW_BLUE_VALUE(_odd)/255.0 alpha: 1] retain];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2434 else
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2435 oddcolor = NULL;
1958
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2436 if(thiseven != DW_RGB_TRANSPARENT)
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2437 evencolor = [[NSColor colorWithDeviceRed: DW_RED_VALUE(_even)/255.0 green: DW_GREEN_VALUE(_even)/255.0 blue: DW_BLUE_VALUE(_even)/255.0 alpha: 1] retain];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2438 else
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2439 evencolor = NULL;
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2440 [oldodd release];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2441 [oldeven release];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2442 }
1958
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2443 -(void)setRowBgOdd:(unsigned long)oddcol andEven:(unsigned long)evencol
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2444 {
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2445 /* Save the set colors in case we get a theme change */
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2446 dw_oddcolor = oddcol;
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2447 dw_evencolor = evencol;
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2448 [self refreshColors];
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2449 }
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2450 -(void)checkDark
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2451 {
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2452 /* Update any system colors based on the Dark Mode */
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2453 _DW_COLOR_ROW_EVEN = DW_RGB_TRANSPARENT;
1984
09a102c92788 Mac: Fix building on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1983
diff changeset
2454 if(_is_dark(self))
1958
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2455 _DW_COLOR_ROW_ODD = DW_RGB(100, 100, 100);
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2456 else
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2457 _DW_COLOR_ROW_ODD = DW_RGB(230, 230, 230);
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2458 /* Only refresh if we've been setup already */
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2459 if(titles)
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2460 [self refreshColors];
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2461 }
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2462 -(void)viewDidChangeEffectiveAppearance { [self checkDark]; }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2463 -(int)insertRow:(NSArray *)input at:(int)index
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2464 {
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2465 if(data)
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2466 {
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
2467 unsigned long start = [tvcols count] * index;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2468 NSIndexSet *set = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(start, start + [tvcols count])];
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
2469 if(index < lastAddPoint)
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
2470 {
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
2471 lastAddPoint++;
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
2472 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2473 [data insertObjects:input atIndexes:set];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2474 [titles insertPointer:NULL atIndex:index];
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2475 [rowdatas insertPointer:NULL atIndex:index];
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
2476 [set release];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2477 return (int)[titles count];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2478 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2479 return 0;
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2480 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2481 -(int)addRow:(NSArray *)input
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2482 {
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2483 if(data)
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2484 {
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2485 lastAddPoint = (int)[titles count];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2486 [data addObjectsFromArray:input];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2487 [titles addPointer:NULL];
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2488 [rowdatas addPointer:NULL];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2489 return (int)[titles count];
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2490 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2491 return 0;
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
2492 }
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2493 -(int)addRows:(int)number
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
2494 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2495 if(tvcols)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2496 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2497 int count = (int)(number * [tvcols count]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2498 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2499
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2500 lastAddPoint = (int)[titles count];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2501
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2502 for(z=0;z<count;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2503 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2504 [data addObject:[NSNull null]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2505 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2506 for(z=0;z<number;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2507 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2508 [titles addPointer:NULL];
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2509 [rowdatas addPointer:NULL];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2510 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2511 return (int)[titles count];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2512 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2513 return 0;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2514 }
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2515 -(void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2516 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2517 DWImageAndTextCell *bcell = cell;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2518
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2519 /* Handle drawing image and text if necessary */
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2520 if([cell isMemberOfClass:[DWImageAndTextCell class]])
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2521 {
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2522 int index = (int)(row * [tvcols count]);
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2523 DWImageAndTextCell *browsercell = [data objectAtIndex:index];
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2524 NSImage *img = [browsercell image];
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2525 [bcell setImage:img];
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2526 }
1215
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2527 if([cell isKindOfClass:[NSTextFieldCell class]])
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2528 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2529 /* Handle drawing alternating row colors if enabled */
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2530 if ((row % 2) == 0)
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2531 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2532 if(evencolor)
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2533 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2534 [bcell setDrawsBackground:YES];
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2535 [bcell setBackgroundColor:evencolor];
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2536 }
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2537 else
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2538 [bcell setDrawsBackground:NO];
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2539 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2540 else
1215
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2541 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2542 if(oddcolor)
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2543 {
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2544 [bcell setDrawsBackground:YES];
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2545 [bcell setBackgroundColor:oddcolor];
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2546 }
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2547 else
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2548 [bcell setDrawsBackground:NO];
dc8ea09605f7 Can't set the background on Image cells apparently on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1212
diff changeset
2549 }
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2550 }
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2551 }
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
2552 -(void)editCell:(id)input at:(int)row and:(int)col
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
2553 {
1288
d10969835d2d Changes to allow removing icon on BITMAPORICON container columns on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1279
diff changeset
2554 if(tvcols)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2555 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2556 int index = (int)(row * [tvcols count]) + col;
934
13384e89964c Put in a bounds check just on a hunch when editing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 933
diff changeset
2557 if(index < [data count])
13384e89964c Put in a bounds check just on a hunch when editing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 933
diff changeset
2558 {
1288
d10969835d2d Changes to allow removing icon on BITMAPORICON container columns on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1279
diff changeset
2559 if(!input)
d10969835d2d Changes to allow removing icon on BITMAPORICON container columns on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1279
diff changeset
2560 input = [NSNull null];
934
13384e89964c Put in a bounds check just on a hunch when editing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 933
diff changeset
2561 [data replaceObjectAtIndex:index withObject:input];
13384e89964c Put in a bounds check just on a hunch when editing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 933
diff changeset
2562 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2563 }
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
2564 }
662
d7badd5606ca Removed the Carbon source file, and changes to configure to build the Cocoa version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 661
diff changeset
2565 -(void)removeRow:(int)row
d7badd5606ca Removed the Carbon source file, and changes to configure to build the Cocoa version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 661
diff changeset
2566 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2567 if(tvcols)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2568 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2569 int z, start, end;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2570 int count = (int)[tvcols count];
1874
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2571 void *oldtitle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2572
1705
3fa0448d3a7e Fixed a bug in dw_container_delete_row() on Mac and potentially a similar bug in dw_container_delete().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1704
diff changeset
2573 start = (count * row);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2574 end = start + count;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
2575
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2576 for(z=start;z<end;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2577 {
1705
3fa0448d3a7e Fixed a bug in dw_container_delete_row() on Mac and potentially a similar bug in dw_container_delete().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1704
diff changeset
2578 [data removeObjectAtIndex:start];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2579 }
1874
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2580 oldtitle = [titles pointerAtIndex:row];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2581 [titles removePointerAtIndex:row];
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2582 [rowdatas removePointerAtIndex:row];
1705
3fa0448d3a7e Fixed a bug in dw_container_delete_row() on Mac and potentially a similar bug in dw_container_delete().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1704
diff changeset
2583 if(lastAddPoint > 0 && lastAddPoint > row)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2584 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2585 lastAddPoint--;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2586 }
1874
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2587 if(oldtitle)
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2588 free(oldtitle);
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2589 }
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2590 }
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
2591 -(void)setRow:(int)row title:(const char *)input
1874
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2592 {
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2593 if(titles && input)
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2594 {
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2595 void *oldtitle = [titles pointerAtIndex:row];
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
2596 void *newtitle = input ? (void *)strdup(input) : NULL;
1874
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2597 [titles replacePointerAtIndex:row withPointer:newtitle];
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2598 if(oldtitle)
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2599 free(oldtitle);
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2600 }
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2601 }
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2602 -(void)setRowData:(int)row title:(void *)input { if(rowdatas && input) { [rowdatas replacePointerAtIndex:row withPointer:input]; } }
683
7385011c3327 Fixed a minor issue causing crashes when right clicking on an empty container.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 682
diff changeset
2603 -(void *)getRowTitle:(int)row { if(titles && row > -1) { return [titles pointerAtIndex:row]; } return NULL; }
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2604 -(void *)getRowData:(int)row { if(rowdatas && row > -1) { return [rowdatas pointerAtIndex:row]; } return NULL; }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
2605 -(id)getRow:(int)row and:(int)col { if(data) { int index = (int)(row * [tvcols count]) + col; return [data objectAtIndex:index]; } return nil; }
662
d7badd5606ca Removed the Carbon source file, and changes to configure to build the Cocoa version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 661
diff changeset
2606 -(int)cellType:(int)col { return [[types objectAtIndex:col] intValue]; }
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
2607 -(int)lastAddPoint { return lastAddPoint; }
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
2608 -(int)lastQueryPoint { return lastQueryPoint; }
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
2609 -(void)setLastQueryPoint:(int)input { lastQueryPoint = input; }
1874
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2610 -(void)clear
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2611 {
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2612 if(data)
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2613 {
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2614 [data removeAllObjects];
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2615 while([titles count])
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2616 {
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2617 void *oldtitle = [titles pointerAtIndex:0];
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2618 [titles removePointerAtIndex:0];
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2619 [rowdatas removePointerAtIndex:0];
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2620 if(oldtitle)
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2621 free(oldtitle);
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2622 }
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2623 }
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2624 lastAddPoint = 0;
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2625 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2626 -(void)setup
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2627 {
1774
4cc999e757a3 Check for pointerArrayWithWeakObjects before weakObjectsPointerArray on Mac
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1773
diff changeset
2628 SEL swopa = NSSelectorFromString(@"pointerArrayWithWeakObjects");
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2629
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2630 if(![[NSPointerArray class] respondsToSelector:swopa])
1774
4cc999e757a3 Check for pointerArrayWithWeakObjects before weakObjectsPointerArray on Mac
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1773
diff changeset
2631 swopa = NSSelectorFromString(@"weakObjectsPointerArray");
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2632 if(![[NSPointerArray class] respondsToSelector:swopa])
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2633 return;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2634
1993
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
2635 DWIMP iwopa = (DWIMP)[[NSPointerArray class] methodForSelector:swopa];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2636
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2637 titles = iwopa([NSPointerArray class], swopa);
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
2638 [titles retain];
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2639 rowdatas = iwopa([NSPointerArray class], swopa);
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2640 [rowdatas retain];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2641 tvcols = [[[NSMutableArray alloc] init] retain];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2642 data = [[[NSMutableArray alloc] init] retain];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2643 types = [[[NSMutableArray alloc] init] retain];
1958
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2644 if(!dw_oddcolor && !dw_evencolor)
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2645 dw_oddcolor = dw_evencolor = DW_CLR_DEFAULT;
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
2646 [self checkDark];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2647 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(selectionChanged:) name:NSTableViewSelectionDidChangeNotification object:self];
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2648 }
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2649 -(NSSize)getsize
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2650 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2651 int cwidth = 0, cheight = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2652
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2653 if(tvcols)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2654 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2655 int z;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2656 int colcount = (int)[tvcols count];
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2657 int rowcount = (int)[self numberOfRowsInTableView:self];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2658
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2659 for(z=0;z<colcount;z++)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2660 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2661 NSTableColumn *column = [tvcols objectAtIndex:z];
1574
ae5e322584cd Use [NSTableColumn width] method to get header width on Mac instead of frame size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1573
diff changeset
2662 int width = [column width];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2663
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2664 if(rowcount > 0)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2665 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2666 int x;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2667
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2668 for(x=0;x<rowcount;x++)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2669 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2670 NSCell *cell = [self preparedCellAtColumn:z row:x];
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2671 int thiswidth = [cell cellSize].width;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2672
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2673 /* If on the first column... add up the heights */
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2674 if(z == 0)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2675 cheight += [cell cellSize].height;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2676
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2677 /* Check the image inside the cell to get its width */
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2678 if([cell isMemberOfClass:[NSImageCell class]])
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2679 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2680 int index = (int)(x * [tvcols count]) + z;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2681 NSImage *image = [data objectAtIndex:index];
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2682 if([image isMemberOfClass:[NSImage class]])
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2683 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2684 thiswidth = [image size].width;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2685 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2686 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
2687
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2688 if(thiswidth > width)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2689 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2690 width = thiswidth;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2691 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2692 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2693 /* If the image is missing default the optimized width to 16. */
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2694 if(!width && [[types objectAtIndex:z] intValue] & DW_CFA_BITMAPORICON)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2695 {
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2696 width = 16;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2697 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2698 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2699 if(width)
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2700 cwidth += width;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2701 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2702 }
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2703 cwidth += 16;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2704 cheight += 16;
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2705 return NSMakeSize(cwidth, cheight);
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
2706 }
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2707 -(void)optimize
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2708 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2709 if(tvcols)
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2710 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2711 int z;
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2712 int colcount = (int)[tvcols count];
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2713 int rowcount = (int)[self numberOfRowsInTableView:self];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2714
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2715 for(z=0;z<colcount;z++)
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2716 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2717 NSTableColumn *column = [tvcols objectAtIndex:z];
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2718 if([column resizingMask] != NSTableColumnNoResizing)
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2719 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2720 if(rowcount > 0)
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2721 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2722 int x;
1135
6828a01ecf3c Include the header column text width during container optimize on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1134
diff changeset
2723 NSCell *colcell = [column headerCell];
6828a01ecf3c Include the header column text width during container optimize on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1134
diff changeset
2724 int width = [colcell cellSize].width;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2725
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2726 for(x=0;x<rowcount;x++)
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2727 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2728 NSCell *cell = [self preparedCellAtColumn:z row:x];
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2729 int thiswidth = [cell cellSize].width;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2730
866
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2731 /* Check the image inside the cell to get its width */
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2732 if([cell isMemberOfClass:[NSImageCell class]])
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2733 {
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2734 int index = (int)(x * [tvcols count]) + z;
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2735 NSImage *image = [data objectAtIndex:index];
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2736 if([image isMemberOfClass:[NSImage class]])
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2737 {
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2738 thiswidth = [image size].width;
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2739 }
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2740 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2741
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2742 if(thiswidth > width)
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2743 {
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2744 width = thiswidth;
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2745 }
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2746 }
866
ba9d38b8d0bc Added code to check the image size inside the cell during optimize.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 864
diff changeset
2747 /* If the image is missing default the optimized width to 16. */
864
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
2748 if(!width && [[types objectAtIndex:z] intValue] & DW_CFA_BITMAPORICON)
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
2749 {
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
2750 width = 16;
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
2751 }
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
2752 /* Sanity check... don't set the width to 0 */
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
2753 if(width)
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
2754 {
1963
80f6be39b7fe Mac: Miscellaneous container/listox fixes. Add a single pixel to the column
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1959
diff changeset
2755 [column setWidth:width+1];
864
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
2756 }
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2757 }
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2758 else
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2759 {
1963
80f6be39b7fe Mac: Miscellaneous container/listox fixes. Add a single pixel to the column
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1959
diff changeset
2760 if(self.headerView)
80f6be39b7fe Mac: Miscellaneous container/listox fixes. Add a single pixel to the column
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1959
diff changeset
2761 [column sizeToFit];
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2762 }
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2763 }
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2764 }
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2765 }
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
2766 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2767 -(void)setForegroundColor:(NSColor *)input
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2768 {
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2769 int z, count = (int)[tvcols count];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2770
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2771 fgcolor = input;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2772 [fgcolor retain];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2773
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2774 for(z=0;z<count;z++)
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2775 {
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2776 NSTableColumn *tableColumn = [tvcols objectAtIndex:z];
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2777 NSTextFieldCell *cell = [tableColumn dataCell];
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2778 [cell setTextColor:fgcolor];
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2779 }
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2780 }
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
2781 -(void)doubleClicked:(id)sender
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
2782 {
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2783 void *params[2];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
2784
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2785 params[0] = (void *)[self getRowTitle:(int)[self selectedRow]];
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2786 params[1] = (void *)[self getRowData:(int)[self selectedRow]];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
2787
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
2788 /* Handler for container class */
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2789 _event_handler(self, (NSEvent *)params, 9);
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
2790 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2791 -(void)keyUp:(NSEvent *)theEvent
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2792 {
829
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
2793 if([[theEvent charactersIgnoringModifiers] characterAtIndex:0] == VK_RETURN)
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2794 {
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2795 void *params[2];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
2796
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2797 params[0] = (void *)[self getRowTitle:(int)[self selectedRow]];
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2798 params[1] = (void *)[self getRowData:(int)[self selectedRow]];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
2799
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
2800 _event_handler(self, (NSEvent *)params, 9);
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2801 }
829
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
2802 [super keyUp:theEvent];
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
2803 }
f7b6c88bac47 Implemented Enter/Return triggering the item enter event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 828
diff changeset
2804
867
139acecd6ca0 Guess I wanted to trap didClickTableColumn instead of mouseDownInHeaderOfTableColumn to avoid spurious events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 866
diff changeset
2805 -(void)tableView:(NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
2806 {
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
2807 NSUInteger index = [tvcols indexOfObject:tableColumn];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
2808
803
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
2809 /* Handler for column click class */
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
2810 _event_handler(self, (NSEvent *)index, 17);
803
8555ac1bcbcd Attempt at implementing column click events. Doesn't seem to work yet but needed to commit before switching to laptop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 802
diff changeset
2811 }
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2812 -(void)selectionChanged:(id)sender
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2813 {
1874
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2814 void *params[2];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
2815
1874
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2816 params[0] = (void *)[self getRowTitle:(int)[self selectedRow]];
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2817 params[1] = (void *)[self getRowData:(int)[self selectedRow]];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
2818
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
2819 /* Handler for container class */
1874
71c8a45b2a35 Fixes for Mac code and allocate and free duplicates of title strings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1871
diff changeset
2820 _event_handler(self, (NSEvent *)params, 12);
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
2821 /* Handler for listbox class */
1102
cfe7d2b6bc16 Added DW_INT_TO_POINTER/DW_UINT_TO_POINTER/DW_POINTER_TO_INT/DW_POINTER_TO_UINT macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1101
diff changeset
2822 _event_handler(self, DW_INT_TO_POINTER((int)[self selectedRow]), 11);
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2823 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2824 -(NSMenu *)menuForEvent:(NSEvent *)event
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2825 {
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2826 int row;
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2827 NSPoint where = [self convertPoint:[event locationInWindow] fromView:nil];
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2828 row = (int)[self rowAtPoint:where];
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2829 _event_handler(self, (NSEvent *)[self getRowTitle:row], 10);
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2830 return nil;
659
756015085da7 Fixes for container signal handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 658
diff changeset
2831 }
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2832 -(void)keyDown:(NSEvent *)theEvent
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2833 {
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
2834 unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
2835
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
2836 if(vk == NSTabCharacter || vk == NSBackTabCharacter)
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2837 [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2838 [super keyDown:theEvent];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2839 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2840 -(void)insertTab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectNextKeyView:self]; }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
2841 -(void)insertBacktab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectPreviousKeyView:self]; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
2842 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
2843 @end
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2844
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
2845 /* Dive into the tree freeing all desired child nodes */
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2846 void _free_tree_recurse(NSMutableArray *node, NSMutableArray *item)
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2847 {
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
2848 if(node && ([node isKindOfClass:[NSArray class]]))
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2849 {
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2850 int count = (int)[node count];
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
2851 NSInteger index = -1;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2852 int z;
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
2853
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
2854 if(item)
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
2855 index = [node indexOfObject:item];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2856
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2857 for(z=0;z<count;z++)
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2858 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2859 NSMutableArray *pnt = [node objectAtIndex:z];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2860 NSMutableArray *children = nil;
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
2861
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
2862 if(pnt && [pnt isKindOfClass:[NSArray class]])
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2863 {
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2864 children = (NSMutableArray *)[pnt objectAtIndex:3];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2865 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2866
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
2867 if(z == index)
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2868 {
1048
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
2869 _free_tree_recurse(children, NULL);
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
2870 [node removeObjectAtIndex:z];
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
2871 count = (int)[node count];
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
2872 index = -1;
1048
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
2873 z--;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2874 }
1048
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
2875 else if(item == NULL)
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
2876 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2877 NSString *oldstr = [pnt objectAtIndex:1];
1048
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
2878 [oldstr release];
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
2879 _free_tree_recurse(children, item);
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
2880 }
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
2881 else
70bad8a91370 Fix for dw_tree_item_delete() not working if there are no child nodes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1045
diff changeset
2882 _free_tree_recurse(children, item);
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2883 }
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2884 }
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2885 if(!item)
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2886 {
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2887 [node release];
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2888 }
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2889 }
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2890
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2891 /* Subclass for a Tree type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2892 @interface DWTree : NSOutlineView
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
2893 #ifdef BUILDING_FOR_SNOW_LEOPARD
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
2894 <NSOutlineViewDataSource,NSOutlineViewDelegate>
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
2895 #endif
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2896 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2897 void *userdata;
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2898 NSTableColumn *treecol;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2899 NSMutableArray *data;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2900 /* Each data item consists of a linked lists of tree item data.
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2901 * NSImage *, NSString *, Item Data *, NSMutableArray * of Children
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2902 */
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2903 id scrollview;
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2904 NSColor *fgcolor;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2905 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2906 -(id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2907 -(BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2908 -(int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2909 -(id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item;
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2910 -(void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item;
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
2911 -(BOOL)outlineView:(NSOutlineView *)outlineView shouldEditTableColumn:(NSTableColumn *)tableColumn item:(id)item;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2912 -(void)addTree:(NSMutableArray *)item and:(NSMutableArray *)parent after:(NSMutableArray *)after;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2913 -(void *)userdata;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2914 -(void)setUserdata:(void *)input;
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
2915 -(void)treeSelectionChanged:(id)sender;
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
2916 -(void)treeItemExpanded:(NSNotification *)notification;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2917 -(NSScrollView *)scrollview;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2918 -(void)setScrollview:(NSScrollView *)input;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2919 -(void)deleteNode:(NSMutableArray *)item;
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
2920 -(void)setForegroundColor:(NSColor *)input;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
2921 -(void)clear;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2922 @end
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2923
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2924 @implementation DWTree
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2925 -(id)init
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2926 {
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2927 self = [super init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2928
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2929 if (self)
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2930 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2931 treecol = [[NSTableColumn alloc] init];
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2932 DWImageAndTextCell *browsercell = [[[DWImageAndTextCell alloc] init] autorelease];
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2933 [treecol setDataCell:browsercell];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2934 [self addTableColumn:treecol];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2935 [self setOutlineTableColumn:treecol];
743
4462bc7de1e3 Possible fix for container (and possibly tree) controls picking up combobox events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 742
diff changeset
2936 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(treeSelectionChanged:) name:NSOutlineViewSelectionDidChangeNotification object:self];
4462bc7de1e3 Possible fix for container (and possibly tree) controls picking up combobox events.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 742
diff changeset
2937 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(treeItemExpanded:) name:NSOutlineViewItemDidExpandNotification object:self];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2938 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2939 return self;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2940 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2941 -(id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2942 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2943 if(item)
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2944 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2945 NSMutableArray *array = [item objectAtIndex:3];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2946 return ([array isKindOfClass:[NSNull class]]) ? nil : [array objectAtIndex:index];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2947 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2948 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2949 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2950 return [data objectAtIndex:index];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2951 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2952 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2953 -(BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2954 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2955 return [self outlineView:outlineView numberOfChildrenOfItem:item] != 0;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2956 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2957 -(int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2958 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2959 if(item)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2960 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2961 if([item isKindOfClass:[NSMutableArray class]])
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2962 {
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2963 NSMutableArray *array = [item objectAtIndex:3];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2964 return ([array isKindOfClass:[NSNull class]]) ? 0 : (int)[array count];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2965 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2966 else
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2967 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2968 return 0;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2969 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2970 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2971 else
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2972 {
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2973 return data ? (int)[data count] : 0;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2974 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2975 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2976 -(id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2977 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2978 if(item)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2979 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2980 if([item isKindOfClass:[NSMutableArray class]])
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2981 {
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2982 NSMutableArray *this = (NSMutableArray *)item;
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2983 return [this objectAtIndex:1];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2984 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2985 else
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
2986 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2987 return nil;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2988 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
2989 }
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2990 return @"List Root";
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
2991 }
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2992 -(void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2993 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2994 if([cell isMemberOfClass:[DWImageAndTextCell class]])
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
2995 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2996 NSMutableArray *this = (NSMutableArray *)item;
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
2997 NSImage *img = [this objectAtIndex:0];
1067
6ca1132a240e Allow tree nodes without icons using the new NSMutableArray tree code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1065
diff changeset
2998 if([img isKindOfClass:[NSImage class]])
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
2999 [(DWImageAndTextCell*)cell setImage:img];
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
3000 }
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
3001 }
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
3002 -(BOOL)outlineView:(NSOutlineView *)outlineView shouldEditTableColumn:(NSTableColumn *)tableColumn item:(id)item { return NO; }
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
3003 -(void)addTree:(NSMutableArray *)item and:(NSMutableArray *)parent after:(NSMutableArray *)after
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3004 {
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3005 NSMutableArray *children = data;
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3006 if(parent)
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3007 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
3008 children = [parent objectAtIndex:3];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
3009 if([children isKindOfClass:[NSNull class]])
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3010 {
692
bd909322f40d Added "retain"s to the DWTree/DWContainer/DWListBox classes memory allocation
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 691
diff changeset
3011 children = [[[NSMutableArray alloc] init] retain];
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
3012 [parent replaceObjectAtIndex:3 withObject:children];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3013 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3014 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3015 else
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3016 {
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3017 if(!data)
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3018 {
692
bd909322f40d Added "retain"s to the DWTree/DWContainer/DWListBox classes memory allocation
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 691
diff changeset
3019 children = data = [[[NSMutableArray alloc] init] retain];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3020 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3021 }
1064
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
3022 if(after)
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
3023 {
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
3024 NSInteger index = [children indexOfObject:after];
1100
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
3025 int count = (int)[children count];
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
3026 if(index != NSNotFound && (index+1) < count)
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
3027 [children insertObject:item atIndex:(index+1)];
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
3028 else
13ea7575d9e8 Fixed a problem with dw_tree_item_delete() due to earlier tree data storage changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1099
diff changeset
3029 [children addObject:item];
1064
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
3030 }
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
3031 else
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
3032 {
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
3033 [children addObject:item];
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
3034 }
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3035 }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3036 -(void *)userdata { return userdata; }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3037 -(void)setUserdata:(void *)input { userdata = input; }
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
3038 -(void)treeSelectionChanged:(id)sender
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
3039 {
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
3040 /* Handler for tree class */
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
3041 id item = [self itemAtRow:[self selectedRow]];
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
3042
713
2c8fc0fd8c11 Don't send tree events with no selected item. Also don't strdup a NULL string.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 712
diff changeset
3043 if(item)
2c8fc0fd8c11 Don't send tree events with no selected item. Also don't strdup a NULL string.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 712
diff changeset
3044 {
2c8fc0fd8c11 Don't send tree events with no selected item. Also don't strdup a NULL string.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 712
diff changeset
3045 _event_handler(self, (void *)item, 12);
2c8fc0fd8c11 Don't send tree events with no selected item. Also don't strdup a NULL string.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 712
diff changeset
3046 }
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
3047 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3048 -(void)treeItemExpanded:(NSNotification *)notification
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3049 {
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
3050 id item = [[notification userInfo ] objectForKey: @"NSObject"];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3051
722
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
3052 if(item)
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
3053 {
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
3054 _event_handler(self, (void *)item, 16);
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
3055 }
5a8d5161651d Implemented tree expand event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 721
diff changeset
3056 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3057 -(NSMenu *)menuForEvent:(NSEvent *)event
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
3058 {
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
3059 int row;
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
3060 NSPoint where = [self convertPoint:[event locationInWindow] fromView:nil];
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
3061 row = (int)[self rowAtPoint:where];
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
3062 id item = [self itemAtRow:row];
1061
d91e09dc3865 Fix for the item data field of the context event always being NULL even for tree items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1051
diff changeset
3063 _event_handler(self, (NSEvent *)item, 10);
710
78460ff977c1 Finishing up tree event/signal handlers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 709
diff changeset
3064 return nil;
709
5a268d5f1cfa Fixes for tree event handling. Still more to come shortly...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 708
diff changeset
3065 }
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3066 -(NSScrollView *)scrollview { return scrollview; }
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3067 -(void)setScrollview:(NSScrollView *)input { scrollview = input; }
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
3068 -(void)deleteNode:(NSMutableArray *)item { _free_tree_recurse(data, item); }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3069 -(void)setForegroundColor:(NSColor *)input
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3070 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
3071 NSTextFieldCell *cell = [treecol dataCell];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3072 fgcolor = input;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3073 [fgcolor retain];
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
3074 [cell setTextColor:fgcolor];
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
3075 }
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
3076 -(void)clear { NSMutableArray *toclear = data; data = nil; _free_tree_recurse(toclear, NULL); [self reloadData]; }
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3077 -(void)keyDown:(NSEvent *)theEvent
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3078 {
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
3079 unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
1819
d784b85b632e Change incorrect call to DW_MUTEX_LOCK to DW_MUTEX_UNLOCK in dw_mle_get_size()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1809
diff changeset
3080
1809
5efaea897310 Fixed back tab handling for certain controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1808
diff changeset
3081 if(vk == NSTabCharacter || vk == NSBackTabCharacter)
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3082 [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3083 [super keyDown:theEvent];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3084 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3085 -(void)insertTab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectNextKeyView:self]; }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3086 -(void)insertBacktab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectPreviousKeyView:self]; }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3087 -(void)dealloc
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3088 {
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3089 UserData *root = userdata;
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3090 _remove_userdata(&root, NULL, TRUE);
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3091 _free_tree_recurse(data, NULL);
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
3092 [treecol release];
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
3093 dw_signal_disconnect_by_window(self);
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3094 [super dealloc];
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
3095 }
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3096 @end
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
3097
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
3098 /* Subclass for a Calendar type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3099 @interface DWCalendar : NSDatePicker
655
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
3100 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3101 void *userdata;
655
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
3102 }
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
3103 -(void *)userdata;
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
3104 -(void)setUserdata:(void *)input;
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
3105 @end
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
3106
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
3107 @implementation DWCalendar
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
3108 -(void *)userdata { return userdata; }
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
3109 -(void)setUserdata:(void *)input { userdata = input; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
3110 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
655
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
3111 @end
27eb39d2577b Calendar and HTML functions filled in.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 654
diff changeset
3112
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
3113 /* Subclass for a Combobox type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3114 @interface DWComboBox : NSComboBox
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
3115 #ifdef BUILDING_FOR_SNOW_LEOPARD
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
3116 <NSComboBoxDelegate>
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
3117 #endif
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
3118 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3119 void *userdata;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
3120 id clickDefault;
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
3121 }
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
3122 -(void *)userdata;
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
3123 -(void)setUserdata:(void *)input;
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
3124 -(void)comboBoxSelectionDidChange:(NSNotification *)not;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
3125 -(void)setClickDefault:(id)input;
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
3126 @end
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
3127
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
3128 @implementation DWComboBox
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
3129 -(void *)userdata { return userdata; }
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
3130 -(void)setUserdata:(void *)input { userdata = input; }
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
3131 -(void)comboBoxSelectionDidChange:(NSNotification *)not { _event_handler(self, (void *)[self indexOfSelectedItem], 11); }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
3132 -(void)setClickDefault:(id)input { clickDefault = input; }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3133 -(void)keyUp:(NSEvent *)theEvent
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3134 {
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
3135 if(clickDefault && [[theEvent charactersIgnoringModifiers] characterAtIndex:0] == VK_RETURN)
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3136 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3137 [[self window] makeFirstResponder:clickDefault];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3138 } else
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3139 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3140 [super keyUp:theEvent];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3141 }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
3142 }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
3143 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3144 @end
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3145
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3146 /* Subclass for a stepper component of the spinbutton type */
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3147 /* This is a bad way of doing this... but I can't get the other methods to work */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3148 @interface DWStepper : NSStepper
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3149 {
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3150 id textfield;
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
3151 id parent;
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3152 }
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3153 -(void)setTextfield:(id)input;
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3154 -(id)textfield;
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
3155 -(void)setParent:(id)input;
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
3156 -(id)parent;
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3157 -(void)mouseDown:(NSEvent *)event;
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3158 -(void)mouseUp:(NSEvent *)event;
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3159 @end
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3160
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3161 @implementation DWStepper
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3162 -(void)setTextfield:(id)input { textfield = input; }
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3163 -(id)textfield { return textfield; }
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
3164 -(void)setParent:(id)input { parent = input; }
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
3165 -(id)parent { return parent; }
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3166 -(void)mouseDown:(NSEvent *)event
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3167 {
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3168 [super mouseDown:event];
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
3169 if([[NSApp currentEvent] type] == DWEventTypeLeftMouseUp)
1302
5fbf384780d1 Simplified the DWStepper class a bit on Mac... although it really needs rewriting.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1301
diff changeset
3170 [self mouseUp:event];
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3171 }
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3172 -(void)mouseUp:(NSEvent *)event
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3173 {
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3174 [textfield takeIntValueFrom:self];
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
3175 _event_handler(parent, (void *)[self integerValue], 14);
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3176 }
1806
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3177 -(void)keyDown:(NSEvent *)theEvent
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3178 {
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3179 unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3180 if(vk == VK_UP || vk == VK_DOWN)
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3181 {
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3182 if(vk == VK_UP)
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3183 [self setIntegerValue:([self integerValue]+[self increment])];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3184 else
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3185 [self setIntegerValue:([self integerValue]-[self increment])];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3186 [self mouseUp:theEvent];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3187 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3188 else
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3189 {
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3190 [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3191 [super keyDown:theEvent];
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3192 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3193 }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3194 -(void)insertTab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectNextKeyView:self]; }
eecf0eb609d8 Added keyboard handling for (check/radio/spin)buttons, containers, trees, lists on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1805
diff changeset
3195 -(void)insertBacktab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectPreviousKeyView:self]; }
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3196 @end
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3197
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3198 /* Subclass for a Spinbutton type */
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3199 @interface DWSpinButton : NSView
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
3200 #ifdef BUILDING_FOR_SNOW_LEOPARD
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
3201 <NSTextFieldDelegate>
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
3202 #endif
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3203 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3204 void *userdata;
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3205 NSTextField *textfield;
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3206 DWStepper *stepper;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
3207 id clickDefault;
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3208 }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3209 -(id)init;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3210 -(void *)userdata;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3211 -(void)setUserdata:(void *)input;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3212 -(NSTextField *)textfield;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3213 -(NSStepper *)stepper;
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3214 -(void)controlTextDidChange:(NSNotification *)aNotification;
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
3215 -(void)setClickDefault:(id)input;
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3216 @end
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3217
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3218 @implementation DWSpinButton
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3219 -(id)init
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3220 {
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3221 self = [super init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3222
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3223 if(self)
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3224 {
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
3225 textfield = [[[NSTextField alloc] init] autorelease];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3226 [self addSubview:textfield];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
3227 stepper = [[[DWStepper alloc] init] autorelease];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3228 [self addSubview:stepper];
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
3229 [stepper setParent:self];
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3230 [stepper setTextfield:textfield];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3231 [textfield takeIntValueFrom:stepper];
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3232 [textfield setDelegate:self];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3233 }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3234 return self;
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3235 }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3236 -(void *)userdata { return userdata; }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3237 -(void)setUserdata:(void *)input { userdata = input; }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3238 -(NSTextField *)textfield { return textfield; }
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3239 -(NSStepper *)stepper { return stepper; }
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3240 -(void)controlTextDidChange:(NSNotification *)aNotification
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3241 {
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3242 [stepper takeIntValueFrom:textfield];
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
3243 [textfield takeIntValueFrom:stepper];
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
3244 _event_handler(self, (void *)[stepper integerValue], 14);
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
3245 }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
3246 -(void)setClickDefault:(id)input { clickDefault = input; }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3247 -(void)keyUp:(NSEvent *)theEvent
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3248 {
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
3249 if(clickDefault && [[theEvent charactersIgnoringModifiers] characterAtIndex:0] == VK_RETURN)
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3250 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3251 [[self window] makeFirstResponder:clickDefault];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3252 }
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3253 else
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3254 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3255 [super keyUp:theEvent];
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3256 }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
3257 }
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
3258 -(void)performClick:(id)sender { [textfield performClick:sender]; }
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
3259 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
3260 @end
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
3261
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3262 /* Subclass for a MDI type
684
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
3263 * This is just a box for display purposes... but it is a
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
3264 * unique class so it can be identified when creating windows.
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
3265 */
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
3266 @interface DWMDI : DWBox {}
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
3267 @end
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
3268
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
3269 @implementation DWMDI
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
3270 @end
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
3271
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3272 /* This function adds a signal handler callback into the linked list.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3273 */
1853
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
3274 void _new_signal(ULONG message, HWND window, int msgid, void *signalfunction, void *discfunc, void *data)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3275 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3276 SignalHandler *new = malloc(sizeof(SignalHandler));
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3277
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3278 new->message = message;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3279 new->window = window;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3280 new->id = msgid;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3281 new->signalfunction = signalfunction;
1853
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
3282 new->discfunction = discfunc;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3283 new->data = data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3284 new->next = NULL;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3285
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3286 if (!Root)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3287 Root = new;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3288 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3289 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3290 SignalHandler *prev = NULL, *tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3291 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3292 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3293 if(tmp->message == message &&
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3294 tmp->window == window &&
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3295 tmp->id == msgid &&
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3296 tmp->signalfunction == signalfunction)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3297 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3298 tmp->data = data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3299 free(new);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3300 return;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3301 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3302 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3303 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3304 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3305 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3306 prev->next = new;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3307 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3308 Root = new;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3309 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3310 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3311
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3312 /* Finds the message number for a given signal name */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
3313 ULONG _findsigmessage(const char *signame)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3314 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3315 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3316
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3317 for(z=0;z<SIGNALMAX;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3318 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3319 if(strcasecmp(signame, SignalTranslate[z].name) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3320 return SignalTranslate[z].message;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3321 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3322 return 0L;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3323 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3324
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3325 unsigned long _foreground = 0xAAAAAA, _background = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3326
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3327 void _handle_resize_events(Box *thisbox)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3328 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3329 int z;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3330
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3331 for(z=0;z<thisbox->count;z++)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3332 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3333 id handle = thisbox->items[z].hwnd;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3334
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3335 if(thisbox->items[z].type == TYPEBOX)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3336 {
1906
fac81560eb09 Fix a number of warning generated by the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1905
diff changeset
3337 Box *tmp = (Box *)[handle box];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3338
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3339 if(tmp)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3340 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3341 _handle_resize_events(tmp);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3342 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3343 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3344 else
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3345 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3346 if([handle isMemberOfClass:[DWRender class]])
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3347 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3348 DWRender *render = (DWRender *)handle;
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3349 NSSize oldsize = [render size];
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3350 NSSize newsize = [render frame].size;
1941
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
3351
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
3352 /* The 10.14 appkit warns this property does nothing... not sure
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
3353 * how long that has been the case but just removing it for Mojave.
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
3354 */
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
3355 #ifndef BUILDING_FOR_MOJAVE
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3356 NSWindow *window = [render window];
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
3357
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3358 if([window preferredBackingLocation] != NSWindowBackingLocationVideoMemory)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3359 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3360 [window setPreferredBackingLocation:NSWindowBackingLocationVideoMemory];
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3361 }
1941
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
3362 #endif
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
3363
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3364 /* Eliminate duplicate configure requests */
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3365 if(oldsize.width != newsize.width || oldsize.height != newsize.height)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3366 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3367 if(newsize.width > 0 && newsize.height > 0)
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3368 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3369 [render setSize:newsize];
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3370 _event_handler(handle, nil, 1);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3371 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3372 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3373 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3374 /* Special handling for notebook controls */
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3375 else if([handle isMemberOfClass:[DWNotebook class]])
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3376 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3377 DWNotebook *notebook = (DWNotebook *)handle;
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3378 DWNotebookPage *notepage = (DWNotebookPage *)[notebook selectedTabViewItem];
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3379 id view = [notepage view];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3380
1805
2bcdc3cfffa7 Make sure the view packed into the notebook on Mac is a DWBox class...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1802
diff changeset
3381 if([view isMemberOfClass:[DWBox class]])
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3382 {
1906
fac81560eb09 Fix a number of warning generated by the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1905
diff changeset
3383 Box *box = (Box *)[view box];
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3384 _handle_resize_events(box);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3385 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3386 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3387 /* Handle laying out scrollviews... if required space is less
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3388 * than available space, then expand. Otherwise use required space.
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3389 */
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3390 else if([handle isMemberOfClass:[DWScrollBox class]])
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3391 {
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3392 DWScrollBox *scrollbox = (DWScrollBox *)handle;
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3393 DWBox *contentbox = [scrollbox documentView];
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3394 Box *thisbox = [contentbox box];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3395
916
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3396 /* Get the required space for the box */
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3397 _handle_resize_events(thisbox);
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3398 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3399 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3400 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3401 }
44a0f9a2e8f9 Experimental change, pulling the resize event handling out of the resizer code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 915
diff changeset
3402
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3403 /* This function calculates how much space the widgets and boxes require
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3404 * and does expansion as necessary.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3405 */
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3406 static void _resize_box(Box *thisbox, int *depth, int x, int y, int pass)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3407 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3408 /* Current item position */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3409 int z, currentx = thisbox->pad, currenty = thisbox->pad;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3410 /* Used x, y and padding maximum values...
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3411 * These will be used to find the widest or
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3412 * tallest items in a box.
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3413 */
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3414 int uymax = 0, uxmax = 0;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3415 int upymax = 0, upxmax = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3416
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3417 /* Reset the box sizes */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3418 thisbox->minwidth = thisbox->minheight = thisbox->usedpadx = thisbox->usedpady = thisbox->pad * 2;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3419
798
1b0a0775ec19 Ok... groupbox calculation fix try #2!
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 797
diff changeset
3420 /* Handle special groupbox case */
1b0a0775ec19 Ok... groupbox calculation fix try #2!
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 797
diff changeset
3421 if(thisbox->grouphwnd)
1b0a0775ec19 Ok... groupbox calculation fix try #2!
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 797
diff changeset
3422 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3423 /* Only calculate the size on the first pass...
1442
02a329b2b0cd Added groupbox perfomance improvement to Windows and OS/2 that was missed when importing from the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1438
diff changeset
3424 * use the cached values on second.
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3425 */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3426 if(pass == 1)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3427 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3428 DWGroupBox *groupbox = thisbox->grouphwnd;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3429 NSSize borderSize = [groupbox borderSize];
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3430 NSRect titleRect;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3431
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3432 if(borderSize.width == 0 || borderSize.height == 0)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3433 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3434 borderSize = [groupbox initBorder];
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3435 }
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3436 /* Get the title size for a more accurate groupbox padding size */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3437 titleRect = [groupbox titleRect];
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3438
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3439 thisbox->grouppadx = borderSize.width;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3440 thisbox->grouppady = borderSize.height + titleRect.size.height;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3441 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3442
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3443 thisbox->minwidth += thisbox->grouppadx;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3444 thisbox->usedpadx += thisbox->grouppadx;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3445 thisbox->minheight += thisbox->grouppady;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3446 thisbox->usedpady += thisbox->grouppady;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3447 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3448
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3449 /* Count up all the space for all items in the box */
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3450 for(z=0;z<thisbox->count;z++)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3451 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3452 int itempad, itemwidth, itemheight;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3453
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3454 if(thisbox->items[z].type == TYPEBOX)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3455 {
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
3456 id box = thisbox->items[z].hwnd;
1906
fac81560eb09 Fix a number of warning generated by the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1905
diff changeset
3457 Box *tmp = (Box *)[box box];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3458
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3459 if(tmp)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3460 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3461 /* On the first pass calculate the box contents */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3462 if(pass == 1)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3463 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3464 (*depth)++;
1449
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
3465
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3466 /* Save the newly calculated values on the box */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3467 _resize_box(tmp, depth, x, y, pass);
1449
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
3468
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3469 /* Duplicate the values in the item list for use below */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3470 thisbox->items[z].width = tmp->minwidth;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3471 thisbox->items[z].height = tmp->minheight;
1449
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
3472
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
3473 /* If the box has no contents but is expandable... default the size to 1 */
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
3474 if(!thisbox->items[z].width && thisbox->items[z].hsize)
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
3475 thisbox->items[z].width = 1;
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
3476 if(!thisbox->items[z].height && thisbox->items[z].vsize)
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
3477 thisbox->items[z].height = 1;
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
3478
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3479 (*depth)--;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3480 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3481 }
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3482 }
1449
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
3483
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3484 /* Precalculate these values, since they will
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3485 * be used used repeatedly in the next section.
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3486 */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3487 itempad = thisbox->items[z].pad * 2;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3488 itemwidth = thisbox->items[z].width + itempad;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3489 itemheight = thisbox->items[z].height + itempad;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3490
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3491 /* Calculate the totals and maximums */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3492 if(thisbox->type == DW_VERT)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3493 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3494 if(itemwidth > uxmax)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3495 uxmax = itemwidth;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3496
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3497 if(thisbox->items[z].hsize != SIZEEXPAND)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3498 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3499 if(itemwidth > upxmax)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3500 upxmax = itemwidth;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3501 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3502 else
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3503 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3504 if(itempad > upxmax)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3505 upxmax = itempad;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3506 }
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3507 thisbox->minheight += itemheight;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3508 if(thisbox->items[z].vsize != SIZEEXPAND)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3509 thisbox->usedpady += itemheight;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3510 else
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3511 thisbox->usedpady += itempad;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3512 }
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3513 else
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3514 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3515 if(itemheight > uymax)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3516 uymax = itemheight;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3517 if(thisbox->items[z].vsize != SIZEEXPAND)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3518 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3519 if(itemheight > upymax)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3520 upymax = itemheight;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3521 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3522 else
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3523 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3524 if(itempad > upymax)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3525 upymax = itempad;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3526 }
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3527 thisbox->minwidth += itemwidth;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3528 if(thisbox->items[z].hsize != SIZEEXPAND)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3529 thisbox->usedpadx += itemwidth;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3530 else
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3531 thisbox->usedpadx += itempad;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3532 }
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3533 }
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3534
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3535 /* Add the maximums which were calculated in the previous loop */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3536 thisbox->minwidth += uxmax;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3537 thisbox->minheight += uymax;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3538 thisbox->usedpadx += upxmax;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3539 thisbox->usedpady += upymax;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3540
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3541 /* The second pass is for actual placement. */
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3542 if(pass > 1)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3543 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3544 for(z=0;z<(thisbox->count);z++)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3545 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3546 int height = thisbox->items[z].height;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3547 int width = thisbox->items[z].width;
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3548 int itempad = thisbox->items[z].pad * 2;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3549 int thispad = thisbox->pad * 2;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3550
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3551 /* Calculate the new sizes */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3552 if(thisbox->items[z].hsize == SIZEEXPAND)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3553 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3554 if(thisbox->type == DW_HORZ)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3555 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3556 int expandablex = thisbox->minwidth - thisbox->usedpadx;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3557
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3558 if(expandablex)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3559 width = (int)(((float)width / (float)expandablex) * (float)(x - thisbox->usedpadx));
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3560 }
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3561 else
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3562 width = x - (itempad + thispad + thisbox->grouppadx);
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3563 }
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3564 if(thisbox->items[z].vsize == SIZEEXPAND)
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3565 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3566 if(thisbox->type == DW_VERT)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3567 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3568 int expandabley = thisbox->minheight - thisbox->usedpady;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3569
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3570 if(expandabley)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3571 height = (int)(((float)height / (float)expandabley) * (float)(y - thisbox->usedpady));
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3572 }
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3573 else
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3574 height = y - (itempad + thispad + thisbox->grouppady);
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3575 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3576
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3577 /* If the calculated size is valid... */
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3578 if(height > 0 && width > 0)
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3579 {
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3580 int pad = thisbox->items[z].pad;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3581 NSView *handle = thisbox->items[z].hwnd;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3582 NSPoint point;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3583 NSSize size;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3584
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3585 point.x = currentx + pad;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3586 point.y = currenty + pad;
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3587 size.width = width;
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3588 size.height = height;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3589 [handle setFrameOrigin:point];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3590 [handle setFrameSize:size];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3591
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3592 /* After placing a box... place its components */
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3593 if(thisbox->items[z].type == TYPEBOX)
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3594 {
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3595 id box = thisbox->items[z].hwnd;
1906
fac81560eb09 Fix a number of warning generated by the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1905
diff changeset
3596 Box *tmp = (Box *)[box box];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3597
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3598 if(tmp)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3599 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3600 (*depth)++;
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3601 _resize_box(tmp, depth, width, height, pass);
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3602 (*depth)--;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3603 }
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3604 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3605
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3606 /* Special handling for notebook controls */
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3607 if([handle isMemberOfClass:[DWNotebook class]])
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3608 {
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3609 DWNotebook *notebook = (DWNotebook *)handle;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3610 DWNotebookPage *notepage = (DWNotebookPage *)[notebook selectedTabViewItem];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3611 id view = [notepage view];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3612
1805
2bcdc3cfffa7 Make sure the view packed into the notebook on Mac is a DWBox class...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1802
diff changeset
3613 if([view isMemberOfClass:[DWBox class]])
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3614 {
1906
fac81560eb09 Fix a number of warning generated by the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1905
diff changeset
3615 Box *box = (Box *)[view box];
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3616 NSSize size = [view frame].size;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3617 _do_resize(box, size.width, size.height);
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3618 _handle_resize_events(box);
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3619 }
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
3620 }
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3621 /* Handle laying out scrollviews... if required space is less
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3622 * than available space, then expand. Otherwise use required space.
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3623 */
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3624 else if([handle isMemberOfClass:[DWScrollBox class]])
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3625 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3626 int depth = 0;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3627 DWScrollBox *scrollbox = (DWScrollBox *)handle;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3628 DWBox *contentbox = [scrollbox documentView];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3629 Box *thisbox = [contentbox box];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3630 NSSize contentsize = [scrollbox contentSize];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3631
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3632 /* Get the required space for the box */
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3633 _resize_box(thisbox, &depth, x, y, 1);
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3634
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3635 if(contentsize.width < thisbox->minwidth)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3636 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3637 contentsize.width = thisbox->minwidth;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3638 }
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3639 if(contentsize.height < thisbox->minheight)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3640 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3641 contentsize.height = thisbox->minheight;
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3642 }
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3643 [contentbox setFrameSize:contentsize];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3644
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3645 /* Layout the content of the scrollbox */
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3646 _do_resize(thisbox, contentsize.width, contentsize.height);
929
d7e88ac1647c Removed some code that had been used for debugging the layout code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 928
diff changeset
3647 _handle_resize_events(thisbox);
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3648 }
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3649 /* Special handling for spinbutton controls */
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3650 else if([handle isMemberOfClass:[DWSpinButton class]])
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3651 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3652 DWSpinButton *spinbutton = (DWSpinButton *)handle;
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3653 NSTextField *textfield = [spinbutton textfield];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3654 NSStepper *stepper = [spinbutton stepper];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3655 [textfield setFrameOrigin:NSMakePoint(0,0)];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3656 [textfield setFrameSize:NSMakeSize(size.width-20,size.height)];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3657 [stepper setFrameOrigin:NSMakePoint(size.width-20,0)];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3658 [stepper setFrameSize:NSMakeSize(20,size.height)];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3659 }
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
3660 else if([handle isMemberOfClass:[DWSplitBar class]])
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3661 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3662 DWSplitBar *split = (DWSplitBar *)handle;
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
3663 DWWindow *window = (DWWindow *)[split window];
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3664 float percent = [split percent];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
3665
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
3666 if(percent > 0 && size.width > 20 && size.height > 20)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3667 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3668 dw_splitbar_set(handle, percent);
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3669 [split setPercent:0];
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3670 }
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
3671 else if([window redraw])
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
3672 {
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
3673 [split splitViewDidResizeSubviews:nil];
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
3674 }
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3675 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3676
1438
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
3677 /* Advance the current position in the box */
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3678 if(thisbox->type == DW_HORZ)
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3679 currentx += width + (pad * 2);
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3680 if(thisbox->type == DW_VERT)
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3681 currenty += height + (pad * 2);
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
3682 }
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3683 }
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3684 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3685 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3686
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3687 static void _do_resize(Box *thisbox, int x, int y)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3688 {
943
675c12b1b90e Changed check from x and y not being zero to x and y being greater than zero since it seems values can be negative on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 942
diff changeset
3689 if(x > 0 && y > 0)
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3690 {
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3691 if(thisbox)
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3692 {
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3693 int depth = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3694
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3695 /* Calculate space requirements */
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3696 _resize_box(thisbox, &depth, x, y, 1);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3697
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3698 /* Finally place all the boxes and controls */
1437
a50e8b486a1a Initial layout engine 2.0 for the Mac... Windows and OS/2 may not compile until
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1435
diff changeset
3699 _resize_box(thisbox, &depth, x, y, 2);
928
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3700 }
43a5b3c78c41 Two fixes... the first is on the fly calculation of groupbox border size. This also fixes some initial window issues...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 927
diff changeset
3701 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3702 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3703
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
3704 NSMenu *_generate_main_menu()
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
3705 {
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
3706 NSString *applicationName = nil;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3707
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
3708 /* This only works on 10.6 so we have a backup method */
719
d5e49ef8f541 Updated the #if for Snow Leopard/Leopard builds to handle them not being defined properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 718
diff changeset
3709 #ifdef BUILDING_FOR_SNOW_LEOPARD
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
3710 applicationName = [[NSRunningApplication currentApplication] localizedName];
717
17923b931393 Fixes for building for MacOS 10.5 and PPC
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 715
diff changeset
3711 #endif
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
3712 if(applicationName == nil)
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
3713 {
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
3714 applicationName = [[NSProcessInfo processInfo] processName];
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
3715 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3716
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3717 /* Create the main menu */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3718 NSMenu * mainMenu = [[[NSMenu alloc] initWithTitle:@"MainMenu"] autorelease];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3719
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3720 NSMenuItem * mitem = [mainMenu addItemWithTitle:@"Apple" action:NULL keyEquivalent:@""];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3721 NSMenu * menu = [[[NSMenu alloc] initWithTitle:@"Apple"] autorelease];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3722
1905
0d67f00866b7 A few more warning fixes for OS X 10.10, and a bug fix for the new mac dw_messagebox() code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1904
diff changeset
3723 #if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3724 [DWApp performSelector:@selector(setAppleMenu:) withObject:menu];
1905
0d67f00866b7 A few more warning fixes for OS X 10.10, and a bug fix for the new mac dw_messagebox() code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1904
diff changeset
3725 #endif
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3726
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3727 /* Setup the Application menu */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3728 NSMenuItem * item = [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"About", nil), applicationName]
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3729 action:@selector(orderFrontStandardAboutPanel:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3730 keyEquivalent:@""];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3731 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3732
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3733 [menu addItem:[NSMenuItem separatorItem]];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3734
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3735 item = [menu addItemWithTitle:NSLocalizedString(@"Services", nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3736 action:NULL
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3737 keyEquivalent:@""];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3738 NSMenu * servicesMenu = [[[NSMenu alloc] initWithTitle:@"Services"] autorelease];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3739 [menu setSubmenu:servicesMenu forItem:item];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3740 [DWApp setServicesMenu:servicesMenu];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3741
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3742 [menu addItem:[NSMenuItem separatorItem]];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3743
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3744 item = [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Hide", nil), applicationName]
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3745 action:@selector(hide:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3746 keyEquivalent:@"h"];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3747 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3748
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3749 item = [menu addItemWithTitle:NSLocalizedString(@"Hide Others", nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3750 action:@selector(hideOtherApplications:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3751 keyEquivalent:@"h"];
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
3752 [item setKeyEquivalentModifierMask:DWEventModifierFlagCommand | DWEventModifierFlagOption];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3753 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3754
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3755 item = [menu addItemWithTitle:NSLocalizedString(@"Show All", nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3756 action:@selector(unhideAllApplications:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3757 keyEquivalent:@""];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3758 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3759
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3760 [menu addItem:[NSMenuItem separatorItem]];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3761
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3762 item = [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Quit", nil), applicationName]
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3763 action:@selector(terminate:)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3764 keyEquivalent:@"q"];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3765 [item setTarget:DWApp];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3766
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3767 [mainMenu setSubmenu:menu forItem:mitem];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3768
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3769 return mainMenu;
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
3770 }
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
3771
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
3772 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3773 * Runs a message loop for Dynamic Windows.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3774 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3775 void API dw_main(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3776 {
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
3777 #ifndef BUILDING_FOR_MOJAVE
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
3778 dw_mutex_lock(DWRunMutex);
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
3779 #endif
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
3780 DWThread = dw_thread_id();
1449
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
3781 /* Make sure any queued redraws are handled */
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
3782 _dw_redraw(0, FALSE);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3783 [DWApp run];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
3784 DWThread = (DWTID)-1;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
3785 #ifndef BUILDING_FOR_MOJAVE
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
3786 dw_mutex_unlock(DWRunMutex);
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
3787 #endif
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3788 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3789
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3790 /*
1528
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
3791 * Causes running dw_main() to return.
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
3792 */
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
3793 void API dw_main_quit(void)
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
3794 {
1529
92bed442620a Didn't notice that [NSApplication stop] took a sender parameter on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1528
diff changeset
3795 [DWApp stop:nil];
1558
9c5d3ac5bec5 Attempted fix on Mac for 10.5 menu event delay issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1557
diff changeset
3796 _dw_wakeup_app();
1528
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
3797 }
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
3798
5facb5380944 Added dw_main_quit() function for exiting the dw_main() loop.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1527
diff changeset
3799 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3800 * Runs a message loop for Dynamic Windows, for a period of milliseconds.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3801 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3802 * milliseconds: Number of milliseconds to run the loop for.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3803 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3804 void API dw_main_sleep(int milliseconds)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3805 {
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3806 DWTID curr = pthread_self();
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3807
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3808 if(DWThread == (DWTID)-1 || DWThread == curr)
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3809 {
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3810 DWTID orig = DWThread;
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
3811 NSDate *until = [NSDate dateWithTimeIntervalSinceNow:(milliseconds/1000.0)];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3812
695
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3813 if(orig == (DWTID)-1)
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3814 {
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
3815 #ifndef BUILDING_FOR_MOJAVE
728
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3816 dw_mutex_lock(DWRunMutex);
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
3817 #endif
695
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3818 DWThread = curr;
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3819 }
1449
632346743f46 Fixed dw_window_redraw() on Windows not recalculating notebook page contents if the notebook size didn't change.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1446
diff changeset
3820 /* Process any pending events */
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
3821 while(_dw_main_iteration(until))
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3822 {
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
3823 /* Just loop */
695
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3824 }
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3825 if(orig == (DWTID)-1)
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3826 {
3b17111499bf Minor updates to the last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 694
diff changeset
3827 DWThread = orig;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
3828 #ifndef BUILDING_FOR_MOJAVE
728
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3829 dw_mutex_unlock(DWRunMutex);
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
3830 #endif
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3831 }
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3832 }
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3833 else
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
3834 {
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3835 usleep(milliseconds * 1000);
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
3836 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3837 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3838
700
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3839 /* Internal version that doesn't lock the run mutex */
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
3840 int _dw_main_iteration(NSDate *date)
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
3841 {
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
3842 NSEvent *event = [DWApp nextEventMatchingMask:DWEventMaskAny
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
3843 untilDate:date
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3844 inMode:NSDefaultRunLoopMode
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3845 dequeue:YES];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3846 if(event)
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3847 {
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3848 [DWApp sendEvent:event];
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
3849 [DWApp updateWindows];
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
3850 return 1;
694
130ca42c4ae3 Reimplementation of dw_main_iteration and dw_main_sleep that actually work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 693
diff changeset
3851 }
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
3852 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3853 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3854
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3855 /*
700
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3856 * Processes a single message iteration and returns.
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3857 */
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3858 void API dw_main_iteration(void)
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3859 {
728
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3860 DWTID curr = pthread_self();
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
3861
728
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3862 if(DWThread == (DWTID)-1)
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3863 {
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
3864 #ifndef BUILDING_FOR_MOJAVE
728
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3865 dw_mutex_lock(DWRunMutex);
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
3866 #endif
728
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3867 DWThread = curr;
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3868 _dw_main_iteration([NSDate distantPast]);
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3869 DWThread = (DWTID)-1;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
3870 #ifndef BUILDING_FOR_MOJAVE
728
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3871 dw_mutex_unlock(DWRunMutex);
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
3872 #endif
728
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3873 }
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3874 else if(DWThread == curr)
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3875 {
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3876 _dw_main_iteration([NSDate distantPast]);
55f22b39ab57 Changes to correctly set the main thread and lock the run mutex when not running a loop and when called from a callback.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 727
diff changeset
3877 }
700
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3878 }
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3879
7953f0471e4d Some cleanups for the run loop iteration and thread system.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 699
diff changeset
3880 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3881 * Cleanly terminates a DW session, should be signal handler safe.
1861
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
3882 */
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
3883 void API dw_shutdown(void)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3884 {
1559
bc3a11fe9a46 Don't use _dw_pool_drain() in dw_exit() on Mac... that drains and recreates the pool.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1558
diff changeset
3885 #if !defined(GARBAGE_COLLECT)
bc3a11fe9a46 Don't use _dw_pool_drain() in dw_exit() on Mac... that drains and recreates the pool.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1558
diff changeset
3886 pool = pthread_getspecific(_dw_pool_key);
bc3a11fe9a46 Don't use _dw_pool_drain() in dw_exit() on Mac... that drains and recreates the pool.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1558
diff changeset
3887 [pool drain];
bc3a11fe9a46 Don't use _dw_pool_drain() in dw_exit() on Mac... that drains and recreates the pool.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1558
diff changeset
3888 #endif
1861
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
3889 }
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
3890
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
3891 /*
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
3892 * Cleanly terminates a DW session, should be signal handler safe.
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
3893 * Parameters:
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
3894 * exitcode: Exit code reported to the operating system.
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
3895 */
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
3896 void API dw_exit(int exitcode)
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
3897 {
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
3898 dw_shutdown();
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3899 exit(exitcode);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3900 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3901
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3902 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3903 * Free's memory allocated by dynamic windows.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3904 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3905 * ptr: Pointer to dynamic windows allocated
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3906 * memory to be free()'d.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3907 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3908 void API dw_free(void *ptr)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3909 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3910 free(ptr);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3911 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3912
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3913 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3914 * Returns a pointer to a static buffer which containes the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3915 * current user directory. Or the root directory (C:\ on
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3916 * OS/2 and Windows).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3917 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3918 char *dw_user_dir(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3919 {
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3920 static char _user_dir[PATH_MAX+1] = { 0 };
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3921
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3922 if(!_user_dir[0])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3923 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3924 char *home = getenv("HOME");
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
3925
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3926 if(home)
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3927 strncpy(_user_dir, home, PATH_MAX);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3928 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3929 strcpy(_user_dir, "/");
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3930 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3931 return _user_dir;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3932 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3933
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3934 /*
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3935 * Returns a pointer to a static buffer which containes the
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3936 * private application data directory.
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3937 */
1384
156e32814c83 Cleanup of the previous commits and added Unix support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1383
diff changeset
3938 char * API dw_app_dir(void)
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3939 {
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3940 return _dw_bundle_path;
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3941 }
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3942
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
3943 /*
2070
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3944 * Sets the application ID used by this Dynamic Windows application instance.
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3945 * Parameters:
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3946 * appid: A string typically in the form: com.company.division.application
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3947 * appguid: A globally unique identifier required on Windows or NULL.
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3948 * Returns:
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3949 * DW_ERROR_NONE after successfully setting the application ID.
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3950 * DW_ERROR_UNKNOWN if unsupported on this system.
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3951 * DW_ERROR_GENERAL if the application ID is not allowed.
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3952 * Remarks:
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3953 * This must be called before dw_init(). If dw_init() is called first
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3954 * it will create a unique ID in the form: org.dbsoft.dwindows.application
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3955 * or if the application name cannot be detected: org.dbsoft.dwindows.pid.#
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3956 * The GUID is only required on Windows, NULL can be passed on other platforms.
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3957 */
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3958 int dw_app_id_set(const char *appid, const char *appguid)
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3959 {
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3960 strncpy(_dw_app_id, appid, 100);
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3961 return DW_ERROR_NONE;
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3962 }
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3963
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
3964 /*
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3965 * Displays a debug message on the console...
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3966 * Parameters:
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3967 * format: printf style format string.
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3968 * ...: Additional variables for use in the format.
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3969 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
3970 void API dw_debug(const char *format, ...)
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3971 {
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3972 va_list args;
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3973 char outbuf[1025] = {0};
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3974
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3975 va_start(args, format);
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3976 vsnprintf(outbuf, 1024, format, args);
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3977 va_end(args);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3978
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3979 NSLog(@"%s", outbuf);
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3980 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
3981
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
3982 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3983 * Displays a Message Box with given text and title..
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3984 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3985 * title: The title of the message box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3986 * flags: flags to indicate buttons and icon
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3987 * format: printf style format string.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3988 * ...: Additional variables for use in the format.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3989 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
3990 int API dw_messagebox(const char *title, int flags, const char *format, ...)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3991 {
1895
fafe1a68f0fd Fixed OS X 10.9 issues by migrating to NSAlert from newly deprecated methods.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1887
diff changeset
3992 NSInteger iResponse;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3993 NSString *button1 = @"OK";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3994 NSString *button2 = nil;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
3995 NSString *button3 = nil;
1985
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
3996 NSString *mtitle = [NSString stringWithUTF8String:title];
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
3997 NSString *mtext;
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
3998 NSAlertStyle mstyle = DWAlertStyleWarning;
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
3999 NSArray *params;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4000 va_list args;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4001
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4002 if(flags & DW_MB_OKCANCEL)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4003 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4004 button2 = @"Cancel";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4005 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4006 else if(flags & DW_MB_YESNO)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4007 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4008 button1 = @"Yes";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4009 button2 = @"No";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4010 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4011 else if(flags & DW_MB_YESNOCANCEL)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4012 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4013 button1 = @"Yes";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4014 button2 = @"No";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4015 button3 = @"Cancel";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4016 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4017
1895
fafe1a68f0fd Fixed OS X 10.9 issues by migrating to NSAlert from newly deprecated methods.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1887
diff changeset
4018 va_start(args, format);
1985
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
4019 mtext = [[[NSString alloc] initWithFormat:[NSString stringWithUTF8String:format] arguments:args] autorelease];
1895
fafe1a68f0fd Fixed OS X 10.9 issues by migrating to NSAlert from newly deprecated methods.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1887
diff changeset
4020 va_end(args);
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
4021
1914
3872ab37297b Fix numerous deprecation warnings building with SDK 10.12 Sierra.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1908
diff changeset
4022 if(flags & DW_MB_ERROR)
1985
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
4023 mstyle = DWAlertStyleCritical;
1914
3872ab37297b Fix numerous deprecation warnings building with SDK 10.12 Sierra.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1908
diff changeset
4024 else if(flags & DW_MB_INFORMATION)
1985
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
4025 mstyle = DWAlertStyleInformational;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
4026
1985
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
4027 params = [NSMutableArray arrayWithObjects:mtitle, mtext, [NSNumber numberWithInteger:mstyle], button1, button2, button3, nil];
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
4028 [DWObj safeCall:@selector(messageBox:) withObject:params];
8d130e45430d Mac: Rewrite dw_messagebox() to make it thread safe on Mojave.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1984
diff changeset
4029 iResponse = [[params lastObject] integerValue];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
4030
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4031 switch(iResponse)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4032 {
1902
74f50459c530 Fix some deprecations introduced in Mac OS X Yosemite 10.10...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1896
diff changeset
4033 case NSAlertFirstButtonReturn: /* user pressed OK */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4034 if(flags & DW_MB_YESNO || flags & DW_MB_YESNOCANCEL)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4035 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4036 return DW_MB_RETURN_YES;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4037 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4038 return DW_MB_RETURN_OK;
1902
74f50459c530 Fix some deprecations introduced in Mac OS X Yosemite 10.10...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1896
diff changeset
4039 case NSAlertSecondButtonReturn: /* user pressed Cancel */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4040 if(flags & DW_MB_OKCANCEL)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4041 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4042 return DW_MB_RETURN_CANCEL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4043 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4044 return DW_MB_RETURN_NO;
1902
74f50459c530 Fix some deprecations introduced in Mac OS X Yosemite 10.10...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1896
diff changeset
4045 case NSAlertThirdButtonReturn: /* user pressed the third button */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4046 return DW_MB_RETURN_CANCEL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4047 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4048 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4049 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4050
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4051 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4052 * Opens a file dialog and queries user selection.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4053 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4054 * title: Title bar text for dialog.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4055 * defpath: The default path of the open dialog.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4056 * ext: Default file extention.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4057 * flags: DW_FILE_OPEN or DW_FILE_SAVE.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4058 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4059 * NULL on error. A malloced buffer containing
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4060 * the file path on success.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4061 *
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4062 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
4063 char * API dw_file_browse(const char *title, const char *defpath, const char *ext, int flags)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4064 {
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4065 char temp[PATH_MAX+1];
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4066 char *file = NULL, *path = NULL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4067 DW_LOCAL_POOL_IN;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4068
1301
7527fb644bc0 Only use default directory and filename options for Mac 10.6 and higher.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1298
diff changeset
4069 /* Figure out path information...
7527fb644bc0 Only use default directory and filename options for Mac 10.6 and higher.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1298
diff changeset
4070 * These functions are only support in Snow Leopard and later...
7527fb644bc0 Only use default directory and filename options for Mac 10.6 and higher.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1298
diff changeset
4071 */
1704
873304f581be Fix Unicode issues with the directory browser on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
4072 if(defpath && *defpath && DWOSMinor > 5)
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4073 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4074 struct stat buf;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4075
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4076 /* Get an absolute path */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4077 if(!realpath(defpath, temp))
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4078 strcpy(temp, defpath);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4079
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4080 /* Check if the defpath exists */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4081 if(stat(temp, &buf) == 0)
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4082 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4083 /* Can be a directory or file */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4084 if(buf.st_mode & S_IFDIR)
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4085 path = temp;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4086 else
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4087 file = temp;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4088 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4089 /* If it wasn't a directory... check if there is a path */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4090 if(!path && strchr(temp, '/'))
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4091 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4092 unsigned long x = strlen(temp) - 1;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4093
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4094 /* Trim off the filename */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4095 while(x > 0 && temp[x] != '/')
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4096 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4097 x--;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4098 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4099 if(temp[x] == '/')
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4100 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4101 temp[x] = 0;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4102 /* Check to make sure the trimmed piece is a directory */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4103 if(stat(temp, &buf) == 0)
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4104 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4105 if(buf.st_mode & S_IFDIR)
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4106 {
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4107 /* We now have it split */
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4108 path = temp;
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4109 file = &temp[x+1];
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4110 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4111 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4112 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4113 }
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4114 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4115
825
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
4116 if(flags == DW_FILE_OPEN || flags == DW_DIRECTORY_OPEN)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4117 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4118 /* Create the File Open Dialog class. */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4119 NSOpenPanel* openDlg = [NSOpenPanel openPanel];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4120
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4121 if(path)
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4122 {
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4123 SEL ssdu = NSSelectorFromString(@"setDirectoryURL");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4124
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4125 if([openDlg respondsToSelector:ssdu])
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4126 {
1993
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
4127 DWIMP isdu = (DWIMP)[openDlg methodForSelector:ssdu];
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4128 isdu(openDlg, ssdu, [NSURL fileURLWithPath:[NSString stringWithUTF8String:path]]);
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4129 }
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4130 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4131
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4132 /* Enable the selection of files in the dialog. */
825
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
4133 if(flags == DW_FILE_OPEN)
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
4134 {
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
4135 [openDlg setCanChooseFiles:YES];
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
4136 [openDlg setCanChooseDirectories:NO];
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
4137 }
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
4138 else
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
4139 {
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
4140 [openDlg setCanChooseFiles:NO];
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
4141 [openDlg setCanChooseDirectories:YES];
8a2e3138e1e4 Implemented DW_DIRECTORY_OPEN on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 821
diff changeset
4142 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4143
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
4144 /* Handle file types */
1704
873304f581be Fix Unicode issues with the directory browser on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
4145 if(ext && *ext)
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
4146 {
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
4147 NSArray* fileTypes = [[[NSArray alloc] initWithObjects:[NSString stringWithUTF8String:ext], nil] autorelease];
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
4148 [openDlg setAllowedFileTypes:fileTypes];
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
4149 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4150
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4151 /* Disable multiple selection */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4152 [openDlg setAllowsMultipleSelection:NO];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4153
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4154 /* Display the dialog. If the OK button was pressed,
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4155 * process the files.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4156 */
1903
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
4157 if([openDlg runModal] == DWModalResponseOK)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4158 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4159 /* Get an array containing the full filenames of all
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4160 * files and directories selected.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4161 */
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
4162 NSArray *files = [openDlg URLs];
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
4163 NSString *fileName = [[files objectAtIndex:0] path];
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
4164 if(fileName)
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4165 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4166 char *ret = strdup([ fileName UTF8String ]);
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4167 DW_LOCAL_POOL_OUT;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4168 return ret;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4169 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4170 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4171 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4172 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4173 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4174 /* Create the File Save Dialog class. */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4175 NSSavePanel* saveDlg = [NSSavePanel savePanel];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4176
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4177 if(path)
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4178 {
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4179 SEL ssdu = NSSelectorFromString(@"setDirectoryURL");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4180
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4181 if([saveDlg respondsToSelector:ssdu])
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4182 {
1993
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
4183 DWIMP isdu = (DWIMP)[saveDlg methodForSelector:ssdu];
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4184 isdu(saveDlg, ssdu, [NSURL fileURLWithPath:[NSString stringWithUTF8String:path]]);
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4185 }
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4186 }
1298
79db0563c7c2 Code to split the file and path apart on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1296
diff changeset
4187 if(file)
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4188 {
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4189 SEL ssnfsv = NSSelectorFromString(@"setNameFieldStringValue");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4190
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4191 if([saveDlg respondsToSelector:ssnfsv])
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4192 {
1993
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
4193 DWIMP isnfsv = (DWIMP)[saveDlg methodForSelector:ssnfsv];
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4194 isnfsv(saveDlg, ssnfsv, [NSString stringWithUTF8String:file]);
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4195 }
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4196 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4197
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4198 /* Enable the creation of directories in the dialog. */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4199 [saveDlg setCanCreateDirectories:YES];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4200
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
4201 /* Handle file types */
1704
873304f581be Fix Unicode issues with the directory browser on Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1679
diff changeset
4202 if(ext && *ext)
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
4203 {
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
4204 NSArray* fileTypes = [[[NSArray alloc] initWithObjects:[NSString stringWithUTF8String:ext], nil] autorelease];
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
4205 [saveDlg setAllowedFileTypes:fileTypes];
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
4206 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4207
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4208 /* Display the dialog. If the OK button was pressed,
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4209 * process the files.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4210 */
2032
5ca399fb2d6f Mac: Put back the delayed setNeedsDisplay workaround for Mojave only.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2031
diff changeset
4211 if([saveDlg runModal] == DWModalResponseOK)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4212 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4213 /* Get an array containing the full filenames of all
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4214 * files and directories selected.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4215 */
1296
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
4216 NSString* fileName = [[saveDlg URL] path];
40d62db77c90 Added some defpath support and extension support to the Mac dw_file_browse().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1291
diff changeset
4217 if(fileName)
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4218 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4219 char *ret = strdup([ fileName UTF8String ]);
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4220 DW_LOCAL_POOL_OUT;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4221 return ret;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4222 }
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4223 }
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4224 }
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
4225 DW_LOCAL_POOL_OUT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4226 return NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4227 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4228
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4229 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4230 * Gets the contents of the default clipboard as text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4231 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4232 * None.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4233 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4234 * Pointer to an allocated string of text or NULL if clipboard empty or contents could not
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4235 * be converted to text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4236 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4237 char *dw_clipboard_get_text()
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4238 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4239 NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
4240 NSString *str = [pasteboard stringForType:NSPasteboardTypeString];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4241 if(str != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4242 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4243 return strdup([ str UTF8String ]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4244 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4245 return NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4246 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4247
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4248 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4249 * Sets the contents of the default clipboard to the supplied text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4250 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4251 * Text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4252 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
4253 void dw_clipboard_set_text(const char *str, int len)
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
4254 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4255 NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4256 SEL scc = NSSelectorFromString(@"clearContents");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4257
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4258 if([pasteboard respondsToSelector:scc])
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4259 {
1993
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
4260 DWIMP icc = (DWIMP)[pasteboard methodForSelector:scc];
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
4261 icc(pasteboard, scc);
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
4262 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4263
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
4264 [pasteboard setString:[ NSString stringWithUTF8String:str ] forType:NSPasteboardTypeString];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4265 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4266
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4267
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4268 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4269 * Allocates and initializes a dialog struct.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4270 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4271 * data: User defined data to be passed to functions.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4272 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4273 DWDialog * API dw_dialog_new(void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4274 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4275 DWDialog *tmp = malloc(sizeof(DWDialog));
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4276
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4277 if(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4278 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4279 tmp->eve = dw_event_new();
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4280 dw_event_reset(tmp->eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4281 tmp->data = data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4282 tmp->done = FALSE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4283 tmp->result = NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4284 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
4285 return tmp;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4286 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4287
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4288 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4289 * Accepts a dialog struct and returns the given data to the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4290 * initial called of dw_dialog_wait().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4291 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4292 * dialog: Pointer to a dialog struct aquired by dw_dialog_new).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4293 * result: Data to be returned by dw_dialog_wait().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4294 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4295 int API dw_dialog_dismiss(DWDialog *dialog, void *result)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4296 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4297 dialog->result = result;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4298 dw_event_post(dialog->eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4299 dialog->done = TRUE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4300 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4301 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4302
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4303 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4304 * Accepts a dialog struct waits for dw_dialog_dismiss() to be
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4305 * called by a signal handler with the given dialog struct.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4306 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4307 * dialog: Pointer to a dialog struct aquired by dw_dialog_new).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4308 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4309 void * API dw_dialog_wait(DWDialog *dialog)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4310 {
1886
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
4311 void *tmp = NULL;
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
4312
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
4313 if(dialog)
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
4314 {
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
4315 while(!dialog->done)
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
4316 {
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
4317 _dw_main_iteration([NSDate dateWithTimeIntervalSinceNow:0.01]);
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
4318 }
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
4319 dw_event_close(&dialog->eve);
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
4320 tmp = dialog->result;
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
4321 free(dialog);
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
4322 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4323 return tmp;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4324 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4325
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4326 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4327 * Create a new Box to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4328 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4329 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4330 * pad: Number of pixels to pad around the box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4331 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4332 DW_FUNCTION_DEFINITION(dw_box_new, HWND, int type, int pad)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4333 DW_FUNCTION_ADD_PARAM2(type, pad)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4334 DW_FUNCTION_RETURN(dw_box_new, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4335 DW_FUNCTION_RESTORE_PARAM2(type, int, pad, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4336 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4337 DW_FUNCTION_INIT;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4338 DWBox *view = [[DWBox alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4339 Box *newbox = [view box];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4340 memset(newbox, 0, sizeof(Box));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4341 newbox->pad = pad;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
4342 newbox->type = type;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4343 DW_FUNCTION_RETURN_THIS(view);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4344 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4345
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4346 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4347 * Create a new Group Box to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4348 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4349 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4350 * pad: Number of pixels to pad around the box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4351 * title: Text to be displayined in the group outline.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4352 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
4353 HWND API dw_groupbox_new(int type, int pad, const char *title)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4354 {
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
4355 NSBox *groupbox = [[DWGroupBox alloc] init];
796
3a3fae1f31bd Initial groupbox padding calculation fix. This may still need more work... very simple version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 795
diff changeset
4356 DWBox *thisbox = dw_box_new(type, pad);
3a3fae1f31bd Initial groupbox padding calculation fix. This may still need more work... very simple version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 795
diff changeset
4357 Box *box = [thisbox box];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
4358
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
4359 [groupbox setBorderType:NSBezelBorder];
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
4360 [groupbox setTitle:[NSString stringWithUTF8String:title]];
806
16964b141964 More accurate groupbox paddig calculations. Title rectangle is now calculated on the fly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 805
diff changeset
4361 box->grouphwnd = groupbox;
796
3a3fae1f31bd Initial groupbox padding calculation fix. This may still need more work... very simple version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 795
diff changeset
4362 [groupbox setContentView:thisbox];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
4363 [thisbox autorelease];
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
4364 return groupbox;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4365 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4366
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4367 /*
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4368 * Create a new scrollable Box to be packed.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4369 * Parameters:
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4370 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4371 * pad: Number of pixels to pad around the box.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4372 */
796
3a3fae1f31bd Initial groupbox padding calculation fix. This may still need more work... very simple version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 795
diff changeset
4373 HWND API dw_scrollbox_new( int type, int pad )
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4374 {
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
4375 DWScrollBox *scrollbox = [[DWScrollBox alloc] init];
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
4376 DWBox *box = dw_box_new(type, pad);
840
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
4377 DWBox *tmpbox = dw_box_new(DW_VERT, 0);
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
4378 dw_box_pack_start(tmpbox, box, 1, 1, TRUE, TRUE, 0);
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
4379 [scrollbox setHasVerticalScroller:YES];
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
4380 [scrollbox setHasHorizontalScroller:YES];
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
4381 [scrollbox setBorderType:NSNoBorder];
838
8e0405435d0a Minor scrollbox fixes...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 837
diff changeset
4382 [scrollbox setDrawsBackground:NO];
840
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
4383 [scrollbox setBox:box];
2967934fb587 Implemented the fix for the scrollbox problem on the Mac (that was discovered on Windows)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 838
diff changeset
4384 [scrollbox setDocumentView:tmpbox];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
4385 [tmpbox autorelease];
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
4386 return scrollbox;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4387 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4388
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4389 /*
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4390 * Returns the position of the scrollbar in the scrollbox
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4391 * Parameters:
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4392 * handle: Handle to the scrollbox to be queried.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4393 * orient: The vertical or horizontal scrollbar.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4394 */
796
3a3fae1f31bd Initial groupbox padding calculation fix. This may still need more work... very simple version.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 795
diff changeset
4395 int API dw_scrollbox_get_pos(HWND handle, int orient)
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4396 {
844
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4397 DWScrollBox *scrollbox = handle;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4398 NSView *view = [scrollbox documentView];
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4399 NSSize contentsize = [scrollbox contentSize];
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4400 NSScroller *scrollbar;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4401 int range = 0;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4402 int val = 0;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4403 if(orient == DW_VERT)
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4404 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4405 scrollbar = [scrollbox verticalScroller];
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4406 range = [view bounds].size.height - contentsize.height;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4407 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4408 else
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4409 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4410 scrollbar = [scrollbox horizontalScroller];
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4411 range = [view bounds].size.width - contentsize.width;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4412 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4413 if(range > 0)
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4414 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4415 val = [scrollbar floatValue] * range;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4416 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4417 return val;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4418 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4419
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4420 /*
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4421 * Gets the range for the scrollbar in the scrollbox.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4422 * Parameters:
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4423 * handle: Handle to the scrollbox to be queried.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4424 * orient: The vertical or horizontal scrollbar.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4425 */
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4426 int API dw_scrollbox_get_range(HWND handle, int orient)
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4427 {
844
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4428 DWScrollBox *scrollbox = handle;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4429 NSView *view = [scrollbox documentView];
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4430 int range = 0;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4431 if(orient == DW_VERT)
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4432 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4433 range = [view bounds].size.height;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4434 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4435 else
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4436 {
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4437 range = [view bounds].size.width;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4438 }
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4439 return range;
5103d132c3cd Implemented dw_scrollbox_get_range() and dw_scrollbox_get_pos() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 840
diff changeset
4440 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
4441
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4442 /* Return the handle to the text object */
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4443 id _text_handle(id object)
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4444 {
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4445 if([object isMemberOfClass:[ DWSpinButton class]])
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4446 {
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4447 DWSpinButton *spinbutton = object;
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4448 object = [spinbutton textfield];
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4449 }
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4450 if([object isMemberOfClass:[ NSBox class]])
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4451 {
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4452 NSBox *box = object;
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4453 id content = [box contentView];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4454
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4455 if([content isMemberOfClass:[ DWText class]])
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4456 {
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4457 object = content;
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4458 }
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4459 }
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4460 return object;
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4461 }
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4462
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4463 /* Internal function to calculate the widget's required size..
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4464 * These are the general rules for widget sizes:
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4465 *
1537
a4ecef1980db Added code for returning a size for scrolled widgets on OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1533
diff changeset
4466 * Render/Unspecified: 1x1
1556
4a9c574d5c17 Fixed on Windows showing themed static text on colored boxes when the window is glass.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1553
diff changeset
4467 * Scrolled(Container,Tree,MLE): Guessed size clamped to min and max in dw.h
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4468 * Entryfield/Combobox/Spinbutton: 150x(maxfontheight)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4469 * Spinbutton: 50x(maxfontheight)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4470 * Text/Status: (textwidth)x(textheight)
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
4471 * Ranged: 100x14 or 14x100 for vertical.
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
4472 * Buttons/Bitmaps: Size of text or image and border.
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
4473 */
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4474 void _control_size(id handle, int *width, int *height)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4475 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4476 int thiswidth = 1, thisheight = 1, extrawidth = 0, extraheight = 0;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4477 NSString *nsstr = nil;
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4478 id object = _text_handle(handle);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4479
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4480 /* Handle all the different button types */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4481 if([ object isKindOfClass:[ NSButton class ] ])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4482 {
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4483 switch([object buttonType])
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4484 {
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
4485 case DWButtonTypeSwitch:
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
4486 case DWButtonTypeRadio:
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4487 extrawidth = 24;
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4488 extraheight = 4;
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4489 nsstr = [object title];
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4490 break;
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4491 default:
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4492 {
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4493 NSImage *image = [object image];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4494
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4495 if(image)
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4496 {
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4497 /* Image button */
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4498 NSSize size = [image size];
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4499 thiswidth = (int)size.width;
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4500 thisheight = (int)size.height;
1432
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
4501 if([object isBordered])
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
4502 {
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
4503 extrawidth = 4;
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
4504 extraheight = 4;
6aa94c8a91de Bordered bitmap buttons need extra padding.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1429
diff changeset
4505 }
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4506 }
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4507 else
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4508 {
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4509 /* Text button */
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4510 nsstr = [object title];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4511
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4512 if([object isBordered])
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4513 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4514 extrawidth = 30;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4515 extraheight = 8;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4516 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4517 else
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4518 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4519 extrawidth = 8;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4520 extraheight = 4;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4521 }
1420
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4522 }
fabf23bdc7fb New Mac image button handling code was catching checkboxes/radiobuttons as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1419
diff changeset
4523 break;
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4524 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4525 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4526 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4527 /* If the control is an entryfield set width to 150 */
1791
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
4528 else if([object isKindOfClass:[ NSTextField class ]])
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4529 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4530 NSFont *font = [object font];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4531
1791
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
4532 if([object isEditable])
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
4533 {
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
4534 /* Spinbuttons don't need to be as wide */
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
4535 if([object isMemberOfClass:[ DWSpinButton class]])
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
4536 thiswidth = 50;
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
4537 else
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
4538 thiswidth = 150;
1908
7e23f3dccb6b Add extra border space to all entryfield controls on Yosemite and higher.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1907
diff changeset
4539 /* Comboboxes need some extra height for the border */
1791
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
4540 if([object isMemberOfClass:[ DWComboBox class]])
1908
7e23f3dccb6b Add extra border space to all entryfield controls on Yosemite and higher.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1907
diff changeset
4541 extraheight = 4;
7e23f3dccb6b Add extra border space to all entryfield controls on Yosemite and higher.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1907
diff changeset
4542 /* Yosemite and higher requires even more border space */
7e23f3dccb6b Add extra border space to all entryfield controls on Yosemite and higher.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1907
diff changeset
4543 if(DWOSMinor > 9)
7e23f3dccb6b Add extra border space to all entryfield controls on Yosemite and higher.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1907
diff changeset
4544 extraheight += 4;
1791
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
4545 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4546 else
1791
ed8851658015 Set status text fields in the test program to auto height... because they were too small on Mac.... this caused me to notice a bug in the calculation of (status) text widgets when the text is empty; this also contains a fix for that bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1788
diff changeset
4547 nsstr = [object stringValue];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4548
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4549 if(font)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4550 thisheight = (int)[font boundingRectForFont].size.height;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4551 }
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4552 /* Handle the ranged widgets */
1457
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
4553 else if([ object isMemberOfClass:[DWPercent class] ] ||
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4554 [ object isMemberOfClass:[DWSlider class] ])
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4555 {
1457
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
4556 thiswidth = 100;
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
4557 thisheight = 20;
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
4558 }
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
4559 /* Handle the ranged widgets */
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
4560 else if([ object isMemberOfClass:[DWScrollbar class] ])
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
4561 {
c22477fe7347 Split out scrollbars from the rest of the ranged widgets on Mac... the others require extra size.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1453
diff changeset
4562 if([object vertical])
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4563 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4564 thiswidth = 14;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4565 thisheight = 100;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4566 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4567 else
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4568 {
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4569 thiswidth = 100;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4570 thisheight = 14;
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4571 }
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4572 }
1421
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
4573 /* Handle bitmap size */
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
4574 else if([ object isMemberOfClass:[NSImageView class] ])
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
4575 {
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
4576 NSImage *image = [object image];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4577
1421
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
4578 if(image)
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
4579 {
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
4580 NSSize size = [image size];
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
4581 thiswidth = (int)size.width;
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
4582 thisheight = (int)size.height;
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
4583 }
63d253a2cdd9 Added bitmap autosizing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1420
diff changeset
4584 }
1533
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
4585 /* Handle calendar */
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
4586 else if([ object isMemberOfClass:[DWCalendar class] ])
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
4587 {
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
4588 NSCell *cell = [object cell];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4589
1533
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
4590 if(cell)
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
4591 {
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
4592 NSSize size = [cell cellSize];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4593
1533
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
4594 thiswidth = size.width;
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
4595 thisheight = size.height;
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
4596 }
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
4597 }
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4598 /* MLE and Container */
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4599 else if([ object isMemberOfClass:[DWMLE class] ] ||
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4600 [ object isMemberOfClass:[DWContainer class] ])
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4601 {
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4602 NSSize size;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4603
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4604 if([ object isMemberOfClass:[DWMLE class] ])
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4605 {
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4606 NSScrollView *sv = [object scrollview];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4607 NSSize frame = [sv frame].size;
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4608 BOOL hscroll = [sv hasHorizontalScroller];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4609
1552
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
4610 /* Make sure word wrap is off for the first part */
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4611 if(!hscroll)
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4612 {
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4613 [[object textContainer] setWidthTracksTextView:NO];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4614 [[object textContainer] setContainerSize:[object maxSize]];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4615 [object setHorizontallyResizable:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4616 [sv setHasHorizontalScroller:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4617 }
1552
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
4618 /* Size the text view to fit */
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4619 [object sizeToFit];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4620 size = [object bounds].size;
1552
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
4621 size.width += 2.0;
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
4622 size.height += 2.0;
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
4623 /* Re-enable word wrapping if it was on */
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4624 if(!hscroll)
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4625 {
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4626 [[object textContainer] setWidthTracksTextView:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4627 [sv setHasHorizontalScroller:NO];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4628
1553
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4629 /* If the un wrapped it is beyond the bounds... */
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4630 if(size.width > _DW_SCROLLED_MAX_WIDTH)
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4631 {
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4632 NSSize max = [object maxSize];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4633
1553
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4634 /* Set the max size to the limit */
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4635 [object setMaxSize:NSMakeSize(_DW_SCROLLED_MAX_WIDTH, max.height)];
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4636 /* Recalculate the size */
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4637 [object sizeToFit];
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4638 size = [object bounds].size;
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4639 size.width += 2.0;
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4640 size.height += 2.0;
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4641 [object setMaxSize:max];
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4642 }
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4643 }
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4644 [sv setFrameSize:frame];
1552
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
4645 /* Take into account the horizontal scrollbar */
1553
46a2123ff570 Cleanup of the previous commits on Mac, don't do more calculations than we need to.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1552
diff changeset
4646 if(hscroll && size.width > _DW_SCROLLED_MAX_WIDTH)
1552
f00f91d15cbf Added additional code to MLE calculations on Mac to take into account the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1551
diff changeset
4647 size.height += 16.0;
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4648 }
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4649 else
1573
d6e17c8f4de2 Fixed container and listbox not accounting for contents on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1566
diff changeset
4650 size = [object getsize];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4651
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4652 thiswidth = size.width;
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4653 thisheight = size.height;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4654
1549
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
4655 if(thiswidth < _DW_SCROLLED_MIN_WIDTH)
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
4656 thiswidth = _DW_SCROLLED_MIN_WIDTH;
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
4657 if(thiswidth > _DW_SCROLLED_MAX_WIDTH)
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
4658 thiswidth = _DW_SCROLLED_MAX_WIDTH;
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
4659 if(thisheight < _DW_SCROLLED_MIN_HEIGHT)
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
4660 thisheight = _DW_SCROLLED_MIN_HEIGHT;
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
4661 if(thisheight > _DW_SCROLLED_MAX_HEIGHT)
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
4662 thisheight = _DW_SCROLLED_MAX_HEIGHT;
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
4663 }
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4664 /* Tree */
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
4665 else if([ object isMemberOfClass:[DWTree class] ])
1537
a4ecef1980db Added code for returning a size for scrolled widgets on OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1533
diff changeset
4666 {
1566
035bc006afbe Experimental change... halfway between min and max for tree controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1564
diff changeset
4667 thiswidth = (int)((_DW_SCROLLED_MAX_WIDTH + _DW_SCROLLED_MIN_WIDTH)/2);
035bc006afbe Experimental change... halfway between min and max for tree controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1564
diff changeset
4668 thisheight = (int)((_DW_SCROLLED_MAX_HEIGHT + _DW_SCROLLED_MIN_HEIGHT)/2);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4669 }
1533
7bc189ef0cd0 Add code to determine the size of the calendar control on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1531
diff changeset
4670 /* Any other control type */
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4671 else if([ object isKindOfClass:[ NSControl class ] ])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4672 nsstr = [object stringValue];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4673
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4674 /* If we have a string...
1564
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
4675 * calculate the size with the current font.
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
4676 */
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
4677 if(nsstr && [nsstr length])
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
4678 dw_font_text_extents_get(object, NULL, (char *)[nsstr UTF8String], &thiswidth, &thisheight);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4679
1418
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
4680 /* Handle static text fields */
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4681 if([object isKindOfClass:[ NSTextField class ]] && ![object isEditable])
1418
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
4682 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4683 id border = handle;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4684
1778
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
4685 extrawidth = 10;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4686
1418
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
4687 /* Handle status bar field */
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4688 if([border isMemberOfClass:[ NSBox class ] ])
1564
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
4689 {
1778
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
4690 extrawidth += 2;
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
4691 extraheight = 8;
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
4692 }
1418
461240f946d0 Status text fields needs extra space on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1411
diff changeset
4693 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4694
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
4695 /* Set the requested sizes */
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4696 if(width)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4697 *width = thiswidth + extrawidth;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4698 if(height)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4699 *height = thisheight + extraheight;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4700 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4701
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4702 /* Internal box packing function called by the other 3 functions */
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4703 void _dw_box_pack(HWND box, HWND item, int index, int width, int height, int hsize, int vsize, int pad, char *funcname)
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4704 {
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4705 //int _locked_by_me = FALSE;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4706 //DW_MUTEX_LOCK;
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4707 id object = box;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4708 DWBox *view = box;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4709 DWBox *this = item;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4710 Box *thisbox;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4711 int z, x = 0;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4712 Item *tmpitem, *thisitem;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4713
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4714 /*
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4715 * If you try and pack an item into itself VERY bad things can happen; like at least an
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4716 * infinite loop on GTK! Lets be safe!
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4717 */
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4718 if(box == item)
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4719 {
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4720 dw_messagebox(funcname, DW_MB_OK|DW_MB_ERROR, "Danger! Danger! Will Robinson; box and item are the same!");
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4721 return;
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4722 }
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
4723
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4724 /* Query the objects */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4725 if([ object isKindOfClass:[ NSWindow class ] ])
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4726 {
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4727 NSWindow *window = box;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4728 view = [window contentView];
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4729 }
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4730 else if([ object isMemberOfClass:[ DWScrollBox class ] ])
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4731 {
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4732 DWScrollBox *scrollbox = box;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4733 view = [scrollbox box];
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4734 }
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4735
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4736 thisbox = [view box];
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4737 thisitem = thisbox->items;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4738 object = item;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4739
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4740 /* Query the objects */
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4741 if([ object isMemberOfClass:[ DWContainer class ] ] ||
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4742 [ object isMemberOfClass:[ DWTree class ] ] ||
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4743 [ object isMemberOfClass:[ DWMLE class ] ])
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4744 {
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
4745 this = item = [object scrollview];
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4746 }
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4747
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4748 /* Do some sanity bounds checking */
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4749 if(!thisitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4750 thisbox->count = 0;
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4751 if(index < 0)
1079
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
4752 index = 0;
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4753 if(index > thisbox->count)
1079
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
4754 index = thisbox->count;
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
4755
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4756 /* Duplicate the existing data */
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4757 tmpitem = calloc(sizeof(Item), (thisbox->count+1));
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4758
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4759 for(z=0;z<thisbox->count;z++)
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4760 {
1079
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
4761 if(z == index)
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
4762 x++;
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
4763 tmpitem[x] = thisitem[z];
5d3acda4acd4 Fixed a minor cut and paste error and formatting on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1077
diff changeset
4764 x++;
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4765 }
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4766
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4767 /* Sanity checks */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4768 if(vsize && !height)
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4769 height = 1;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4770 if(hsize && !width)
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4771 width = 1;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4772
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4773 /* Fill in the item data appropriately */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4774 if([object isKindOfClass:[DWBox class]] || [object isMemberOfClass:[DWGroupBox class]])
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4775 tmpitem[index].type = TYPEBOX;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4776 else
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4777 {
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4778 if ( width == 0 && hsize == FALSE )
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4779 dw_messagebox(funcname, DW_MB_OK|DW_MB_ERROR, "Width and expand Horizonal both unset for box: %x item: %x",box,item);
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4780 if ( height == 0 && vsize == FALSE )
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4781 dw_messagebox(funcname, DW_MB_OK|DW_MB_ERROR, "Height and expand Vertical both unset for box: %x item: %x",box,item);
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
4782
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4783 tmpitem[index].type = TYPEITEM;
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4784 }
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4785
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4786 tmpitem[index].hwnd = item;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4787 tmpitem[index].origwidth = tmpitem[index].width = width;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4788 tmpitem[index].origheight = tmpitem[index].height = height;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4789 tmpitem[index].pad = pad;
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4790 tmpitem[index].hsize = hsize ? SIZEEXPAND : SIZESTATIC;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4791 tmpitem[index].vsize = vsize ? SIZEEXPAND : SIZESTATIC;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4792
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4793 /* If either of the parameters are -1 ... calculate the size */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4794 if(width == -1 || height == -1)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
4795 _control_size(object, width == -1 ? &tmpitem[index].width : NULL, height == -1 ? &tmpitem[index].height : NULL);
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4796
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4797 thisbox->items = tmpitem;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4798
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4799 /* Update the item count */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4800 thisbox->count++;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4801
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4802 /* Add the item to the box */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4803 [view addSubview:this];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
4804 /* Enable autorelease on the item...
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
4805 * so it will get destroyed when the parent is.
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
4806 */
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
4807 [this autorelease];
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4808 /* If we are packing a button... */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4809 if([this isMemberOfClass:[DWButton class]])
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4810 {
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4811 DWButton *button = (DWButton *)this;
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4812
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4813 /* Save the parent box so radio
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4814 * buttons can use it later.
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4815 */
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4816 [button setParent:view];
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4817 }
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
4818 /* Queue a redraw on the top-level window */
1673
db393069b27d Fix packing padding not triggering automatic redraws on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1672
diff changeset
4819 _dw_redraw([view window], TRUE);
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4820
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4821 /* Free the old data */
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4822 if(thisitem)
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4823 free(thisitem);
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4824 //DW_MUTEX_UNLOCK;
1077
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4825 }
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4826
34f1d6f5f1c3 Added function dw_box_pack_at_index() on Windows, Mac and OS/2. And an example usage in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1075
diff changeset
4827 /*
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4828 * Remove windows (widgets) from the box they are packed into.
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4829 * Parameters:
1679
e19b93a8229b More comment cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1678
diff changeset
4830 * handle: Window handle of the packed item to be removed.
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4831 * Returns:
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4832 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4833 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4834 DW_FUNCTION_DEFINITION(dw_box_unpack, int, HWND handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4835 DW_FUNCTION_ADD_PARAM1(handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4836 DW_FUNCTION_RETURN(dw_box_unpack, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4837 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4838 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4839 DW_FUNCTION_INIT;
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4840 DW_LOCAL_POOL_IN;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4841 id object = handle;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4842 int retval = DW_ERROR_NONE;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4843
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4844 if([object isKindOfClass:[NSView class]] || [object isKindOfClass:[NSControl class]])
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4845 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4846 DWBox *parent = (DWBox *)[object superview];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4847
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4848 /* Some controls are embedded in scrollviews...
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4849 * so get the parent of the scrollview in that case.
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4850 */
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4851 if(([object isKindOfClass:[NSTableView class]] || [object isMemberOfClass:[DWMLE class]])
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4852 && [parent isMemberOfClass:[NSClipView class]])
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4853 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4854 object = [parent superview];
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4855 parent = (DWBox *)[object superview];
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4856 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4857
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4858 if([parent isKindOfClass:[DWBox class]] || [parent isKindOfClass:[DWGroupBox class]])
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4859 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4860 id window = [object window];
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4861 Box *thisbox = [parent box];
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4862 int z, index = -1;
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4863 Item *tmpitem = NULL, *thisitem = thisbox->items;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4864
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4865 if(!thisitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4866 thisbox->count = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4867
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4868 for(z=0;z<thisbox->count;z++)
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4869 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4870 if(thisitem[z].hwnd == object)
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4871 index = z;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4872 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4873
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4874 if(index == -1)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4875 retval = DW_ERROR_GENERAL;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4876 else
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4877 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4878 [object retain];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4879 [object removeFromSuperview];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4880
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4881 if(thisbox->count > 1)
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4882 {
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4883 tmpitem = calloc(sizeof(Item), (thisbox->count-1));
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4884
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4885 /* Copy all but the current entry to the new list */
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4886 for(z=0;z<index;z++)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4887 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4888 tmpitem[z] = thisitem[z];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4889 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4890 for(z=index+1;z<thisbox->count;z++)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4891 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4892 tmpitem[z-1] = thisitem[z];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4893 }
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4894 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4895
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4896 thisbox->items = tmpitem;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4897 if(thisitem)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4898 free(thisitem);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4899 if(tmpitem)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4900 thisbox->count--;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4901 else
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4902 thisbox->count = 0;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4903 /* Queue a redraw on the top-level window */
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4904 _dw_redraw(window, TRUE);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4905 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4906 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4907 }
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4908 DW_LOCAL_POOL_OUT;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4909 DW_FUNCTION_RETURN_THIS(retval);
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4910 }
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4911
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4912 /*
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4913 * Remove windows (widgets) from a box at an arbitrary location.
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4914 * Parameters:
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4915 * box: Window handle of the box to be removed from.
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4916 * index: 0 based index of packed items.
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4917 * Returns:
1679
e19b93a8229b More comment cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1678
diff changeset
4918 * Handle to the removed item on success, 0 on failure or padding.
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4919 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4920 DW_FUNCTION_DEFINITION(dw_box_unpack_at_index, HWND, HWND box, int index)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4921 DW_FUNCTION_ADD_PARAM2(box, index)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4922 DW_FUNCTION_RETURN(dw_box_unpack_at_index, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4923 DW_FUNCTION_RESTORE_PARAM2(box, HWND, index, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4924 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4925 DW_FUNCTION_INIT;
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4926 DW_LOCAL_POOL_IN;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4927 DWBox *parent = (DWBox *)box;
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4928 id object = nil;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4929
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4930 if([parent isKindOfClass:[DWBox class]] || [parent isKindOfClass:[DWGroupBox class]])
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4931 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4932 id window = [parent window];
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4933 Box *thisbox = [parent box];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4934
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4935 if(thisbox && index > -1 && index < thisbox->count)
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4936 {
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4937 int z;
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4938 Item *tmpitem = NULL, *thisitem = thisbox->items;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4939
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4940 object = thisitem[index].hwnd;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4941
1672
42890a2b8d3e Fix minor issues with dw_box_remove_at_index() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1671
diff changeset
4942 if(object)
42890a2b8d3e Fix minor issues with dw_box_remove_at_index() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1671
diff changeset
4943 {
42890a2b8d3e Fix minor issues with dw_box_remove_at_index() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1671
diff changeset
4944 [object retain];
42890a2b8d3e Fix minor issues with dw_box_remove_at_index() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1671
diff changeset
4945 [object removeFromSuperview];
42890a2b8d3e Fix minor issues with dw_box_remove_at_index() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1671
diff changeset
4946 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4947
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4948 if(thisbox->count > 1)
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4949 {
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4950 tmpitem = calloc(sizeof(Item), (thisbox->count-1));
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4951
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4952 /* Copy all but the current entry to the new list */
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4953 for(z=0;thisitem && z<index;z++)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4954 {
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4955 tmpitem[z] = thisitem[z];
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4956 }
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4957 for(z=index+1;z<thisbox->count;z++)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4958 {
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4959 tmpitem[z-1] = thisitem[z];
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4960 }
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4961 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4962
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4963 thisbox->items = tmpitem;
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4964 if(thisitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4965 free(thisitem);
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4966 if(tmpitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4967 thisbox->count--;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4968 else
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
4969 thisbox->count = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
4970
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4971 /* Queue a redraw on the top-level window */
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4972 _dw_redraw(window, TRUE);
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4973 }
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4974 }
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4975 DW_LOCAL_POOL_OUT;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
4976 DW_FUNCTION_RETURN_THIS(object);
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4977 }
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4978
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
4979 /*
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4980 * Pack windows (widgets) into a box at an arbitrary location.
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4981 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4982 * box: Window handle of the box to be packed into.
1678
896f377a47c7 Added exports for building with MinGW on Windows and Watcom on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1673
diff changeset
4983 * item: Window handle of the item to pack.
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
4984 * index: 0 based index of packed items.
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4985 * width: Width in pixels of the item or -1 to be self determined.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4986 * height: Height in pixels of the item or -1 to be self determined.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4987 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4988 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4989 * pad: Number of pixels of padding around the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4990 */
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4991 void API dw_box_pack_at_index(HWND box, HWND item, int index, int width, int height, int hsize, int vsize, int pad)
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4992 {
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
4993 _dw_box_pack(box, item, index, width, height, hsize, vsize, pad, "dw_box_pack_at_index()");
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4994 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4995
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4996 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4997 * Pack windows (widgets) into a box from the start (or top).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4998 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4999 * box: Window handle of the box to be packed into.
1678
896f377a47c7 Added exports for building with MinGW on Windows and Watcom on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1673
diff changeset
5000 * item: Window handle of the item to pack.
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5001 * width: Width in pixels of the item or -1 to be self determined.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5002 * height: Height in pixels of the item or -1 to be self determined.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5003 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5004 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5005 * pad: Number of pixels of padding around the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5006 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5007 void API dw_box_pack_start(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5008 {
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
5009 /* 65536 is the table limit on GTK...
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5010 * seems like a high enough value we will never hit it here either.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5011 */
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5012 _dw_box_pack(box, item, 65536, width, height, hsize, vsize, pad, "dw_box_pack_start()");
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5013 }
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5014
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5015 /*
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5016 * Pack windows (widgets) into a box from the end (or bottom).
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5017 * Parameters:
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5018 * box: Window handle of the box to be packed into.
1678
896f377a47c7 Added exports for building with MinGW on Windows and Watcom on OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1673
diff changeset
5019 * item: Window handle of the item to pack.
1086
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5020 * width: Width in pixels of the item or -1 to be self determined.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5021 * height: Height in pixels of the item or -1 to be self determined.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5022 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5023 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5024 * pad: Number of pixels of padding around the item.
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5025 */
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5026 void API dw_box_pack_end(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad)
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5027 {
4254c9b6d50d Merge all 3 box packing functions into one internal function on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1079
diff changeset
5028 _dw_box_pack(box, item, 0, width, height, hsize, vsize, pad, "dw_box_pack_end()");
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5029 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5030
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
5031 HWND _button_new(const char *text, ULONG cid)
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5032 {
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5033 DWButton *button = [[DWButton alloc] init];
983
6abf763838c6 Allow checboxes and other "buttons" to have a blank title instead of the default "Button"
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 982
diff changeset
5034 if(text)
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5035 {
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5036 [button setTitle:[ NSString stringWithUTF8String:text ]];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5037 }
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5038 [button setTarget:button];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5039 [button setAction:@selector(buttonClicked:)];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5040 [button setTag:cid];
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
5041 [button setButtonType:DWButtonTypeMomentaryPushIn];
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
5042 [button setBezelStyle:DWBezelStyleRegularSquare];
1093
25707e9f5ad1 Reverted the image scaling on buttons on Mac so it remains consistent on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1086
diff changeset
5043 /* TODO: Reenable scaling in the future if it is possible on other platforms.
25707e9f5ad1 Reverted the image scaling on buttons on Mac so it remains consistent on other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1086
diff changeset
5044 [[button cell] setImageScaling:NSImageScaleProportionallyDown]; */
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5045 if(DWDefaultFont)
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5046 {
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5047 [[button cell] setFont:DWDefaultFont];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
5048 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5049 return button;
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5050 }
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5051
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5052 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5053 * Create a new button window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5054 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5055 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5056 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5057 */
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
5058 HWND API dw_button_new(const char *text, ULONG cid)
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5059 {
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5060 DWButton *button = _button_new(text, cid);
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
5061 [button setButtonType:DWButtonTypeMomentaryPushIn];
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
5062 [button setBezelStyle:DWBezelStyleRounded];
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5063 [button setImagePosition:NSNoImage];
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
5064 [button setAlignment:DWTextAlignmentCenter];
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5065 [[button cell] setControlTint:NSBlueControlTint];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5066 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5067 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5068
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5069 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5070 * Create a new Entryfield window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5071 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5072 * text: The default text to be in the entryfield widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5073 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5074 */
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
5075 HWND API dw_entryfield_new(const char *text, ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5076 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5077 DWEntryField *entry = [[DWEntryField alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5078 [entry setStringValue:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5079 [entry setTag:cid];
1712
daa59fc8d6e5 Disable wrapping on entryfields and static text on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
5080 [[entry cell] setScrollable:YES];
daa59fc8d6e5 Disable wrapping on entryfields and static text on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
5081 [[entry cell] setWraps:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5082 return entry;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5083 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5084
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5085 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5086 * Create a new Entryfield (password) window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5087 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5088 * text: The default text to be in the entryfield widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5089 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5090 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
5091 HWND API dw_entryfield_password_new(const char *text, ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5092 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5093 DWEntryFieldPassword *entry = [[DWEntryFieldPassword alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5094 [entry setStringValue:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5095 [entry setTag:cid];
1712
daa59fc8d6e5 Disable wrapping on entryfields and static text on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
5096 [[entry cell] setScrollable:YES];
daa59fc8d6e5 Disable wrapping on entryfields and static text on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
5097 [[entry cell] setWraps:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5098 return entry;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5099 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5100
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5101 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5102 * Sets the entryfield character limit.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5103 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5104 * handle: Handle to the spinbutton to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5105 * limit: Number of characters the entryfield will take.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5106 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5107 void API dw_entryfield_set_limit(HWND handle, ULONG limit)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5108 {
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
5109 DWEntryField *entry = handle;
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
5110 DWEntryFieldFormatter *formatter = [[[DWEntryFieldFormatter alloc] init] autorelease];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5111
887
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
5112 [formatter setMaximumLength:(int)limit];
29d8ae25a78c Implemented dw_entryfield_set_limit() on the Mac using a custom formatter class.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 886
diff changeset
5113 [[entry cell] setFormatter:formatter];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5114 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5115
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5116 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5117 * Create a new bitmap button window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5118 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5119 * text: Bubble help text to be displayed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5120 * id: An ID of a bitmap in the resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5121 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
5122 HWND API dw_bitmapbutton_new(const char *text, ULONG resid)
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
5123 {
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
5124 NSBundle *bundle = [NSBundle mainBundle];
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
5125 NSString *respath = [bundle resourcePath];
1770
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
5126 NSString *filepath = [respath stringByAppendingFormat:@"/%lu.png", resid];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
5127 NSImage *image = [[NSImage alloc] initWithContentsOfFile:filepath];
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
5128 DWButton *button = _button_new("", resid);
748
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
5129 if(image)
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
5130 {
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
5131 [button setImage:image];
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
5132 }
1396
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
5133 if(text)
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
5134 [button setToolTip:[NSString stringWithUTF8String:text]];
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
5135 [image release];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
5136 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5137 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5138
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5139 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5140 * Create a new bitmap button window (widget) to be packed from a file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5141 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5142 * text: Bubble help text to be displayed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5143 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5144 * filename: Name of the file, omit extention to have
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5145 * DW pick the appropriate file extension.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5146 * (BMP on OS/2 or Windows, XPM on Unix)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5147 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
5148 HWND API dw_bitmapbutton_new_from_file(const char *text, unsigned long cid, const char *filename)
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
5149 {
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
5150 char *ext = _dw_get_image_extension(filename);
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5151
674
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
5152 NSString *nstr = [ NSString stringWithUTF8String:filename ];
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
5153 NSImage *image = [[NSImage alloc] initWithContentsOfFile:nstr];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5154
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5155 if(!image && ext)
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5156 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
5157 nstr = [nstr stringByAppendingString: [NSString stringWithUTF8String:ext]];
674
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
5158 image = [[NSImage alloc] initWithContentsOfFile:nstr];
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
5159 }
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
5160 DWButton *button = _button_new("", cid);
748
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
5161 if(image)
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
5162 {
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
5163 [button setImage:image];
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
5164 }
1396
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
5165 if(text)
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
5166 [button setToolTip:[NSString stringWithUTF8String:text]];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5167 [image release];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
5168 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5169 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5170
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5171 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5172 * Create a new bitmap button window (widget) to be packed from data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5173 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5174 * text: Bubble help text to be displayed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5175 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5176 * data: The contents of the image
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5177 * (BMP or ICO on OS/2 or Windows, XPM on Unix)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5178 * len: length of str
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5179 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
5180 HWND API dw_bitmapbutton_new_from_data(const char *text, unsigned long cid, const char *data, int len)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5181 {
760
2fb17622a455 Possible fix for exception in dw_bitmapbutton_new_from_data()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 755
diff changeset
5182 NSData *thisdata = [NSData dataWithBytes:data length:len];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
5183 NSImage *image = [[NSImage alloc] initWithData:thisdata];
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
5184 DWButton *button = _button_new("", cid);
748
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
5185 if(image)
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
5186 {
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
5187 [button setImage:image];
f39745844175 Added tooltips to bitmap buttons... and made a change to the look when the image is present...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 747
diff changeset
5188 }
1396
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
5189 if(text)
117cc38a3799 Allow on Mac passing NULL as bubbletext to dw_bitmapbutton_new*.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1389
diff changeset
5190 [button setToolTip:[NSString stringWithUTF8String:text]];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5191 [image release];
749
9e147366147b Code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 748
diff changeset
5192 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5193 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5194
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5195 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5196 * Create a new spinbutton window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5197 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5198 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5199 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5200 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
5201 HWND API dw_spinbutton_new(const char *text, ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5202 {
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
5203 DWSpinButton *spinbutton = [[DWSpinButton alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5204 NSStepper *stepper = [spinbutton stepper];
1023
8188f818eb9f Changed initial spinbutton limits to -65536 to 65536 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1018
diff changeset
5205 NSTextField *textfield = [spinbutton textfield];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
5206 [stepper setIncrement:1];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5207 [stepper setTag:cid];
1023
8188f818eb9f Changed initial spinbutton limits to -65536 to 65536 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1018
diff changeset
5208 [stepper setMinValue:-65536];
8188f818eb9f Changed initial spinbutton limits to -65536 to 65536 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1018
diff changeset
5209 [stepper setMaxValue:65536];
8188f818eb9f Changed initial spinbutton limits to -65536 to 65536 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1018
diff changeset
5210 [stepper setIntValue:atoi(text)];
8188f818eb9f Changed initial spinbutton limits to -65536 to 65536 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1018
diff changeset
5211 [textfield takeIntValueFrom:stepper];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
5212 return spinbutton;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5213 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5214
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5215 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5216 * Sets the spinbutton value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5217 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5218 * handle: Handle to the spinbutton to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5219 * position: Current value of the spinbutton.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5220 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5221 void API dw_spinbutton_set_pos(HWND handle, long position)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5222 {
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
5223 DWSpinButton *spinbutton = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5224 NSStepper *stepper = [spinbutton stepper];
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
5225 NSTextField *textfield = [spinbutton textfield];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
5226 [stepper setIntValue:(int)position];
679
d2d7d1802af4 Implemented a rather hacky fix for the spinbutton issues. The stepper control is really poorly
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 678
diff changeset
5227 [textfield takeIntValueFrom:stepper];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5228 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5229
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5230 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5231 * Sets the spinbutton limits.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5232 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5233 * handle: Handle to the spinbutton to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5234 * upper: Upper limit.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5235 * lower: Lower limit.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5236 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5237 void API dw_spinbutton_set_limits(HWND handle, long upper, long lower)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5238 {
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
5239 DWSpinButton *spinbutton = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5240 NSStepper *stepper = [spinbutton stepper];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
5241 [stepper setMinValue:(double)lower];
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
5242 [stepper setMaxValue:(double)upper];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5243 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5244
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5245 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5246 * Returns the current value of the spinbutton.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5247 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5248 * handle: Handle to the spinbutton to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5249 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5250 long API dw_spinbutton_get_pos(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5251 {
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
5252 DWSpinButton *spinbutton = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5253 NSStepper *stepper = [spinbutton stepper];
678
0ec8edbb82cf Basic spinbutton implementation, something isn't quite working right but
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 677
diff changeset
5254 return (long)[stepper integerValue];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5255 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5256
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5257 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5258 * Create a new radiobutton window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5259 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5260 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5261 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5262 */
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
5263 HWND API dw_radiobutton_new(const char *text, ULONG cid)
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5264 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5265 DWButton *button = _button_new(text, cid);
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
5266 [button setButtonType:DWButtonTypeRadio];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5267 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5268 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5269
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5270 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5271 * Create a new slider window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5272 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5273 * vertical: TRUE or FALSE if slider is vertical.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5274 * increments: Number of increments available.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5275 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5276 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5277 HWND API dw_slider_new(int vertical, int increments, ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5278 {
704
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
5279 DWSlider *slider = [[DWSlider alloc] init];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
5280 [slider setMaxValue:(double)increments];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
5281 [slider setMinValue:0];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
5282 [slider setContinuous:YES];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
5283 [slider setTarget:slider];
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
5284 [slider setAction:@selector(sliderChanged:)];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5285 [slider setTag:cid];
704
336800e9e648 Fixes to the slider control so events happen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 703
diff changeset
5286 return slider;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5287 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5288
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5289 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5290 * Returns the position of the slider.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5291 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5292 * handle: Handle to the slider to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5293 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5294 unsigned int API dw_slider_get_pos(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5295 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5296 DWSlider *slider = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5297 double val = [slider doubleValue];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5298 return (int)val;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5299 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5300
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5301 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5302 * Sets the slider position.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5303 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5304 * handle: Handle to the slider to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5305 * position: Position of the slider withing the range.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5306 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5307 void API dw_slider_set_pos(HWND handle, unsigned int position)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5308 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5309 DWSlider *slider = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5310 [slider setDoubleValue:(double)position];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5311 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5312
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5313 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5314 * Create a new scrollbar window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5315 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5316 * vertical: TRUE or FALSE if scrollbar is vertical.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5317 * increments: Number of increments available.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5318 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5319 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5320 HWND API dw_scrollbar_new(int vertical, ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5321 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5322 DWScrollbar *scrollbar;
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
5323 if(vertical)
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
5324 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5325 scrollbar = [[DWScrollbar alloc] init];
1419
8827e9b14b40 Initial support for automatic window redrawing on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1418
diff changeset
5326 [scrollbar setVertical:YES];
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
5327 }
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
5328 else
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
5329 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
5330 scrollbar = [[DWScrollbar alloc] initWithFrame:NSMakeRect(0,0,100,5)];
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
5331 }
1941
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
5332 #ifndef BUILDING_FOR_YOSEMITE
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
5333 [scrollbar setArrowsPosition:NSScrollerArrowsDefaultSetting];
1941
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
5334 #endif
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
5335 [scrollbar setRange:0.0 andVisible:0.0];
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
5336 [scrollbar setKnobProportion:1.0];
705
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
5337 [scrollbar setTarget:scrollbar];
7087f3a294e5 Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 704
diff changeset
5338 [scrollbar setAction:@selector(scrollerChanged:)];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5339 [scrollbar setTag:cid];
689
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
5340 [scrollbar setEnabled:YES];
4199730e9889 Fixed errors creating scrollbars.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 688
diff changeset
5341 return scrollbar;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5342 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5343
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5344 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5345 * Returns the position of the scrollbar.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5346 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5347 * handle: Handle to the scrollbar to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5348 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5349 unsigned int API dw_scrollbar_get_pos(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5350 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5351 DWScrollbar *scrollbar = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5352 float range = [scrollbar range];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5353 float fresult = [scrollbar doubleValue] * range;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5354 return (int)fresult;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5355 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5356
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5357 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5358 * Sets the scrollbar position.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5359 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5360 * handle: Handle to the scrollbar to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5361 * position: Position of the scrollbar withing the range.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5362 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5363 void API dw_scrollbar_set_pos(HWND handle, unsigned int position)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5364 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5365 DWScrollbar *scrollbar = handle;
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
5366 double range = [scrollbar range];
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
5367 double visible = [scrollbar visible];
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
5368 double newpos = (double)position/(range-visible);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5369 [scrollbar setDoubleValue:newpos];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5370 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5371
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5372 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5373 * Sets the scrollbar range.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5374 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5375 * handle: Handle to the scrollbar to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5376 * range: Maximum range value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5377 * visible: Visible area relative to the range.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5378 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5379 void API dw_scrollbar_set_range(HWND handle, unsigned int range, unsigned int visible)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5380 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5381 DWScrollbar *scrollbar = handle;
933
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
5382 double knob = (double)visible/(double)range;
b19e6e55fc8e Rewrote the scrollbar handler with a more accurate method and fixed a bug setting the position on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 932
diff changeset
5383 [scrollbar setRange:(double)range andVisible:(double)visible];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5384 [scrollbar setKnobProportion:knob];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5385 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5386
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5387 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5388 * Create a new percent bar window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5389 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5390 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5391 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5392 HWND API dw_percent_new(ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5393 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5394 DWPercent *percent = [[DWPercent alloc] init];
1942
5658f703a22e Mac: Finished commiting a fix to NSProgressIndicator deprecations for 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1941
diff changeset
5395 [percent setStyle:DWProgressIndicatorStyleBar];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5396 [percent setBezeled:YES];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5397 [percent setMaxValue:100];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5398 [percent setMinValue:0];
714
cf6246f86c04 Fixed the percent/progress indicators from always being indeterminate.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 713
diff changeset
5399 [percent incrementBy:1];
cf6246f86c04 Fixed the percent/progress indicators from always being indeterminate.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 713
diff changeset
5400 [percent setIndeterminate:NO];
1586
021d2966f84d Make sure the percent widget defaults to 0% on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1582
diff changeset
5401 [percent setDoubleValue:0];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5402 /*[percent setTag:cid]; Why doesn't this work? */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5403 return percent;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5404 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5405
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5406 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5407 * Sets the percent bar position.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5408 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5409 * handle: Handle to the percent bar to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5410 * position: Position of the percent bar withing the range.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5411 */
1986
218fce0e3b06 Mac: dw_percent_set_pos() does not update the position when not called from
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1985
diff changeset
5412 DW_FUNCTION_DEFINITION(dw_percent_set_pos, void, HWND handle, unsigned int position)
218fce0e3b06 Mac: dw_percent_set_pos() does not update the position when not called from
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1985
diff changeset
5413 DW_FUNCTION_ADD_PARAM2(handle, position)
218fce0e3b06 Mac: dw_percent_set_pos() does not update the position when not called from
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1985
diff changeset
5414 DW_FUNCTION_NO_RETURN(dw_percent_set_pos)
218fce0e3b06 Mac: dw_percent_set_pos() does not update the position when not called from
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1985
diff changeset
5415 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, position, unsigned int)
218fce0e3b06 Mac: dw_percent_set_pos() does not update the position when not called from
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1985
diff changeset
5416 {
218fce0e3b06 Mac: dw_percent_set_pos() does not update the position when not called from
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1985
diff changeset
5417 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5418 DWPercent *percent = handle;
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
5419
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
5420 /* Handle indeterminate */
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
5421 if(position == DW_PERCENT_INDETERMINATE)
1193
698875cfe8e5 Fixed the indeterminate percent bar should be animated on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
5422 {
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
5423 [percent setIndeterminate:YES];
1193
698875cfe8e5 Fixed the indeterminate percent bar should be animated on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
5424 [percent startAnimation:percent];
698875cfe8e5 Fixed the indeterminate percent bar should be animated on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
5425 }
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
5426 else
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
5427 {
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
5428 /* Handle normal */
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
5429 if([percent isIndeterminate])
1193
698875cfe8e5 Fixed the indeterminate percent bar should be animated on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
5430 {
698875cfe8e5 Fixed the indeterminate percent bar should be animated on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
5431 [percent stopAnimation:percent];
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
5432 [percent setIndeterminate:NO];
1193
698875cfe8e5 Fixed the indeterminate percent bar should be animated on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1190
diff changeset
5433 }
1190
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
5434 [percent setDoubleValue:(double)position];
76262040ed5f Added DW_PERCENT_INDETERMINATE which can be passed to dw_percent_set_pos() to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1176
diff changeset
5435 }
1986
218fce0e3b06 Mac: dw_percent_set_pos() does not update the position when not called from
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1985
diff changeset
5436 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5437 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5438
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5439 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5440 * Create a new checkbox window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5441 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5442 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5443 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5444 */
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
5445 HWND API dw_checkbox_new(const char *text, ULONG cid)
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5446 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5447 DWButton *button = _button_new(text, cid);
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
5448 [button setButtonType:DWButtonTypeSwitch];
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
5449 [button setBezelStyle:DWBezelStyleRegularSquare];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5450 return button;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5451 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5452
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5453 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5454 * Returns the state of the checkbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5455 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5456 * handle: Handle to the checkbox to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5457 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5458 int API dw_checkbox_get(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5459 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5460 DWButton *button = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5461 if([button state])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5462 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5463 return TRUE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5464 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5465 return FALSE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5466 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5467
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5468 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5469 * Sets the state of the checkbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5470 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5471 * handle: Handle to the checkbox to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5472 * value: TRUE for checked, FALSE for unchecked.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5473 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5474 void API dw_checkbox_set(HWND handle, int value)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5475 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5476 DWButton *button = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5477 if(value)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5478 {
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
5479 [button setState:DWControlStateValueOn];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5480 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5481 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5482 {
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
5483 [button setState:DWControlStateValueOff];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5484 }
656
6c8b95ca877b Comboboxes implemented.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 655
diff changeset
5485
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5486 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5487
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
5488 /* Common code for containers and listboxes */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5489 HWND _cont_new(ULONG cid, int multi)
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
5490 {
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5491 NSScrollView *scrollview = [[NSScrollView alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5492 DWContainer *cont = [[DWContainer alloc] init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5493
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
5494 [cont setScrollview:scrollview];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
5495 [scrollview setBorderType:NSBezelBorder];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
5496 [scrollview setHasVerticalScroller:YES];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
5497 [scrollview setAutohidesScrollers:YES];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5498
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5499 if(multi)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5500 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5501 [cont setAllowsMultipleSelection:YES];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5502 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5503 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5504 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5505 [cont setAllowsMultipleSelection:NO];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5506 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5507 [cont setDataSource:cont];
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
5508 [cont setDelegate:cont];
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
5509 [scrollview setDocumentView:cont];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5510 [cont setTag:cid];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
5511 [cont autorelease];
1963
80f6be39b7fe Mac: Miscellaneous container/listox fixes. Add a single pixel to the column
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1959
diff changeset
5512 [cont setRowBgOdd:DW_RGB_TRANSPARENT andEven:DW_RGB_TRANSPARENT];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5513 return cont;
658
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
5514 }
0502e5b6743b Haven't finished but the basics of the container/listbox are now working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 657
diff changeset
5515
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5516 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5517 * Create a new listbox window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5518 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5519 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5520 * multi: Multiple select TRUE or FALSE.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5521 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5522 DW_FUNCTION_DEFINITION(dw_listbox_new, HWND, ULONG cid, int multi)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5523 DW_FUNCTION_ADD_PARAM2(cid, multi)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5524 DW_FUNCTION_RETURN(dw_listbox_new, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5525 DW_FUNCTION_RESTORE_PARAM2(cid, ULONG, multi, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5526 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5527 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5528 DWContainer *cont = _cont_new(cid, multi);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5529 [cont setHeaderView:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5530 int type = DW_CFA_STRING;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5531 [cont setup];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
5532 NSTableColumn *column = [[[NSTableColumn alloc] init] autorelease];
795
f23cad02cfb3 Make listbox, container and tree cells uneditable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 794
diff changeset
5533 [column setEditable:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5534 [cont addTableColumn:column];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5535 [cont addColumn:column andType:type];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5536 DW_FUNCTION_RETURN_THIS(cont)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5537 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5538
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5539 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5540 * Appends the specified text to the listbox's (or combobox) entry list.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5541 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5542 * handle: Handle to the listbox to be appended to.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5543 * text: Text to append into listbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5544 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
5545 DW_FUNCTION_DEFINITION(dw_listbox_append, void, HWND handle, const char *text)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5546 DW_FUNCTION_ADD_PARAM2(handle, text)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5547 DW_FUNCTION_NO_RETURN(dw_listbox_append)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5548 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, text, char *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5549 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5550 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5551 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5552
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5553 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5554 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5555 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5556
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5557 [combo addItemWithObjectValue:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5558 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5559 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5560 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5561 DWContainer *cont = handle;
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5562 NSString *nstr = [ NSString stringWithUTF8String:text ];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5563 NSArray *newrow = [NSArray arrayWithObject:nstr];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5564
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5565 [cont addRow:newrow];
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
5566 [cont reloadData];
1963
80f6be39b7fe Mac: Miscellaneous container/listox fixes. Add a single pixel to the column
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1959
diff changeset
5567 [cont optimize];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
5568 [cont setNeedsDisplay:YES];
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5569 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5570 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5571 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5572
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5573 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5574 * Inserts the specified text into the listbox's (or combobox) entry list.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5575 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5576 * handle: Handle to the listbox to be inserted into.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5577 * text: Text to insert into listbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5578 * pos: 0-based position to insert text
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5579 */
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
5580 DW_FUNCTION_DEFINITION(dw_listbox_insert, void, HWND handle, const char *text, int pos)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5581 DW_FUNCTION_ADD_PARAM3(handle, text, pos)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5582 DW_FUNCTION_NO_RETURN(dw_listbox_insert)
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
5583 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, text, const char *, pos, int)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5584 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5585 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5586 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5587
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5588 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5589 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5590 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5591
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5592 [combo insertItemWithObjectValue:[ NSString stringWithUTF8String:text ] atIndex:pos];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5593 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5594 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5595 {
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
5596 DWContainer *cont = handle;
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
5597 NSString *nstr = [ NSString stringWithUTF8String:text ];
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
5598 NSArray *newrow = [NSArray arrayWithObject:nstr];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5599
687
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
5600 [cont insertRow:newrow at:pos];
5dde8d34bc69 Implemented dw_listbox_insert for containers.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 686
diff changeset
5601 [cont reloadData];
1963
80f6be39b7fe Mac: Miscellaneous container/listox fixes. Add a single pixel to the column
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1959
diff changeset
5602 [cont optimize];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
5603 [cont setNeedsDisplay:YES];
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5604 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5605 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5606 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5607
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5608 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5609 * Appends the specified text items to the listbox's (or combobox) entry list.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5610 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5611 * handle: Handle to the listbox to be appended to.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5612 * text: Text strings to append into listbox.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5613 * count: Number of text strings to append
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5614 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5615 DW_FUNCTION_DEFINITION(dw_listbox_list_append, void, HWND handle, char **text, int count)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5616 DW_FUNCTION_ADD_PARAM3(handle, text, count)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5617 DW_FUNCTION_NO_RETURN(dw_listbox_list_append)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5618 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, text, char **, count, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5619 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5620 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5621 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5622
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5623 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5624 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5625 DWComboBox *combo = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5626 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5627
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5628 for(z=0;z<count;z++)
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5629 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5630 [combo addItemWithObjectValue:[ NSString stringWithUTF8String:text[z] ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5631 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5632 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5633 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5634 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5635 DWContainer *cont = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5636 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5637
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5638 for(z=0;z<count;z++)
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5639 {
1318
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
5640 NSString *nstr = [NSString stringWithUTF8String:text[z]];
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
5641 NSArray *newrow = [NSArray arrayWithObjects:nstr,nil];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5642
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5643 [cont addRow:newrow];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5644 }
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
5645 [cont reloadData];
1963
80f6be39b7fe Mac: Miscellaneous container/listox fixes. Add a single pixel to the column
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1959
diff changeset
5646 [cont optimize];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
5647 [cont setNeedsDisplay:YES];
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5648 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5649 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5650 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5651
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5652 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5653 * Clears the listbox's (or combobox) list of all entries.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5654 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5655 * handle: Handle to the listbox to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5656 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5657 DW_FUNCTION_DEFINITION(dw_listbox_clear, void, HWND handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5658 DW_FUNCTION_ADD_PARAM1(handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5659 DW_FUNCTION_NO_RETURN(dw_listbox_clear)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5660 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5661 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5662 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5663 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5664
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5665 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5666 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5667 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5668
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5669 [combo removeAllItems];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5670 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5671 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5672 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5673 DWContainer *cont = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5674
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5675 [cont clear];
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
5676 [cont reloadData];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
5677 [cont setNeedsDisplay:YES];
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5678 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5679 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5680 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5681
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5682 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5683 * Returns the listbox's item count.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5684 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5685 * handle: Handle to the listbox to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5686 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5687 DW_FUNCTION_DEFINITION(dw_listbox_count, int, HWND handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5688 DW_FUNCTION_ADD_PARAM1(handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5689 DW_FUNCTION_RETURN(dw_listbox_count, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5690 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5691 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5692 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5693 id object = handle;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5694 int result = 0;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5695
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5696 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5697 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5698 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5699
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5700 result = (int)[combo numberOfItems];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5701 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5702 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5703 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5704 DWContainer *cont = handle;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5705 result = (int)[cont numberOfRowsInTableView:cont];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5706 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5707 DW_FUNCTION_RETURN_THIS(result);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5708 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5709
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5710 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5711 * Sets the topmost item in the viewport.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5712 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5713 * handle: Handle to the listbox to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5714 * top: Index to the top item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5715 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5716 DW_FUNCTION_DEFINITION(dw_listbox_set_top, void, HWND handle, int top)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5717 DW_FUNCTION_ADD_PARAM2(handle, top)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5718 DW_FUNCTION_NO_RETURN(dw_listbox_set_top)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5719 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, top, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5720 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5721 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5722 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5723
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5724 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5725 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5726 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5727
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5728 [combo scrollItemAtIndexToTop:top];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5729 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5730 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5731 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5732 DWContainer *cont = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5733
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5734 [cont scrollRowToVisible:top];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5735 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5736 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5737 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5738
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5739 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5740 * Copies the given index item's text into buffer.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5741 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5742 * handle: Handle to the listbox to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5743 * index: Index into the list to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5744 * buffer: Buffer where text will be copied.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5745 * length: Length of the buffer (including NULL).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5746 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5747 DW_FUNCTION_DEFINITION(dw_listbox_get_text, void, HWND handle, unsigned int index, char *buffer, unsigned int length)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5748 DW_FUNCTION_ADD_PARAM4(handle, index, buffer, length)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5749 DW_FUNCTION_NO_RETURN(dw_listbox_get_text)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5750 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, index, unsigned int, buffer, char *, length, unsigned int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5751 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5752 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5753 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5754
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5755 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5756 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5757 DWComboBox *combo = handle;
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5758 int count = (int)[combo numberOfItems];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5759
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5760 if(index > count)
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5761 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5762 *buffer = '\0';
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5763 }
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5764 else
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5765 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5766 NSString *nstr = [combo itemObjectValueAtIndex:index];
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5767 strncpy(buffer, [ nstr UTF8String ], length - 1);
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5768 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5769 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5770 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5771 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5772 DWContainer *cont = handle;
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5773 int count = (int)[cont numberOfRowsInTableView:cont];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5774
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5775 if(index > count)
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5776 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5777 *buffer = '\0';
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5778 }
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5779 else
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5780 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5781 NSString *nstr = [cont getRow:index and:0];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5782
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5783 strncpy(buffer, [ nstr UTF8String ], length - 1);
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5784 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5785 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5786 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5787 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5788
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5789 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5790 * Sets the text of a given listbox entry.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5791 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5792 * handle: Handle to the listbox to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5793 * index: Index into the list to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5794 * buffer: Buffer where text will be copied.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5795 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
5796 DW_FUNCTION_DEFINITION(dw_listbox_set_text, void, HWND handle, unsigned int index, const char *buffer)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5797 DW_FUNCTION_ADD_PARAM3(handle, index, buffer)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5798 DW_FUNCTION_NO_RETURN(dw_listbox_set_text)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5799 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, index, unsigned int, buffer, char *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5800 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5801 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5802 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5803
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5804 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5805 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5806 DWComboBox *combo = handle;
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5807 int count = (int)[combo numberOfItems];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5808
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5809 if(index <= count)
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5810 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5811 [combo removeItemAtIndex:index];
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5812 [combo insertItemWithObjectValue:[ NSString stringWithUTF8String:buffer ] atIndex:index];
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5813 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5814 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5815 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5816 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5817 DWContainer *cont = handle;
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5818 int count = (int)[cont numberOfRowsInTableView:cont];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5819
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5820 if(index <= count)
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5821 {
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5822 NSString *nstr = [ NSString stringWithUTF8String:buffer ];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5823
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5824 [cont editCell:nstr at:index and:0];
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5825 [cont reloadData];
1963
80f6be39b7fe Mac: Miscellaneous container/listox fixes. Add a single pixel to the column
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1959
diff changeset
5826 [cont optimize];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
5827 [cont setNeedsDisplay:YES];
720
357b59e57a31 Some fixes for out of range parameters passed to dw_listbox_g/set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 719
diff changeset
5828 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5829 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5830 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5831 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5832
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5833 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5834 * Returns the index to the item in the list currently selected.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5835 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5836 * handle: Handle to the listbox to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5837 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5838 DW_FUNCTION_DEFINITION(dw_listbox_selected, int, HWND handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5839 DW_FUNCTION_ADD_PARAM1(handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5840 DW_FUNCTION_RETURN(dw_listbox_selected, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5841 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5842 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5843 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5844 id object = handle;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5845 int result = -1;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5846
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5847 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5848 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5849 DWComboBox *combo = handle;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5850 result = (int)[combo indexOfSelectedItem];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5851 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5852 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5853 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5854 DWContainer *cont = handle;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5855 result = (int)[cont selectedRow];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5856 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5857 DW_FUNCTION_RETURN_THIS(result);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5858 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5859
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5860 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5861 * Returns the index to the current selected item or -1 when done.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5862 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5863 * handle: Handle to the listbox to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5864 * where: Either the previous return or -1 to restart.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5865 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5866 DW_FUNCTION_DEFINITION(dw_listbox_selected_multi, int, HWND handle, int where)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5867 DW_FUNCTION_ADD_PARAM2(handle, where)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5868 DW_FUNCTION_RETURN(dw_listbox_selected_multi, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5869 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, where, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5870 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5871 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5872 id object = handle;
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5873 int retval = -1;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5874
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5875 if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5876 {
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
5877 NSUInteger result;
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5878 DWContainer *cont = handle;
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5879 NSIndexSet *selected = [cont selectedRowIndexes];
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
5880 if( where == -1 )
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
5881 result = [selected indexGreaterThanOrEqualToIndex:0];
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
5882 else
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
5883 result = [selected indexGreaterThanIndex:where];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5884
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5885 if(result != NSNotFound)
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5886 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5887 retval = (int)result;
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5888 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5889 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5890 DW_FUNCTION_RETURN_THIS(retval)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5891 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5892
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5893 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5894 * Sets the selection state of a given index.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5895 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5896 * handle: Handle to the listbox to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5897 * index: Item index.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5898 * state: TRUE if selected FALSE if unselected.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5899 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5900 DW_FUNCTION_DEFINITION(dw_listbox_select, void, HWND handle, int index, int state)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5901 DW_FUNCTION_ADD_PARAM3(handle, index, state)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5902 DW_FUNCTION_NO_RETURN(dw_listbox_select)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5903 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, index, int, state, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5904 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5905 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5906 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5907
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5908 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5909 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5910 DWComboBox *combo = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5911 if(state)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5912 [combo selectItemAtIndex:index];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5913 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5914 [combo deselectItemAtIndex:index];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5915 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5916 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5917 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5918 DWContainer *cont = handle;
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5919 NSIndexSet *selected = [[NSIndexSet alloc] initWithIndex:(NSUInteger)index];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5920
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5921 [cont selectRowIndexes:selected byExtendingSelection:YES];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5922 [selected release];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5923 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5924 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5925 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5926
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5927 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5928 * Deletes the item with given index from the list.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5929 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5930 * handle: Handle to the listbox to be set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5931 * index: Item index.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5932 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5933 DW_FUNCTION_DEFINITION(dw_listbox_delete, void, HWND handle, int index)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5934 DW_FUNCTION_ADD_PARAM2(handle, index)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5935 DW_FUNCTION_NO_RETURN(dw_listbox_delete)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5936 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, index, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5937 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5938 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5939 id object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5940
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5941 if([object isMemberOfClass:[DWComboBox class]])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5942 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5943 DWComboBox *combo = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
5944
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5945 [combo removeItemAtIndex:index];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5946 }
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5947 else if([object isMemberOfClass:[DWContainer class]])
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5948 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5949 DWContainer *cont = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5950
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5951 [cont removeRow:index];
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
5952 [cont reloadData];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
5953 [cont setNeedsDisplay:YES];
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
5954 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5955 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5956 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5957
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5958 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5959 * Create a new Combobox window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5960 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5961 * text: The default text to be in the combpbox widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5962 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5963 */
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
5964 DW_FUNCTION_DEFINITION(dw_combobox_new, HWND, const char *text, ULONG cid)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5965 DW_FUNCTION_ADD_PARAM2(text, cid)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5966 DW_FUNCTION_RETURN(dw_combobox_new, HWND)
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
5967 DW_FUNCTION_RESTORE_PARAM2(text, const char *, cid, ULONG)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5968 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5969 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5970 DWComboBox *combo = [[DWComboBox alloc] init];
804
5b4a831af8fa Fix for dw_combobox_new() not setting the default text in the entryfield.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 803
diff changeset
5971 [combo setStringValue:[NSString stringWithUTF8String:text]];
703
329736825f9b Implemented more of the missing event/signal handlers and other code cleanups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 702
diff changeset
5972 [combo setDelegate:combo];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5973 [combo setTag:cid];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
5974 DW_FUNCTION_RETURN_THIS(combo)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5975 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5976
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5977 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5978 * Create a new Multiline Editbox window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5979 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5980 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5981 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
5982 HWND API dw_mle_new(ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5983 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
5984 DWMLE *mle = [[DWMLE alloc] init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
5985 NSScrollView *scrollview = [[NSScrollView alloc] init];
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5986 NSSize size = [mle maxSize];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5987
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5988 size.width = size.height;
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5989 [mle setMaxSize:size];
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
5990 [scrollview setBorderType:NSBezelBorder];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
5991 [scrollview setHasVerticalScroller:YES];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
5992 [scrollview setAutohidesScrollers:YES];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
5993 [scrollview setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
5994 [scrollview setDocumentView:mle];
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5995 [mle setVerticallyResizable:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
5996 [mle setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
5997 [mle setScrollview:scrollview];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
5998 [mle setAutomaticQuoteSubstitutionEnabled:NO];
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
5999 [mle setAutomaticDashSubstitutionEnabled:NO];
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
6000 [mle setAutomaticTextReplacementEnabled:NO];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
6001 /* [mle setTag:cid]; Why doesn't this work? */
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
6002 [mle autorelease];
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
6003 return mle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6004 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6005
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6006 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6007 * Adds text to an MLE box and returns the current point.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6008 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6009 * handle: Handle to the MLE to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6010 * buffer: Text buffer to be imported.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6011 * startpoint: Point to start entering text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6012 */
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
6013 DW_FUNCTION_DEFINITION(dw_mle_import, unsigned int, HWND handle, const char *buffer, int startpoint)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6014 DW_FUNCTION_ADD_PARAM3(handle, buffer, startpoint)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6015 DW_FUNCTION_RETURN(dw_mle_import, unsigned int)
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
6016 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, buffer, const char *, startpoint, int)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6017 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6018 DW_FUNCTION_INIT;
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
6019 DWMLE *mle = handle;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6020 unsigned int retval;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6021 NSTextStorage *ts = [mle textStorage];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6022 NSString *nstr = [NSString stringWithUTF8String:buffer];
1959
9ac432c8620c Mac: Switch to using NSAttributedString with foreground color set to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1958
diff changeset
6023 NSDictionary *attributes = [NSDictionary dictionaryWithObject:NSColor.textColor forKey:NSForegroundColorAttributeName];
9ac432c8620c Mac: Switch to using NSAttributedString with foreground color set to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1958
diff changeset
6024 NSAttributedString *nastr = [[NSAttributedString alloc] initWithString:nstr attributes:attributes];
9ac432c8620c Mac: Switch to using NSAttributedString with foreground color set to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1958
diff changeset
6025 NSUInteger length = [ts length];
992
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6026 if(startpoint < 0)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6027 startpoint = 0;
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6028 if(startpoint > length)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6029 startpoint = (int)length;
1959
9ac432c8620c Mac: Switch to using NSAttributedString with foreground color set to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1958
diff changeset
6030 [ts insertAttributedString:nastr atIndex:startpoint];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6031 retval = (unsigned int)strlen(buffer) + startpoint;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6032 DW_FUNCTION_RETURN_THIS(retval);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6033 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6034
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6035 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6036 * Grabs text from an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6037 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6038 * handle: Handle to the MLE to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6039 * buffer: Text buffer to be exported.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6040 * startpoint: Point to start grabbing text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6041 * length: Amount of text to be grabbed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6042 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6043 DW_FUNCTION_DEFINITION(dw_mle_export, void, HWND handle, char *buffer, int startpoint, int length)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6044 DW_FUNCTION_ADD_PARAM4(handle, buffer, startpoint, length)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6045 DW_FUNCTION_NO_RETURN(dw_mle_export)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6046 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, buffer, char *, startpoint, int, length, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6047 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6048 DW_FUNCTION_INIT;
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
6049 DWMLE *mle = handle;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6050 NSTextStorage *ts = [mle textStorage];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6051 NSMutableString *ms = [ts mutableString];
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
6052 const char *tmp = [ms UTF8String];
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
6053 strncpy(buffer, tmp+startpoint, length);
1129
ab73d0269a5b Ensure default keypress event is not processed if handler returns 1
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1128
diff changeset
6054 buffer[length] = '\0';
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6055 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6056 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6057
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6058 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6059 * Obtains information about an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6060 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6061 * handle: Handle to the MLE to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6062 * bytes: A pointer to a variable to return the total bytes.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6063 * lines: A pointer to a variable to return the number of lines.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6064 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6065 DW_FUNCTION_DEFINITION(dw_mle_get_size, void, HWND handle, unsigned long *bytes, unsigned long *lines)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6066 DW_FUNCTION_ADD_PARAM3(handle, bytes, lines)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6067 DW_FUNCTION_NO_RETURN(dw_mle_get_size)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6068 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, bytes, unsigned long *, lines, unsigned long *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6069 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6070 DW_FUNCTION_INIT;
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
6071 DWMLE *mle = handle;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6072 NSTextStorage *ts = [mle textStorage];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6073 NSMutableString *ms = [ts mutableString];
807
f7016a38bedd Fix for dw_window_set_text() on buttons not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 806
diff changeset
6074 NSUInteger numberOfLines, index, stringLength = [ms length];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6075
992
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6076 if(bytes)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6077 *bytes = stringLength;
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6078 if(lines)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6079 {
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6080 for(index=0, numberOfLines=0; index < stringLength; numberOfLines++)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6081 index = NSMaxRange([ms lineRangeForRange:NSMakeRange(index, 0)]);
1041
6a57bf20d8f9 Return displayName property instead of fontName property in dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1040
diff changeset
6082
992
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6083 *lines = numberOfLines;
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6084 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6085 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6086 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6087
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6088 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6089 * Deletes text from an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6090 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6091 * handle: Handle to the MLE to be deleted from.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6092 * startpoint: Point to start deleting text.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6093 * length: Amount of text to be deleted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6094 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6095 DW_FUNCTION_DEFINITION(dw_mle_delete, void, HWND handle, int startpoint, int length)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6096 DW_FUNCTION_ADD_PARAM3(handle, startpoint, length)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6097 DW_FUNCTION_NO_RETURN(dw_mle_delete)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6098 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, startpoint, int, length, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6099 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6100 DW_FUNCTION_INIT;
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
6101 DWMLE *mle = handle;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6102 NSTextStorage *ts = [mle textStorage];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6103 NSMutableString *ms = [ts mutableString];
992
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6104 NSUInteger mslength = [ms length];
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6105 if(startpoint < 0)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6106 startpoint = 0;
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6107 if(startpoint > mslength)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6108 startpoint = (int)mslength;
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6109 if(startpoint + length > mslength)
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6110 length = (int)mslength - startpoint;
2d80b4dcff9a A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 989
diff changeset
6111 [ms deleteCharactersInRange:NSMakeRange(startpoint, length)];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6112 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6113 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6114
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6115 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6116 * Clears all text from an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6117 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6118 * handle: Handle to the MLE to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6119 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6120 DW_FUNCTION_DEFINITION(dw_mle_clear, void, HWND handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6121 DW_FUNCTION_ADD_PARAM1(handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6122 DW_FUNCTION_NO_RETURN(dw_mle_clear)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6123 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6124 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6125 DW_FUNCTION_INIT;
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
6126 DWMLE *mle = handle;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6127 NSTextStorage *ts = [mle textStorage];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6128 NSMutableString *ms = [ts mutableString];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6129 NSUInteger length = [ms length];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6130 [ms deleteCharactersInRange:NSMakeRange(0, length)];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6131 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6132 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6133
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6134 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6135 * Sets the visible line of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6136 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6137 * handle: Handle to the MLE to be positioned.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6138 * line: Line to be visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6139 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6140 DW_FUNCTION_DEFINITION(dw_mle_set_visible, void, HWND handle, int line)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6141 DW_FUNCTION_ADD_PARAM2(handle, line)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6142 DW_FUNCTION_NO_RETURN(dw_mle_set_visible)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6143 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, line, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6144 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6145 DW_FUNCTION_INIT;
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
6146 DWMLE *mle = handle;
802
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
6147 NSTextStorage *ts = [mle textStorage];
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
6148 NSMutableString *ms = [ts mutableString];
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
6149 NSUInteger numberOfLines, index, stringLength = [ms length];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6150
802
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
6151 for(index=0, numberOfLines=0; index < stringLength && numberOfLines < line; numberOfLines++)
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
6152 index = NSMaxRange([ms lineRangeForRange:NSMakeRange(index, 0)]);
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6153
802
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
6154 if(line == numberOfLines)
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
6155 {
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
6156 [mle scrollRangeToVisible:[ms lineRangeForRange:NSMakeRange(index, 0)]];
676d46b31a11 Initial implementation of dw_mle_set_visible().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 801
diff changeset
6157 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6158 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6159 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6160
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6161 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6162 * Sets the editablity of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6163 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6164 * handle: Handle to the MLE.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6165 * state: TRUE if it can be edited, FALSE for readonly.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6166 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6167 void API dw_mle_set_editable(HWND handle, int state)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6168 {
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
6169 DWMLE *mle = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6170 if(state)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6171 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6172 [mle setEditable:YES];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6173 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6174 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6175 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6176 [mle setEditable:NO];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6177 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6178 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6179
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6180 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6181 * Sets the word wrap state of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6182 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6183 * handle: Handle to the MLE.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6184 * state: TRUE if it wraps, FALSE if it doesn't.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6185 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6186 void API dw_mle_set_word_wrap(HWND handle, int state)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6187 {
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
6188 DWMLE *mle = handle;
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
6189 NSScrollView *sv = [mle scrollview];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6190
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6191 if(state)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6192 {
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
6193 [[mle textContainer] setWidthTracksTextView:YES];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
6194 [sv setHasHorizontalScroller:NO];
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6195 }
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6196 else
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6197 {
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
6198 [[mle textContainer] setWidthTracksTextView:NO];
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
6199 [[mle textContainer] setContainerSize:[mle maxSize]];
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6200 [mle setHorizontallyResizable:YES];
1551
cf897886ceeb Fixed disabling word wrap in the MLE on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1549
diff changeset
6201 [sv setHasHorizontalScroller:YES];
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
6202 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6203 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6204
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6205 /*
1924
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6206 * Sets the word auto complete state of an MLE box.
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6207 * Parameters:
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6208 * handle: Handle to the MLE.
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6209 * state: Bitwise combination of DW_MLE_COMPLETE_TEXT/DASH/QUOTE
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6210 */
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6211 void API dw_mle_set_auto_complete(HWND handle, int state)
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6212 {
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6213 DWMLE *mle = handle;
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6214 [mle setAutomaticQuoteSubstitutionEnabled:(state & DW_MLE_COMPLETE_QUOTE ? YES : NO)];
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6215 [mle setAutomaticDashSubstitutionEnabled:(state & DW_MLE_COMPLETE_DASH ? YES : NO)];
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6216 [mle setAutomaticTextReplacementEnabled:(state & DW_MLE_COMPLETE_TEXT ? YES : NO)];
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6217 }
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6218
c47a04d83b90 Added dw_mle_set_auto_complete() to enable MLE auto completion on supported platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1922
diff changeset
6219 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6220 * Sets the current cursor position of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6221 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6222 * handle: Handle to the MLE to be positioned.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6223 * point: Point to position cursor.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6224 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6225 DW_FUNCTION_DEFINITION(dw_mle_set_cursor, void, HWND handle, int point)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6226 DW_FUNCTION_ADD_PARAM2(handle, point)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6227 DW_FUNCTION_NO_RETURN(dw_mle_set_cursor)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6228 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, point, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6229 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6230 DW_FUNCTION_INIT;
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
6231 DWMLE *mle = handle;
989
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
6232 NSTextStorage *ts = [mle textStorage];
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
6233 NSMutableString *ms = [ts mutableString];
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
6234 NSUInteger length = [ms length];
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
6235 if(point < 0)
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
6236 point = 0;
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
6237 if(point > length)
6de00477d627 Clamp the point specified in dw_mle_set_cursor() to the range of text to avoid an exception on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 986
diff changeset
6238 point = (int)length;
712
01107d8e033e Fixed the scrollbar maximum range to be correct. Also added some MLE code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 711
diff changeset
6239 [mle setSelectedRange: NSMakeRange(point,point)];
1201
196cd8a8e6a8 Fixed dw_mle_set_cursor() should scroll to the point on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1193
diff changeset
6240 [mle scrollRangeToVisible:NSMakeRange(point,point)];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6241 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6242 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6243
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6244 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6245 * Finds text in an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6246 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6247 * handle: Handle to the MLE to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6248 * text: Text to search for.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6249 * point: Start point of search.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6250 * flags: Search specific flags.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6251 */
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
6252 DW_FUNCTION_DEFINITION(dw_mle_search, int, HWND handle, const char *text, int point, unsigned long flags)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6253 DW_FUNCTION_ADD_PARAM4(handle, text, point, flags)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6254 DW_FUNCTION_RETURN(dw_mle_search, int)
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
6255 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, text, const char *, point, int, flags, unsigned long)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6256 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6257 DW_FUNCTION_INIT;
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
6258 DWMLE *mle = handle;
888
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
6259 NSTextStorage *ts = [mle textStorage];
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
6260 NSMutableString *ms = [ts mutableString];
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
6261 NSString *searchForMe = [NSString stringWithUTF8String:text];
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
6262 NSRange searchRange = NSMakeRange(point, [ms length] - point);
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
6263 NSRange range = NSMakeRange(NSNotFound, 0);
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
6264 NSUInteger options = flags ? flags : NSCaseInsensitiveSearch;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6265 int retval = -1;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6266
888
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
6267 if(ms)
cd6ff038e38b Implemented dw_mle_search on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 887
diff changeset
6268 range = [ms rangeOfString:searchForMe options:options range:searchRange];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6269 if(range.location == NSNotFound)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6270 retval = (int)range.location;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6271 DW_FUNCTION_RETURN_THIS(retval);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6272 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6273
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6274 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6275 * Stops redrawing of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6276 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6277 * handle: Handle to the MLE to freeze.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6278 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6279 void API dw_mle_freeze(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6280 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6281 /* Don't think this is necessary */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6282 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6283
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6284 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6285 * Resumes redrawing of an MLE box.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6286 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6287 * handle: Handle to the MLE to thaw.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6288 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6289 void API dw_mle_thaw(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6290 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6291 /* Don't think this is necessary */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6292 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6293
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6294 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6295 * Create a new status text window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6296 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6297 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6298 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6299 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
6300 HWND API dw_status_text_new(const char *text, ULONG cid)
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
6301 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
6302 NSBox *border = [[NSBox alloc] init];
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
6303 NSTextField *textfield = dw_text_new(text, cid);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6304
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
6305 [border setBorderType:NSGrooveBorder];
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
6306 //[border setBorderType:NSLineBorder];
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
6307 [border setTitlePosition:NSNoTitle];
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
6308 [border setContentView:textfield];
1778
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
6309 [border setContentViewMargins:NSMakeSize(1.5,1.5)];
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
6310 [textfield autorelease];
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
6311 [textfield setBackgroundColor:[NSColor clearColor]];
931
dfd84cefd80b Minor changes to vertical centering on (status) text fields on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 930
diff changeset
6312 [[textfield cell] setVCenter:YES];
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
6313 return border;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6314 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6315
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6316 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6317 * Create a new static text window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6318 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6319 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6320 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6321 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
6322 HWND API dw_text_new(const char *text, ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6323 {
1564
d84a690448c3 Attempted fix at border calculation on Mac for status text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1559
diff changeset
6324 DWText *textfield = [[DWText alloc] init];
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
6325 [textfield setEditable:NO];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
6326 [textfield setSelectable:NO];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
6327 [textfield setBordered:NO];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
6328 [textfield setDrawsBackground:NO];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
6329 [textfield setStringValue:[ NSString stringWithUTF8String:text ]];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
6330 [textfield setTag:cid];
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
6331 if(DWDefaultFont)
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
6332 {
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
6333 [[textfield cell] setFont:DWDefaultFont];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
6334 }
1712
daa59fc8d6e5 Disable wrapping on entryfields and static text on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1709
diff changeset
6335 [[textfield cell] setWraps:NO];
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
6336 return textfield;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6337 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6338
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6339 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6340 * Creates a rendering context widget (window) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6341 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6342 * id: An id to be used with dw_window_from_id.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6343 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6344 * A handle to the widget or NULL on failure.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6345 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
6346 HWND API dw_render_new(unsigned long cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6347 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6348 DWRender *render = [[DWRender alloc] init];
922
07f9a73c6847 Fix for button press/release events coordinates being relative to the window instead of the screen on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 921
diff changeset
6349 [render setTag:cid];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6350 return render;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6351 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6352
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6353 /* Sets the current foreground drawing color.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6354 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6355 * red: red value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6356 * green: green value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6357 * blue: blue value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6358 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6359 void API dw_color_foreground_set(unsigned long value)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6360 {
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
6361 NSColor *oldcolor = pthread_getspecific(_dw_fg_color_key);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
6362 NSColor *newcolor;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6363 DW_LOCAL_POOL_IN;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6364
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6365 _foreground = _get_color(value);
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6366
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6367 newcolor = [[NSColor colorWithDeviceRed: DW_RED_VALUE(_foreground)/255.0 green:
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6368 DW_GREEN_VALUE(_foreground)/255.0 blue:
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
6369 DW_BLUE_VALUE(_foreground)/255.0 alpha: 1] retain];
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
6370 pthread_setspecific(_dw_fg_color_key, newcolor);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
6371 [oldcolor release];
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6372 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6373 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6374
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6375 /* Sets the current background drawing color.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6376 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6377 * red: red value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6378 * green: green value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6379 * blue: blue value.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6380 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6381 void API dw_color_background_set(unsigned long value)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6382 {
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
6383 NSColor *oldcolor = pthread_getspecific(_dw_bg_color_key);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
6384 NSColor *newcolor;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6385 DW_LOCAL_POOL_IN;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6386
891
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
6387 if(value == DW_CLR_DEFAULT)
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
6388 {
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
6389 pthread_setspecific(_dw_bg_color_key, NULL);
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
6390 }
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
6391 else
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
6392 {
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
6393 _background = _get_color(value);
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6394
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6395 newcolor = [[NSColor colorWithDeviceRed: DW_RED_VALUE(_background)/255.0 green:
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
6396 DW_GREEN_VALUE(_background)/255.0 blue:
891
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
6397 DW_BLUE_VALUE(_background)/255.0 alpha: 1] retain];
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
6398 pthread_setspecific(_dw_bg_color_key, newcolor);
3774af45eb0c Fix for dw_draw_text() not using the background color on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 890
diff changeset
6399 }
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
6400 [oldcolor release];
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6401 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6402 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6403
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6404 /* Allows the user to choose a color using the system's color chooser dialog.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6405 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6406 * value: current color
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6407 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6408 * The selected color or the current color if cancelled.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6409 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6410 unsigned long API dw_color_choose(unsigned long value)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6411 {
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
6412 /* Create the Color Chooser Dialog class. */
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6413 DWColorChoose *colorDlg;
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
6414 DWDialog *dialog;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
6415 DW_LOCAL_POOL_IN;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6416
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6417 if(![DWColorChoose sharedColorPanelExists])
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
6418 {
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
6419 colorDlg = (DWColorChoose *)[DWColorChoose sharedColorPanel];
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
6420 /* Set defaults for the dialog. */
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6421 [colorDlg setContinuous:NO];
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6422 [colorDlg setTarget:colorDlg];
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6423 [colorDlg setAction:@selector(changeColor:)];
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6424 }
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6425 else
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6426 colorDlg = (DWColorChoose *)[DWColorChoose sharedColorPanel];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6427
1644
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6428 /* If someone is already waiting just return */
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6429 if([colorDlg dialog])
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6430 {
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6431 DW_LOCAL_POOL_OUT;
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6432 return value;
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6433 }
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6434
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6435 unsigned long tempcol = _get_color(value);
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6436 NSColor *color = [[NSColor colorWithDeviceRed: DW_RED_VALUE(tempcol)/255.0 green: DW_GREEN_VALUE(tempcol)/255.0 blue: DW_BLUE_VALUE(tempcol)/255.0 alpha: 1] retain];
2b55465887e1 Color chooser changes for Lion compatibility on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1610
diff changeset
6437 [colorDlg setColor:color];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6438
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
6439 dialog = dw_dialog_new(colorDlg);
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
6440 [colorDlg setDialog:dialog];
690
b93f5cdab37d Fixes to the color picker... it actually shows the picker now but it still needs more work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 689
diff changeset
6441 [colorDlg makeKeyAndOrderFront:nil];
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
6442
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
6443 /* Wait for them to pick a color */
690
b93f5cdab37d Fixes to the color picker... it actually shows the picker now but it still needs more work.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 689
diff changeset
6444 color = (NSColor *)dw_dialog_wait(dialog);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6445
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
6446 /* Figure out the value of what they returned */
734
668a88a0b930 Fixed a minor 64/32 bit issue and fixed my having blue and red values reversed in the color table.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 733
diff changeset
6447 CGFloat red, green, blue;
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
6448 [color getRed:&red green:&green blue:&blue alpha:NULL];
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
6449 value = DW_RGB((int)(red * 255), (int)(green *255), (int)(blue *255));
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
6450 DW_LOCAL_POOL_OUT;
732
db3a173e487e Fixes for the color chooser... it now works a single time. However...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 731
diff changeset
6451 return value;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6452 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6453
1938
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6454 /* Set the current context to be a flipped image,
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6455 * On 10.10 or higher use CoreGraphics otherwise Graphics Port
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6456 */
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6457 NSGraphicsContext *_dw_draw_context(NSBitmapImageRep *image)
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6458 {
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6459 #ifdef BUILDING_FOR_YOSEMITE
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6460 return [NSGraphicsContext graphicsContextWithCGContext:[[NSGraphicsContext graphicsContextWithBitmapImageRep:image] CGContext] flipped:YES];
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6461 #else
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6462 return [NSGraphicsContext graphicsContextWithGraphicsPort:[[NSGraphicsContext graphicsContextWithBitmapImageRep:image] graphicsPort] flipped:YES];
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6463 #endif
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6464 }
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6465
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6466 /* Draw a point on a window (preferably a render window).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6467 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6468 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6469 * pixmap: Handle to the pixmap. (choose only one of these)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6470 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6471 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6472 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6473 DW_FUNCTION_DEFINITION(dw_draw_point, void, HWND handle, HPIXMAP pixmap, int x, int y)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6474 DW_FUNCTION_ADD_PARAM4(handle, pixmap, x, y)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6475 DW_FUNCTION_NO_RETURN(dw_draw_point)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6476 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, pixmap, HPIXMAP, x, int, y, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6477 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6478 DW_FUNCTION_INIT;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6479 DW_LOCAL_POOL_IN;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6480 id image = handle;
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6481 NSBitmapImageRep *bi = nil;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6482 bool bCanDraw = YES;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6483
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6484 if(pixmap)
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6485 bi = image = (id)pixmap->image;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6486 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6487 {
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6488 #ifdef BUILDING_FOR_MOJAVE
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6489 if([image isMemberOfClass:[DWRender class]])
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6490 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6491 DWRender *render = image;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6492
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6493 bi = [render cachedDrawingRep];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6494 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6495 #else
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6496 if((bCanDraw = [image lockFocusIfCanDraw]) == YES)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6497 _DWLastDrawable = handle;
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6498 #endif
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6499 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6500 if(bi)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6501 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6502 [NSGraphicsContext saveGraphicsState];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6503 [NSGraphicsContext setCurrentContext:_dw_draw_context(bi)];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6504 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6505 if(bCanDraw == YES)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6506 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6507 NSBezierPath* aPath = [NSBezierPath bezierPath];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6508 [aPath setLineWidth: 0.5];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6509 NSColor *color = pthread_getspecific(_dw_fg_color_key);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6510 [color set];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6511
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6512 [aPath moveToPoint:NSMakePoint(x, y)];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6513 [aPath stroke];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6514 }
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6515 if(bi)
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
6516 [NSGraphicsContext restoreGraphicsState];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6517 #ifndef BUILDING_FOR_MOJAVE
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6518 if(bCanDraw == YES && !pixmap)
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
6519 [image unlockFocus];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6520 #endif
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6521 DW_LOCAL_POOL_OUT;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6522 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6523 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6524
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6525 /* Draw a line on a window (preferably a render window).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6526 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6527 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6528 * pixmap: Handle to the pixmap. (choose only one of these)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6529 * x1: First X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6530 * y1: First Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6531 * x2: Second X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6532 * y2: Second Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6533 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6534 DW_FUNCTION_DEFINITION(dw_draw_line, void, HWND handle, HPIXMAP pixmap, int x1, int y1, int x2, int y2)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6535 DW_FUNCTION_ADD_PARAM6(handle, pixmap, x1, y1, x2, y2)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6536 DW_FUNCTION_NO_RETURN(dw_draw_line)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6537 DW_FUNCTION_RESTORE_PARAM6(handle, HWND, pixmap, HPIXMAP, x1, int, y1, int, x2, int, y2, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6538 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6539 DW_FUNCTION_INIT;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6540 DW_LOCAL_POOL_IN;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6541 id image = handle;
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6542 NSBitmapImageRep *bi = nil;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6543 bool bCanDraw = YES;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6544
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6545 if(pixmap)
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6546 bi = image = (id)pixmap->image;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6547 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6548 {
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6549 #ifdef BUILDING_FOR_MOJAVE
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6550 if([image isMemberOfClass:[DWRender class]])
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6551 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6552 DWRender *render = image;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6553
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6554 bi = [render cachedDrawingRep];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6555 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6556 #else
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6557 if((bCanDraw = [image lockFocusIfCanDraw]) == YES)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6558 _DWLastDrawable = handle;
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6559 #endif
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6560 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6561 if(bi)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6562 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6563 [NSGraphicsContext saveGraphicsState];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6564 [NSGraphicsContext setCurrentContext:_dw_draw_context(bi)];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6565 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6566 if(bCanDraw == YES)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6567 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6568 NSBezierPath* aPath = [NSBezierPath bezierPath];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6569 NSColor *color = pthread_getspecific(_dw_fg_color_key);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6570 [color set];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6571
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6572 [aPath moveToPoint:NSMakePoint(x1 + 0.5, y1 + 0.5)];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6573 [aPath lineToPoint:NSMakePoint(x2 + 0.5, y2 + 0.5)];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6574 [aPath stroke];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6575 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
6576
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6577 if(bi)
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
6578 [NSGraphicsContext restoreGraphicsState];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6579 #ifndef BUILDING_FOR_MOJAVE
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6580 if(bCanDraw == YES && !pixmap)
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
6581 [image unlockFocus];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6582 #endif
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6583 DW_LOCAL_POOL_OUT;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6584 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6585 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6586
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6587 /* Draw text on a window (preferably a render window).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6588 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6589 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6590 * pixmap: Handle to the pixmap. (choose only one of these)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6591 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6592 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6593 * text: Text to be displayed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6594 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
6595 DW_FUNCTION_DEFINITION(dw_draw_text, void, HWND handle, HPIXMAP pixmap, int x, int y, const char *text)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6596 DW_FUNCTION_ADD_PARAM5(handle, pixmap, x, y, text)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6597 DW_FUNCTION_NO_RETURN(dw_draw_text)
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
6598 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, pixmap, HPIXMAP, x, int, y, int, text, const char *)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6599 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6600 DW_FUNCTION_INIT;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6601 DW_LOCAL_POOL_IN;
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6602 id image = handle;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6603 NSString *nstr = [ NSString stringWithUTF8String:text ];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6604 NSBitmapImageRep *bi = nil;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6605 NSFont *font = nil;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6606 DWRender *render;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6607 bool bCanDraw = YES;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6608
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6609 if(pixmap)
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6610 {
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6611 bi = image = (id)pixmap->image;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6612 font = pixmap->font;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6613 render = pixmap->handle;
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
6614 if(!font && [render isMemberOfClass:[DWRender class]])
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6615 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6616 font = [render font];
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6617 }
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6618 image = (id)pixmap->image;
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6619 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6620 else if(image && [image isMemberOfClass:[DWRender class]])
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6621 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6622 render = image;
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6623 font = [render font];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6624 #ifdef BUILDING_FOR_MOJAVE
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6625 bi = [render cachedDrawingRep];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6626 #else
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6627 if((bCanDraw = [image lockFocusIfCanDraw]) == YES)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6628 _DWLastDrawable = handle;
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6629 #endif
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6630 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6631 if(bi)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6632 {
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
6633 [NSGraphicsContext saveGraphicsState];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6634 [NSGraphicsContext setCurrentContext:_dw_draw_context(bi)];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6635 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6636
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6637 if(bCanDraw == YES)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6638 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6639 NSColor *fgcolor = pthread_getspecific(_dw_fg_color_key);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6640 NSColor *bgcolor = pthread_getspecific(_dw_bg_color_key);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6641 NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:fgcolor, NSForegroundColorAttributeName, nil];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6642 if(bgcolor)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6643 [dict setValue:bgcolor forKey:NSBackgroundColorAttributeName];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6644 if(font)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6645 [dict setValue:font forKey:NSFontAttributeName];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6646 [nstr drawAtPoint:NSMakePoint(x, y) withAttributes:dict];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6647 [dict release];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6648 }
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6649
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6650 if(bi)
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
6651 [NSGraphicsContext restoreGraphicsState];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6652 #ifndef BUILDING_FOR_MOJAVE
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6653 if(bCanDraw == YES && !pixmap)
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6654 [image unlockFocus];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6655 #endif
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6656 DW_LOCAL_POOL_OUT;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6657 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6658 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6659
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6660 /* Query the width and height of a text string.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6661 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6662 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6663 * pixmap: Handle to the pixmap. (choose only one of these)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6664 * text: Text to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6665 * width: Pointer to a variable to be filled in with the width.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6666 * height Pointer to a variable to be filled in with the height.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6667 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
6668 void API dw_font_text_extents_get(HWND handle, HPIXMAP pixmap, const char *text, int *width, int *height)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6669 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6670 id object = handle;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6671 NSString *nstr;
1230
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6672 NSFont *font = nil;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6673 DW_LOCAL_POOL_IN;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6674
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6675 nstr = [NSString stringWithUTF8String:text];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
6676
1230
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6677 /* Check the pixmap for associated object or font */
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6678 if(pixmap)
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6679 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6680 object = pixmap->handle;
1230
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6681 font = pixmap->font;
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6682 }
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6683 NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
1230
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6684 /* If we didn't get a font from the pixmap... try the associated object */
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6685 if(!font && ([object isMemberOfClass:[DWRender class]] || [object isKindOfClass:[NSControl class]]))
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6686 {
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6687 font = [object font];
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6688 }
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6689 /* If we got a font... add it to the dictionary */
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6690 if(font)
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6691 {
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6692 [dict setValue:font forKey:NSFontAttributeName];
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6693 }
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6694 /* Calculate the size of the string */
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6695 NSSize size = [nstr sizeWithAttributes:dict];
665
e6bec2290f3f Fixing warnings with Xcode 4 and switched to manual releasing in the draw functions to stop leaking.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 664
diff changeset
6696 [dict release];
1230
75a773cdb626 Fixes to dw_font_text_extents_get() on Mac so it honors the font set with dw_pixmap_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1225
diff changeset
6697 /* Return whatever information we can */
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6698 if(width)
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6699 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6700 *width = size.width;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6701 }
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6702 if(height)
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6703 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6704 *height = size.height;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
6705 }
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6706 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6707 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6708
1523
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
6709 /* Internal function to create an image graphics context...
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
6710 * with or without antialiasing enabled.
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
6711 */
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
6712 id _create_gc(id image, bool antialiased)
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
6713 {
1938
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6714 #ifdef BUILDING_FOR_YOSEMITE
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6715 CGContextRef context = (CGContextRef)[[NSGraphicsContext graphicsContextWithBitmapImageRep:image] CGContext];
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6716 NSGraphicsContext *gc = [NSGraphicsContext graphicsContextWithCGContext:context flipped:YES];
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6717 #else
1523
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
6718 CGContextRef context = (CGContextRef)[[NSGraphicsContext graphicsContextWithBitmapImageRep:image] graphicsPort];
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
6719 NSGraphicsContext *gc = [NSGraphicsContext graphicsContextWithGraphicsPort:context flipped:YES];
1938
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
6720 #endif
1523
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
6721 [gc setShouldAntialias:antialiased];
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
6722 CGContextSetAllowsAntialiasing(context, antialiased);
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
6723 return gc;
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
6724 }
026c0b4d6ee9 Initial implmentation of DW_DRAW_NOAA on Mac... only works on pixmaps right now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1522
diff changeset
6725
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6726 /* Draw a polygon on a window (preferably a render window).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6727 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6728 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6729 * pixmap: Handle to the pixmap. (choose only one of these)
1275
0b34e2cf0706 Updated dw_draw_rect and dw_draw_polygon to accept flags the same way as dw_draw_arc.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1269
diff changeset
6730 * flags: DW_DRAW_FILL (1) to fill the polygon or DW_DRAW_DEFAULT (0).
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6731 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6732 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6733 * width: Width of rectangle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6734 * height: Height of rectangle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6735 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6736 DW_FUNCTION_DEFINITION(dw_draw_polygon, void, HWND handle, HPIXMAP pixmap, int flags, int npoints, int *x, int *y)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6737 DW_FUNCTION_ADD_PARAM6(handle, pixmap, flags, npoints, x, y)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6738 DW_FUNCTION_NO_RETURN(dw_draw_polygon)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6739 DW_FUNCTION_RESTORE_PARAM6(handle, HWND, pixmap, HPIXMAP, flags, int, npoints, int, x, int *, y, int *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6740 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6741 DW_FUNCTION_INIT;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6742 DW_LOCAL_POOL_IN;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6743 id image = handle;
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6744 NSBitmapImageRep *bi = nil;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6745 bool bCanDraw = YES;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6746 int z;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6747
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6748 if(pixmap)
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6749 bi = image = (id)pixmap->image;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6750 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6751 {
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6752 #ifdef BUILDING_FOR_MOJAVE
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6753 if([image isMemberOfClass:[DWRender class]])
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6754 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6755 DWRender *render = image;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6756
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6757 bi = [render cachedDrawingRep];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6758 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6759 #else
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6760 if((bCanDraw = [image lockFocusIfCanDraw]) == YES)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6761 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6762 _DWLastDrawable = handle;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6763 [[NSGraphicsContext currentContext] setShouldAntialias:(flags & DW_DRAW_NOAA ? NO : YES)];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6764 }
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6765 #endif
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6766 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6767 if(bi)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6768 {
1950
bb4eaf02cdaf Mac: Pass bi to _create_gc() instead of image. Needs to be NSBitmapImageRep.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1949
diff changeset
6769 id gc = _create_gc(bi, flags & DW_DRAW_NOAA ? NO : YES);
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6770 [NSGraphicsContext saveGraphicsState];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6771 [NSGraphicsContext setCurrentContext:gc];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6772 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6773
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6774 if(bCanDraw == YES)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6775 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6776 NSBezierPath* aPath = [NSBezierPath bezierPath];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6777 NSColor *color = pthread_getspecific(_dw_fg_color_key);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6778 [color set];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6779
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6780 [aPath moveToPoint:NSMakePoint(*x + 0.5, *y + 0.5)];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6781 for(z=1;z<npoints;z++)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6782 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6783 [aPath lineToPoint:NSMakePoint(x[z] + 0.5, y[z] + 0.5)];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6784 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6785 [aPath closePath];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6786 if(flags & DW_DRAW_FILL)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6787 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6788 [aPath fill];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6789 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6790 [aPath stroke];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6791 }
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6792
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6793 if(bi)
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
6794 [NSGraphicsContext restoreGraphicsState];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6795 #ifndef BUILDING_FOR_MOJAVE
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6796 if(bCanDraw == YES && !pixmap)
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
6797 [image unlockFocus];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6798 #endif
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6799 DW_LOCAL_POOL_OUT;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6800 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6801 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6802
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6803 /* Draw a rectangle on a window (preferably a render window).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6804 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6805 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6806 * pixmap: Handle to the pixmap. (choose only one of these)
1275
0b34e2cf0706 Updated dw_draw_rect and dw_draw_polygon to accept flags the same way as dw_draw_arc.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1269
diff changeset
6807 * flags: DW_DRAW_FILL (1) to fill the box or DW_DRAW_DEFAULT (0).
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6808 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6809 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6810 * width: Width of rectangle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6811 * height: Height of rectangle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6812 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6813 DW_FUNCTION_DEFINITION(dw_draw_rect, void, HWND handle, HPIXMAP pixmap, int flags, int x, int y, int width, int height)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6814 DW_FUNCTION_ADD_PARAM7(handle, pixmap, flags, x, y, width, height)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6815 DW_FUNCTION_NO_RETURN(dw_draw_rect)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6816 DW_FUNCTION_RESTORE_PARAM7(handle, HWND, pixmap, HPIXMAP, flags, int, x, int, y, int, width, int, height, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6817 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6818 DW_FUNCTION_INIT;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6819 DW_LOCAL_POOL_IN;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6820 id image = handle;
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6821 NSBitmapImageRep *bi = nil;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6822 bool bCanDraw = YES;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6823
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6824 if(pixmap)
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6825 bi = image = (id)pixmap->image;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6826 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6827 {
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6828 #ifdef BUILDING_FOR_MOJAVE
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6829 if([image isMemberOfClass:[DWRender class]])
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6830 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6831 DWRender *render = image;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6832
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6833 bi = [render cachedDrawingRep];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6834 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6835 #else
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6836 if((bCanDraw = [image lockFocusIfCanDraw]) == YES)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6837 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6838 _DWLastDrawable = handle;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6839 [[NSGraphicsContext currentContext] setShouldAntialias:(flags & DW_DRAW_NOAA ? NO : YES)];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6840 }
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6841 #endif
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6842 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6843 if(bi)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6844 {
1950
bb4eaf02cdaf Mac: Pass bi to _create_gc() instead of image. Needs to be NSBitmapImageRep.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1949
diff changeset
6845 id gc = _create_gc(bi, flags & DW_DRAW_NOAA ? NO : YES);
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6846 [NSGraphicsContext saveGraphicsState];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6847 [NSGraphicsContext setCurrentContext:gc];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6848 }
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6849
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6850 if(bCanDraw == YES)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6851 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6852 NSColor *color = pthread_getspecific(_dw_fg_color_key);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6853 [color set];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6854
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6855 if(flags & DW_DRAW_FILL)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6856 [NSBezierPath fillRect:NSMakeRect(x, y, width, height)];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6857 else
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6858 [NSBezierPath strokeRect:NSMakeRect(x, y, width, height)];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6859 }
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6860
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6861 if(bi)
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
6862 [NSGraphicsContext restoreGraphicsState];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6863 #ifndef BUILDING_FOR_MOJAVE
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6864 if(bCanDraw == YES && !pixmap)
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
6865 [image unlockFocus];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6866 #endif
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6867 DW_LOCAL_POOL_OUT;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6868 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6869 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6870
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6871 /* Draw an arc on a window (preferably a render window).
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6872 * Parameters:
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6873 * handle: Handle to the window.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6874 * pixmap: Handle to the pixmap. (choose only one of these)
1275
0b34e2cf0706 Updated dw_draw_rect and dw_draw_polygon to accept flags the same way as dw_draw_arc.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1269
diff changeset
6875 * flags: DW_DRAW_FILL (1) to fill the arc or DW_DRAW_DEFAULT (0).
0b34e2cf0706 Updated dw_draw_rect and dw_draw_polygon to accept flags the same way as dw_draw_arc.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1269
diff changeset
6876 * DW_DRAW_FULL will draw a complete circle/elipse.
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6877 * xorigin: X coordinate of center of arc.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6878 * yorigin: Y coordinate of center of arc.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6879 * x1: X coordinate of first segment of arc.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6880 * y1: Y coordinate of first segment of arc.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6881 * x2: X coordinate of second segment of arc.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6882 * y2: Y coordinate of second segment of arc.
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6883 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6884 DW_FUNCTION_DEFINITION(dw_draw_arc, void, HWND handle, HPIXMAP pixmap, int flags, int xorigin, int yorigin, int x1, int y1, int x2, int y2)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6885 DW_FUNCTION_ADD_PARAM9(handle, pixmap, flags, xorigin, yorigin, x1, y1, x2, y2)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6886 DW_FUNCTION_NO_RETURN(dw_draw_arc)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6887 DW_FUNCTION_RESTORE_PARAM9(handle, HWND, pixmap, HPIXMAP, flags, int, xorigin, int, yorigin, int, x1, int, y1, int, x2, int, y2, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6888 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6889 DW_FUNCTION_INIT;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6890 DW_LOCAL_POOL_IN;
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6891 id image = handle;
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6892 NSBitmapImageRep *bi = nil;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6893 bool bCanDraw = YES;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6894
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6895 if(pixmap)
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6896 bi = image = (id)pixmap->image;
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6897 else
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6898 {
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6899 #ifdef BUILDING_FOR_MOJAVE
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6900 if([image isMemberOfClass:[DWRender class]])
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6901 {
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6902 DWRender *render = image;
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6903
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6904 bi = [render cachedDrawingRep];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6905 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6906 #else
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6907 if((bCanDraw = [image lockFocusIfCanDraw]) == YES)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6908 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6909 _DWLastDrawable = handle;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6910 [[NSGraphicsContext currentContext] setShouldAntialias:(flags & DW_DRAW_NOAA ? NO : YES)];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6911 }
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6912 #endif
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6913 }
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6914 if(bi)
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6915 {
1950
bb4eaf02cdaf Mac: Pass bi to _create_gc() instead of image. Needs to be NSBitmapImageRep.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1949
diff changeset
6916 id gc = _create_gc(bi, flags & DW_DRAW_NOAA ? NO : YES);
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6917 [NSGraphicsContext saveGraphicsState];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6918 [NSGraphicsContext setCurrentContext:gc];
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6919 }
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6920
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6921 if(bCanDraw)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6922 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6923 NSBezierPath* aPath = [NSBezierPath bezierPath];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6924 NSColor *color = pthread_getspecific(_dw_fg_color_key);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6925 [color set];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6926
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6927 /* Special case of a full circle/oval */
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6928 if(flags & DW_DRAW_FULL)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6929 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6930 [aPath appendBezierPathWithOvalInRect:NSMakeRect(x1, y1, x2 - x1, y2 - y1)];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6931 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6932 else
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6933 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6934 double a1 = atan2((y1-yorigin), (x1-xorigin));
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6935 double a2 = atan2((y2-yorigin), (x2-xorigin));
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6936 double dx = xorigin - x1;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6937 double dy = yorigin - y1;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6938 double r = sqrt(dx*dx + dy*dy);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6939
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6940 /* Convert to degrees */
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6941 a1 *= (180.0 / M_PI);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6942 a2 *= (180.0 / M_PI);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6943
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6944 /* Prepare to draw */
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6945 [aPath appendBezierPathWithArcWithCenter:NSMakePoint(xorigin, yorigin)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6946 radius:r startAngle:a1 endAngle:a2];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6947 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6948 /* If the fill flag is passed */
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6949 if(flags & DW_DRAW_FILL)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6950 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6951 [aPath fill];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6952 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6953 /* Actually do the drawing */
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6954 [aPath stroke];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6955 }
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
6956
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6957 if(bi)
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6958 [NSGraphicsContext restoreGraphicsState];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6959 #ifndef BUILDING_FOR_MOJAVE
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6960 if(bCanDraw == YES && !pixmap)
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6961 [image unlockFocus];
1946
42f1e323849c Mac: Massive rewrite to the drawing code in an attempt to get NSView
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1945
diff changeset
6962 #endif
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
6963 DW_LOCAL_POOL_OUT;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6964 DW_FUNCTION_RETURN_NOTHING;
1261
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6965 }
61d0c5f84644 Initial attempt at adding dw_draw_arc() support on all platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1247
diff changeset
6966
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6967 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6968 * Create a tree object to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6969 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6970 * id: An ID to be used for getting the resource from the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6971 * resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6972 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6973 DW_FUNCTION_DEFINITION(dw_tree_new, HWND, ULONG cid)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6974 DW_FUNCTION_ADD_PARAM1(cid)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6975 DW_FUNCTION_RETURN(dw_tree_new, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6976 DW_FUNCTION_RESTORE_PARAM1(cid, ULONG)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6977 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6978 DW_FUNCTION_INIT;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6979 NSScrollView *scrollview = [[NSScrollView alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6980 DWTree *tree = [[DWTree alloc] init];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6981
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
6982 [tree setScrollview:scrollview];
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
6983 [scrollview setBorderType:NSBezelBorder];
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
6984 [scrollview setHasVerticalScroller:YES];
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
6985 [scrollview setAutohidesScrollers:YES];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
6986
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
6987 [tree setAllowsMultipleSelection:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
6988 [tree setDataSource:tree];
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
6989 [tree setDelegate:tree];
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
6990 [scrollview setDocumentView:tree];
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
6991 [tree setHeaderView:nil];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
6992 [tree setTag:cid];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
6993 [tree autorelease];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
6994 DW_FUNCTION_RETURN_THIS(tree);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6995 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6996
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6997 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6998 * Inserts an item into a tree window (widget) after another item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6999 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7000 * handle: Handle to the tree to be inserted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7001 * item: Handle to the item to be positioned after.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7002 * title: The text title of the entry.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7003 * icon: Handle to coresponding icon.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7004 * parent: Parent handle or 0 if root.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7005 * itemdata: Item specific data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7006 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
7007 DW_FUNCTION_DEFINITION(dw_tree_insert_after, HTREEITEM, HWND handle, HTREEITEM item, const char *title, HICN icon, HTREEITEM parent, void *itemdata)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7008 DW_FUNCTION_ADD_PARAM6(handle, item, title, icon, parent, itemdata)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7009 DW_FUNCTION_RETURN(dw_tree_insert_after, HTREEITEM)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7010 DW_FUNCTION_RESTORE_PARAM6(handle, HWND, item, HTREEITEM, title, char *, icon, HICN, parent, HTREEITEM, itemdata, void *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7011 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7012 DW_FUNCTION_INIT;
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
7013 DWTree *tree = handle;
935
114729f5aedc Needed to retain NSStrings in the tree view on Mac to prevent crashes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 934
diff changeset
7014 NSString *nstr = [[NSString stringWithUTF8String:title] retain];
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7015 NSMutableArray *treenode = [[[NSMutableArray alloc] init] retain];
1067
6ca1132a240e Allow tree nodes without icons using the new NSMutableArray tree code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1065
diff changeset
7016 if(icon)
6ca1132a240e Allow tree nodes without icons using the new NSMutableArray tree code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1065
diff changeset
7017 [treenode addObject:icon];
6ca1132a240e Allow tree nodes without icons using the new NSMutableArray tree code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1065
diff changeset
7018 else
6ca1132a240e Allow tree nodes without icons using the new NSMutableArray tree code on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1065
diff changeset
7019 [treenode addObject:[NSNull null]];
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7020 [treenode addObject:nstr];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7021 [treenode addObject:[NSValue valueWithPointer:itemdata]];
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7022 [treenode addObject:[NSNull null]];
1064
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
7023 [tree addTree:treenode and:parent after:item];
1063
2ebaea72ac95 Fix for some release calls causing issues on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1061
diff changeset
7024 if(parent)
2ebaea72ac95 Fix for some release calls causing issues on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1061
diff changeset
7025 [tree reloadItem:parent reloadChildren:YES];
2ebaea72ac95 Fix for some release calls causing issues on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1061
diff changeset
7026 else
2ebaea72ac95 Fix for some release calls causing issues on MacOS 10.7 Lion.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1061
diff changeset
7027 [tree reloadData];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7028 DW_FUNCTION_RETURN_THIS(treenode);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7029 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7030
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7031 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7032 * Inserts an item into a tree window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7033 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7034 * handle: Handle to the tree to be inserted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7035 * title: The text title of the entry.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7036 * icon: Handle to coresponding icon.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7037 * parent: Parent handle or 0 if root.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7038 * itemdata: Item specific data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7039 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
7040 HTREEITEM API dw_tree_insert(HWND handle, const char *title, HICN icon, HTREEITEM parent, void *itemdata)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7041 {
680
db315779a283 Initial tree support, lots more to do but basics are there.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 679
diff changeset
7042 return dw_tree_insert_after(handle, NULL, title, icon, parent, itemdata);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7043 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7044
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7045 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7046 * Gets the text an item in a tree window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7047 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7048 * handle: Handle to the tree containing the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7049 * item: Handle of the item to be modified.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7050 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7051 DW_FUNCTION_DEFINITION(dw_tree_get_title, char *, HWND handle, HTREEITEM item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7052 DW_FUNCTION_ADD_PARAM2(handle, item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7053 DW_FUNCTION_RETURN(dw_tree_get_title, char *)
1956
2924bc788170 Mac: Added code to avoid unused variable/parameter warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1955
diff changeset
7054 DW_FUNCTION_RESTORE_PARAM2(__DW_UNUSED__ handle, HWND, item, HTREEITEM)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7055 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7056 DW_FUNCTION_INIT;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7057 char *retval = NULL;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7058 NSMutableArray *array = (NSMutableArray *)item;
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7059 NSString *nstr = (NSString *)[array objectAtIndex:1];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7060 retval = strdup([nstr UTF8String]);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7061 DW_FUNCTION_RETURN_THIS(retval);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7062 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7063
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7064 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7065 * Gets the text an item in a tree window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7066 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7067 * handle: Handle to the tree containing the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7068 * item: Handle of the item to be modified.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7069 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7070 DW_FUNCTION_DEFINITION(dw_tree_get_parent, HTREEITEM, HWND handle, HTREEITEM item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7071 DW_FUNCTION_ADD_PARAM2(handle, item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7072 DW_FUNCTION_RETURN(dw_tree_get_parent, HTREEITEM)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7073 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, item, HTREEITEM)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7074 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7075 DW_FUNCTION_INIT;
881
7b2750744552 Implemented dw_tree_get_parent() for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 873
diff changeset
7076 HTREEITEM parent;
1064
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
7077 DWTree *tree = handle;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7078
1064
b673b25bbd77 Fixed dw_tree_insert_after() so it works on Mac it previously functioned identical to dw_tree_insert().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1063
diff changeset
7079 parent = [tree parentForItem:item];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7080 DW_FUNCTION_RETURN_THIS(parent);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7081 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7082
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7083 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7084 * Sets the text and icon of an item in a tree window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7085 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7086 * handle: Handle to the tree containing the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7087 * item: Handle of the item to be modified.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7088 * title: The text title of the entry.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7089 * icon: Handle to coresponding icon.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7090 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
7091 DW_FUNCTION_DEFINITION(dw_tree_item_change, void, HWND handle, HTREEITEM item, const char *title, HICN icon)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7092 DW_FUNCTION_ADD_PARAM4(handle, item, title, icon)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7093 DW_FUNCTION_NO_RETURN(dw_tree_item_change)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7094 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, item, HTREEITEM, title, char *, icon, HICN)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7095 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7096 DW_FUNCTION_INIT;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7097 DWTree *tree = handle;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7098 NSMutableArray *array = (NSMutableArray *)item;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7099 DW_LOCAL_POOL_IN;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7100
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7101 if(title)
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7102 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7103 NSString *oldstr = [array objectAtIndex:1];
935
114729f5aedc Needed to retain NSStrings in the tree view on Mac to prevent crashes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 934
diff changeset
7104 NSString *nstr = [[NSString stringWithUTF8String:title] retain];
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7105 [array replaceObjectAtIndex:1 withObject:nstr];
935
114729f5aedc Needed to retain NSStrings in the tree view on Mac to prevent crashes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 934
diff changeset
7106 [oldstr release];
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7107 }
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7108 if(icon)
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7109 {
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7110 [array replaceObjectAtIndex:0 withObject:icon];
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7111 }
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7112 [tree reloadData];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7113 DW_LOCAL_POOL_OUT;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7114 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7115 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7116
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7117 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7118 * Sets the item data of a tree item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7119 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7120 * handle: Handle to the tree containing the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7121 * item: Handle of the item to be modified.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7122 * itemdata: User defined data to be associated with item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7123 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7124 DW_FUNCTION_DEFINITION(dw_tree_item_set_data, void, HWND handle, HTREEITEM item, void *itemdata)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7125 DW_FUNCTION_ADD_PARAM3(handle, item, itemdata)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7126 DW_FUNCTION_NO_RETURN(dw_tree_item_set_data)
1956
2924bc788170 Mac: Added code to avoid unused variable/parameter warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1955
diff changeset
7127 DW_FUNCTION_RESTORE_PARAM3(__DW_UNUSED__ handle, HWND, item, HTREEITEM, itemdata, void *)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7128 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7129 DW_FUNCTION_INIT;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7130 NSMutableArray *array = (NSMutableArray *)item;
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7131 [array replaceObjectAtIndex:2 withObject:[NSValue valueWithPointer:itemdata]];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7132 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7133 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7134
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7135 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7136 * Gets the item data of a tree item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7137 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7138 * handle: Handle to the tree containing the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7139 * item: Handle of the item to be modified.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7140 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7141 DW_FUNCTION_DEFINITION(dw_tree_item_get_data, void *, HWND handle, HTREEITEM item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7142 DW_FUNCTION_ADD_PARAM2(handle, item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7143 DW_FUNCTION_RETURN(dw_tree_item_get_data, void *)
1956
2924bc788170 Mac: Added code to avoid unused variable/parameter warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1955
diff changeset
7144 DW_FUNCTION_RESTORE_PARAM2(__DW_UNUSED__ handle, HWND, item, HTREEITEM)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7145 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7146 DW_FUNCTION_INIT;
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7147 void *result = NULL;
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7148 NSMutableArray *array = (NSMutableArray *)item;
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7149 NSValue *value = [array objectAtIndex:2];
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
7150 if(value)
1065
25e0317335fc Switched from using NSPointerArray to NSMutableArray on Mac to avoid the duplicate string crashes
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1064
diff changeset
7151 result = [value pointerValue];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7152 DW_FUNCTION_RETURN_THIS(result);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7153 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7154
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7155 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7156 * Sets this item as the active selection.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7157 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7158 * handle: Handle to the tree window (widget) to be selected.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7159 * item: Handle to the item to be selected.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7160 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7161 DW_FUNCTION_DEFINITION(dw_tree_item_select, void, HWND handle, HTREEITEM item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7162 DW_FUNCTION_ADD_PARAM2(handle, item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7163 DW_FUNCTION_NO_RETURN(dw_tree_item_select)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7164 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, item, HTREEITEM)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7165 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7166 DW_FUNCTION_INIT;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7167 DWTree *tree = handle;
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7168 NSInteger itemIndex = [tree rowForItem:item];
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7169 if(itemIndex > -1)
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7170 {
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7171 [tree selectRowIndexes:[NSIndexSet indexSetWithIndex:itemIndex] byExtendingSelection:NO];
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7172 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7173 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7174 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7175
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7176 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7177 * Removes all nodes from a tree.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7178 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7179 * handle: Handle to the window (widget) to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7180 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7181 DW_FUNCTION_DEFINITION(dw_tree_clear, void, HWND handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7182 DW_FUNCTION_ADD_PARAM1(handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7183 DW_FUNCTION_NO_RETURN(dw_tree_clear)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7184 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7185 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7186 DW_FUNCTION_INIT;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7187 DWTree *tree = handle;
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7188 [tree clear];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7189 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7190 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7191
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7192 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7193 * Expands a node on a tree.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7194 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7195 * handle: Handle to the tree window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7196 * item: Handle to node to be expanded.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7197 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7198 DW_FUNCTION_DEFINITION(dw_tree_item_expand, void, HWND handle, HTREEITEM item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7199 DW_FUNCTION_ADD_PARAM2(handle, item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7200 DW_FUNCTION_NO_RETURN(dw_tree_item_expand)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7201 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, item, HTREEITEM)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7202 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7203 DW_FUNCTION_INIT;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7204 DWTree *tree = handle;
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7205 [tree expandItem:item];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7206 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7207 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7208
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7209 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7210 * Collapses a node on a tree.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7211 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7212 * handle: Handle to the tree window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7213 * item: Handle to node to be collapsed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7214 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7215 DW_FUNCTION_DEFINITION(dw_tree_item_collapse, void, HWND handle, HTREEITEM item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7216 DW_FUNCTION_ADD_PARAM2(handle, item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7217 DW_FUNCTION_NO_RETURN(dw_tree_item_collapse)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7218 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, item, HTREEITEM)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7219 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7220 DW_FUNCTION_INIT;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7221 DWTree *tree = handle;
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7222 [tree collapseItem:item];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7223 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7224 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7225
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7226 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7227 * Removes a node from a tree.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7228 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7229 * handle: Handle to the window (widget) to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7230 * item: Handle to node to be deleted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7231 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7232 DW_FUNCTION_DEFINITION(dw_tree_item_delete, void, HWND handle, HTREEITEM item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7233 DW_FUNCTION_ADD_PARAM2(handle, item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7234 DW_FUNCTION_NO_RETURN(dw_tree_item_delete)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7235 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, item, HTREEITEM)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7236 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7237 DW_FUNCTION_INIT;
682
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7238 DWTree *tree = handle;
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7239 [tree deleteNode:item];
de4aa126fb2f Fixes for tree packing and a data source issue. Implemented most of the missing tree functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 681
diff changeset
7240 [tree reloadData];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7241 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7242 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7243
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7244 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7245 * Create a container object to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7246 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7247 * id: An ID to be used for getting the resource from the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7248 * resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7249 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7250 DW_FUNCTION_DEFINITION(dw_container_new, HWND, ULONG cid, int multi)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7251 DW_FUNCTION_ADD_PARAM2(cid, multi)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7252 DW_FUNCTION_RETURN(dw_container_new, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7253 DW_FUNCTION_RESTORE_PARAM2(cid, ULONG, multi, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7254 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7255 DW_FUNCTION_INIT;
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
7256 DWContainer *cont = _cont_new(cid, multi);
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
7257 NSScrollView *scrollview = [cont scrollview];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
7258 [scrollview setHasHorizontalScroller:YES];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
7259 NSTableHeaderView *header = [[[NSTableHeaderView alloc] init] autorelease];
708
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
7260 [cont setHeaderView:header];
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
7261 [cont setTarget:cont];
5fe2ca5ef88b Fixes for container event handling. Also made container/listbox cells non-editable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 707
diff changeset
7262 [cont setDoubleAction:@selector(doubleClicked:)];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7263 DW_FUNCTION_RETURN_THIS(cont);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7264 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7265
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7266 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7267 * Sets up the container columns.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7268 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7269 * handle: Handle to the container to be configured.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7270 * flags: An array of unsigned longs with column flags.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7271 * titles: An array of strings with column text titles.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7272 * count: The number of columns (this should match the arrays).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7273 * separator: The column number that contains the main separator.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7274 * (this item may only be used in OS/2)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7275 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7276 DW_FUNCTION_DEFINITION(dw_container_setup, int, HWND handle, unsigned long *flags, char **titles, int count, int separator)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7277 DW_FUNCTION_ADD_PARAM5(handle, flags, titles, count, separator)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7278 DW_FUNCTION_RETURN(dw_container_setup, int)
1956
2924bc788170 Mac: Added code to avoid unused variable/parameter warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1955
diff changeset
7279 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, flags, unsigned long *, titles, char **, count, int, __DW_UNUSED__ separator, int)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7280 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7281 DW_FUNCTION_INIT;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7282 int z, retval = DW_ERROR_NONE;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7283 DWContainer *cont = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7284
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7285 [cont setup];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7286
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7287 for(z=0;z<count;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7288 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7289 NSTableColumn *column = [[NSTableColumn alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7290 [[column headerCell] setStringValue:[ NSString stringWithUTF8String:titles[z] ]];
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
7291 if(flags[z] & DW_CFA_BITMAPORICON)
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
7292 {
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
7293 NSImageCell *imagecell = [[NSImageCell alloc] init];
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
7294 [column setDataCell:imagecell];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
7295 [imagecell release];
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
7296 }
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7297 else if(flags[z] & DW_CFA_STRINGANDICON)
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7298 {
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
7299 DWImageAndTextCell *browsercell = [[DWImageAndTextCell alloc] init];
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7300 [column setDataCell:browsercell];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7301 [browsercell release];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7302 }
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7303 /* Defaults to left justified so just handle right and center */
1914
3872ab37297b Fix numerous deprecation warnings building with SDK 10.12 Sierra.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1908
diff changeset
7304 if(flags[z] & DW_CFA_RIGHT)
3872ab37297b Fix numerous deprecation warnings building with SDK 10.12 Sierra.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1908
diff changeset
7305 {
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
7306 [(NSCell *)[column dataCell] setAlignment:DWTextAlignmentRight];
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
7307 [(NSCell *)[column headerCell] setAlignment:DWTextAlignmentRight];
1914
3872ab37297b Fix numerous deprecation warnings building with SDK 10.12 Sierra.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1908
diff changeset
7308 }
3872ab37297b Fix numerous deprecation warnings building with SDK 10.12 Sierra.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1908
diff changeset
7309 else if(flags[z] & DW_CFA_CENTER)
3872ab37297b Fix numerous deprecation warnings building with SDK 10.12 Sierra.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1908
diff changeset
7310 {
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
7311 [(NSCell *)[column dataCell] setAlignment:DWTextAlignmentCenter];
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
7312 [(NSCell *)[column headerCell] setAlignment:DWTextAlignmentCenter];
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
7313 }
795
f23cad02cfb3 Make listbox, container and tree cells uneditable.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 794
diff changeset
7314 [column setEditable:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7315 [cont addTableColumn:column];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7316 [cont addColumn:column andType:(int)flags[z]];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
7317 [column release];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7318 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7319 DW_FUNCTION_RETURN_THIS(retval);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7320 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7321
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7322 /*
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7323 * Configures the main filesystem columnn title for localization.
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7324 * Parameters:
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7325 * handle: Handle to the container to be configured.
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7326 * title: The title to be displayed in the main column.
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7327 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
7328 void API dw_filesystem_set_column_title(HWND handle, const char *title)
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7329 {
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7330 char *newtitle = strdup(title ? title : "");
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7331
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7332 dw_window_set_data(handle, "_dw_coltitle", newtitle);
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7333 }
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7334
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7335 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7336 * Sets up the filesystem columns, note: filesystem always has an icon/filename field.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7337 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7338 * handle: Handle to the container to be configured.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7339 * flags: An array of unsigned longs with column flags.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7340 * titles: An array of strings with column text titles.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7341 * count: The number of columns (this should match the arrays).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7342 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7343 int API dw_filesystem_setup(HWND handle, unsigned long *flags, char **titles, int count)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7344 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7345 char **newtitles = malloc(sizeof(char *) * (count + 1));
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7346 unsigned long *newflags = malloc(sizeof(unsigned long) * (count + 1));
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7347 char *coltitle = (char *)dw_window_get_data(handle, "_dw_coltitle");
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
7348 DWContainer *cont = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7349
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7350 newtitles[0] = coltitle ? coltitle : "Filename";
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7351
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7352 newflags[0] = DW_CFA_STRINGANDICON | DW_CFA_LEFT | DW_CFA_HORZSEPARATOR;
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7353
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7354 memcpy(&newtitles[1], titles, sizeof(char *) * count);
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7355 memcpy(&newflags[1], flags, sizeof(unsigned long) * count);
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7356
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7357 dw_container_setup(handle, newflags, newtitles, count + 1, 0);
813
7fa26d8cc8d0 Fix for column click handler not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 812
diff changeset
7358 [cont setFilesystem:YES];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7359
1744
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7360 if(coltitle)
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7361 {
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7362 dw_window_set_data(handle, "_dw_coltitle", NULL);
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7363 free(coltitle);
535e8c19a13d Added dw_filesystem_set_column_title() function to aid in localization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1740
diff changeset
7364 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7365 free(newtitles);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7366 free(newflags);
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 983
diff changeset
7367 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7368 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7369
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7370 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7371 * Allocates memory used to populate a container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7372 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7373 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7374 * rowcount: The number of items to be populated.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7375 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7376 DW_FUNCTION_DEFINITION(dw_container_alloc, void *, HWND handle, int rowcount)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7377 DW_FUNCTION_ADD_PARAM2(handle, rowcount)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7378 DW_FUNCTION_RETURN(dw_container_alloc, void *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7379 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, rowcount, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7380 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7381 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7382 DWContainer *cont = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7383 [cont addRows:rowcount];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7384 DW_FUNCTION_RETURN_THIS(cont);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7385 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7386
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7387 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7388 * Sets an item in specified row and column to the given data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7389 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7390 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7391 * pointer: Pointer to the allocated memory in dw_container_alloc().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7392 * column: Zero based column of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7393 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7394 * data: Pointer to the data to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7395 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7396 DW_FUNCTION_DEFINITION(dw_container_set_item, void, HWND handle, void *pointer, int column, int row, void *data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7397 DW_FUNCTION_ADD_PARAM5(handle, pointer, column, row, data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7398 DW_FUNCTION_NO_RETURN(dw_container_set_item)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7399 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, pointer, void *, column, int, row, int, data, void *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7400 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7401 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7402 DWContainer *cont = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7403 id object = nil;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7404 int type = [cont cellType:column];
801
5d8e4ecb7820 Think we need to ignore the last add point when the pointer argument is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 800
diff changeset
7405 int lastadd = 0;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7406
801
5d8e4ecb7820 Think we need to ignore the last add point when the pointer argument is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 800
diff changeset
7407 /* If pointer is NULL we are getting a change request instead of set */
5d8e4ecb7820 Think we need to ignore the last add point when the pointer argument is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 800
diff changeset
7408 if(pointer)
5d8e4ecb7820 Think we need to ignore the last add point when the pointer argument is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 800
diff changeset
7409 {
5d8e4ecb7820 Think we need to ignore the last add point when the pointer argument is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 800
diff changeset
7410 lastadd = [cont lastAddPoint];
5d8e4ecb7820 Think we need to ignore the last add point when the pointer argument is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 800
diff changeset
7411 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7412
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7413 if(data)
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7414 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7415 if(type & DW_CFA_BITMAPORICON)
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7416 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7417 object = *((NSImage **)data);
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7418 }
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7419 else if(type & DW_CFA_STRING)
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7420 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7421 char *str = *((char **)data);
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7422 object = [ NSString stringWithUTF8String:str ];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7423 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7424 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7425 {
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7426 char textbuffer[101] = {0};
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7427
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7428 if(type & DW_CFA_ULONG)
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7429 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7430 ULONG tmp = *((ULONG *)data);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7431
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7432 snprintf(textbuffer, 100, "%lu", tmp);
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7433 }
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7434 else if(type & DW_CFA_DATE)
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7435 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7436 struct tm curtm;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7437 CDATE cdate = *((CDATE *)data);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7438
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7439 memset( &curtm, 0, sizeof(curtm) );
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7440 curtm.tm_mday = cdate.day;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7441 curtm.tm_mon = cdate.month - 1;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7442 curtm.tm_year = cdate.year - 1900;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7443
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7444 strftime(textbuffer, 100, "%x", &curtm);
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7445 }
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7446 else if(type & DW_CFA_TIME)
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7447 {
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7448 struct tm curtm;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7449 CTIME ctime = *((CTIME *)data);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7450
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7451 memset( &curtm, 0, sizeof(curtm) );
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7452 curtm.tm_hour = ctime.hours;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7453 curtm.tm_min = ctime.minutes;
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7454 curtm.tm_sec = ctime.seconds;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
7455
1502
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7456 strftime(textbuffer, 100, "%X", &curtm);
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7457 }
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7458 if(textbuffer[0])
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7459 object = [ NSString stringWithUTF8String:textbuffer ];
dc41efe8a53f Allow passing NULL to dw_container_change/set_item() APIs on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1498
diff changeset
7460 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7461 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
7462
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7463 [cont editCell:object at:(row+lastadd) and:column];
794
e9bc14c5c72d Test fix for containers (and probably listboxes) not showing their content changes immediately.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 793
diff changeset
7464 [cont setNeedsDisplay:YES];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7465 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7466 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7467
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7468 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7469 * Changes an existing item in specified row and column to the given data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7470 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7471 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7472 * column: Zero based column of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7473 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7474 * data: Pointer to the data to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7475 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7476 void API dw_container_change_item(HWND handle, int column, int row, void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7477 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7478 dw_container_set_item(handle, NULL, column, row, data);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7479 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7480
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7481 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7482 * Changes an existing item in specified row and column to the given data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7483 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7484 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7485 * column: Zero based column of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7486 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7487 * data: Pointer to the data to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7488 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7489 void API dw_filesystem_change_item(HWND handle, int column, int row, void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7490 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7491 dw_container_change_item(handle, column+1, row, data);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7492 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7493
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7494 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7495 * Changes an item in specified row and column to the given data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7496 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7497 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7498 * pointer: Pointer to the allocated memory in dw_container_alloc().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7499 * column: Zero based column of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7500 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7501 * data: Pointer to the data to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7502 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
7503 void API dw_filesystem_change_file(HWND handle, int row, const char *filename, HICN icon)
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
7504 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7505 dw_filesystem_set_file(handle, NULL, row, filename, icon);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7506 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7507
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7508 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7509 * Sets an item in specified row and column to the given data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7510 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7511 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7512 * pointer: Pointer to the allocated memory in dw_container_alloc().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7513 * column: Zero based column of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7514 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7515 * data: Pointer to the data to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7516 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
7517 DW_FUNCTION_DEFINITION(dw_filesystem_set_file, void, HWND handle, void *pointer, int row, const char *filename, HICN icon)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7518 DW_FUNCTION_ADD_PARAM5(handle, pointer, row, filename, icon)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7519 DW_FUNCTION_NO_RETURN(dw_filesystem_set_file)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7520 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, pointer, void *, row, int, filename, char *, icon, HICN)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7521 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7522 DW_FUNCTION_INIT;
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7523 DWContainer *cont = handle;
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
7524 DWImageAndTextCell *browsercell;
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7525 int lastadd = 0;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7526
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7527 /* If pointer is NULL we are getting a change request instead of set */
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7528 if(pointer)
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7529 {
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7530 lastadd = [cont lastAddPoint];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7531 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7532
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
7533 browsercell = [[[DWImageAndTextCell alloc] init] autorelease];
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7534 [browsercell setImage:icon];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7535 [browsercell setStringValue:[ NSString stringWithUTF8String:filename ]];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7536 [cont editCell:browsercell at:(row+lastadd) and:0];
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7537 [cont setNeedsDisplay:YES];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7538 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7539 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7540
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7541 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7542 * Sets an item in specified row and column to the given data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7543 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7544 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7545 * pointer: Pointer to the allocated memory in dw_container_alloc().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7546 * column: Zero based column of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7547 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7548 * data: Pointer to the data to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7549 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7550 void API dw_filesystem_set_item(HWND handle, void *pointer, int column, int row, void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7551 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7552 dw_container_set_item(handle, pointer, column+1, row, data);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7553 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7554
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7555 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7556 * Gets column type for a container column
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7557 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7558 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7559 * column: Zero based column.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7560 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7561 DW_FUNCTION_DEFINITION(dw_container_get_column_type, int, HWND handle, int column)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7562 DW_FUNCTION_ADD_PARAM2(handle, column)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7563 DW_FUNCTION_RETURN(dw_container_get_column_type, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7564 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, column, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7565 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7566 DW_FUNCTION_INIT;
721
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7567 DWContainer *cont = handle;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7568 int rc;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7569 int flag = [cont cellType:column];
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7570 if(flag & DW_CFA_BITMAPORICON)
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7571 rc = DW_CFA_BITMAPORICON;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7572 else if(flag & DW_CFA_STRING)
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7573 rc = DW_CFA_STRING;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7574 else if(flag & DW_CFA_ULONG)
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7575 rc = DW_CFA_ULONG;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7576 else if(flag & DW_CFA_DATE)
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7577 rc = DW_CFA_DATE;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7578 else if(flag & DW_CFA_TIME)
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7579 rc = DW_CFA_TIME;
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7580 else
56053f1af9ee Fixes for dw_container/filessystem_get_column_type from Mark Hessling... adding him to the copyright section.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 720
diff changeset
7581 rc = 0;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7582 DW_FUNCTION_RETURN_THIS(rc);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7583 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7584
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7585 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7586 * Gets column type for a filesystem container column
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7587 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7588 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7589 * column: Zero based column.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7590 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7591 int API dw_filesystem_get_column_type(HWND handle, int column)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7592 {
882
1e7b7f870d88 Experimental change to use a single column for holding the filename and icon on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 881
diff changeset
7593 return dw_container_get_column_type(handle, column+1);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7594 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7595
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7596 /*
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
7597 * Sets the alternating row colors for container window (widget) handle.
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
7598 * Parameters:
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
7599 * handle: The window (widget) handle.
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
7600 * oddcolor: Odd row background color in DW_RGB format or a default color index.
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
7601 * evencolor: Even row background color in DW_RGB format or a default color index.
1210
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
7602 * DW_RGB_TRANSPARENT will disable coloring rows.
5a016a5a7412 Slight change in design behavior for dw_container_set_row_bg()...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1206
diff changeset
7603 * DW_CLR_DEFAULT will use the system default alternating row colors.
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
7604 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7605 DW_FUNCTION_DEFINITION(dw_container_set_stripe, void, HWND handle, unsigned long oddcolor, unsigned long evencolor)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7606 DW_FUNCTION_ADD_PARAM3(handle, oddcolor, evencolor)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7607 DW_FUNCTION_NO_RETURN(dw_container_set_stripe)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7608 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, oddcolor, unsigned long, evencolor, unsigned long)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7609 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7610 DW_FUNCTION_INIT;
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
7611 DWContainer *cont = handle;
1958
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
7612 [cont setRowBgOdd:oddcolor
45abd53a3fc6 Mac: Moved even/odd color code into DWContainer class since
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1957
diff changeset
7613 andEven:evencolor];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7614 DW_FUNCTION_RETURN_NOTHING;
1206
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
7615 }
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
7616
c7bb48cda53a Switched from using NSBrowserCell to a DWImageAndTextCell subclass on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1204
diff changeset
7617 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7618 * Sets the width of a column in the container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7619 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7620 * handle: Handle to window (widget) of container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7621 * column: Zero based column of width being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7622 * width: Width of column in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7623 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7624 DW_FUNCTION_DEFINITION(dw_container_set_column_width, void, HWND handle, int column, int width)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7625 DW_FUNCTION_ADD_PARAM3(handle, column, width)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7626 DW_FUNCTION_NO_RETURN(dw_container_set_column_width)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7627 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, column, int, width, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7628 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7629 DW_FUNCTION_INIT;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7630 DWContainer *cont = handle;
831
168b9db65825 Minor fix for dw_container_column_set_width() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 829
diff changeset
7631 if([cont filesystem])
168b9db65825 Minor fix for dw_container_column_set_width() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 829
diff changeset
7632 column++;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7633 NSTableColumn *col = [cont getColumn:column];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7634
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7635 [col setWidth:width];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7636 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7637 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7638
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7639 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7640 * Sets the title of a row in the container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7641 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7642 * pointer: Pointer to the allocated memory in dw_container_alloc().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7643 * row: Zero based row of data being set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7644 * title: String title of the item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7645 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
7646 DW_FUNCTION_DEFINITION(dw_container_set_row_title, void, void *pointer, int row, const char *title)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7647 DW_FUNCTION_ADD_PARAM3(pointer, row, title)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7648 DW_FUNCTION_NO_RETURN(dw_container_set_row_title)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7649 DW_FUNCTION_RESTORE_PARAM3(pointer, void *, row, int, title, char *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7650 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7651 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7652 DWContainer *cont = pointer;
821
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
7653 int lastadd = [cont lastAddPoint];
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
7654 [cont setRow:(row+lastadd) title:title];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7655 DW_FUNCTION_RETURN_NOTHING;
821
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
7656 }
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
7657
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
7658
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
7659 /*
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7660 * Sets the data pointer of a row in the container.
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7661 * Parameters:
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7662 * pointer: Pointer to the allocated memory in dw_container_alloc().
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7663 * row: Zero based row of data being set.
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7664 * data: Data pointer.
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7665 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7666 DW_FUNCTION_DEFINITION(dw_container_set_row_data, void, void *pointer, int row, void *data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7667 DW_FUNCTION_ADD_PARAM3(pointer, row, data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7668 DW_FUNCTION_NO_RETURN(dw_container_set_row_data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7669 DW_FUNCTION_RESTORE_PARAM3(pointer, void *, row, int, data, void *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7670 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7671 DW_FUNCTION_INIT;
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7672 DWContainer *cont = pointer;
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7673 int lastadd = [cont lastAddPoint];
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7674 [cont setRowData:(row+lastadd) title:data];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7675 DW_FUNCTION_RETURN_NOTHING;
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7676 }
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7677
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7678
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7679 /*
821
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
7680 * Sets the title of a row in the container.
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
7681 * Parameters:
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
7682 * handle: Handle to window (widget) of container.
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
7683 * row: Zero based row of data being set.
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
7684 * title: String title of the item.
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
7685 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
7686 DW_FUNCTION_DEFINITION(dw_container_change_row_title, void, HWND handle, int row, const char *title)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7687 DW_FUNCTION_ADD_PARAM3(handle, row, title)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7688 DW_FUNCTION_NO_RETURN(dw_container_change_row_title)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7689 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, row, int, title, char *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7690 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7691 DW_FUNCTION_INIT;
821
00fa951abeb5 Fix for dw_container_set_row_title() misbehavior on Mac and implemented dw_container_change_row_title().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 813
diff changeset
7692 DWContainer *cont = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7693 [cont setRow:row title:title];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7694 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7695 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7696
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7697 /*
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7698 * Sets the data pointer of a row in the container.
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7699 * Parameters:
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7700 * handle: Handle to window (widget) of container.
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7701 * row: Zero based row of data being set.
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7702 * data: Data pointer.
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7703 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7704 DW_FUNCTION_DEFINITION(dw_container_change_row_data, void, HWND handle, int row, void *data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7705 DW_FUNCTION_ADD_PARAM3(handle, row, data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7706 DW_FUNCTION_NO_RETURN(dw_container_change_row_data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7707 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, row, int, data, void *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7708 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7709 DW_FUNCTION_INIT;
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7710 DWContainer *cont = handle;
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7711 [cont setRowData:row title:data];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7712 DW_FUNCTION_RETURN_NOTHING;
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7713 }
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7714
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7715 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7716 * Sets the title of a row in the container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7717 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7718 * handle: Handle to the container window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7719 * pointer: Pointer to the allocated memory in dw_container_alloc().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7720 * rowcount: The number of rows to be inserted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7721 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7722 DW_FUNCTION_DEFINITION(dw_container_insert, void, HWND handle, void *pointer, int rowcount)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7723 DW_FUNCTION_ADD_PARAM3(handle, pointer, rowcount)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7724 DW_FUNCTION_NO_RETURN(dw_container_insert)
1956
2924bc788170 Mac: Added code to avoid unused variable/parameter warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1955
diff changeset
7725 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, __DW_UNUSED__ pointer, void *, __DW_UNUSED__ rowcount, int)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7726 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7727 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7728 DWContainer *cont = handle;
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
7729 [cont reloadData];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7730 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7731 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7732
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7733 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7734 * Removes all rows from a container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7735 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7736 * handle: Handle to the window (widget) to be cleared.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7737 * redraw: TRUE to cause the container to redraw immediately.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7738 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7739 DW_FUNCTION_DEFINITION(dw_container_clear, void, HWND handle, int redraw)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7740 DW_FUNCTION_ADD_PARAM2(handle, redraw)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7741 DW_FUNCTION_NO_RETURN(dw_container_clear)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7742 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, redraw, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7743 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7744 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7745 DWContainer *cont = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
7746 [cont clear];
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
7747 if(redraw)
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
7748 [cont reloadData];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7749 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7750 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7751
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7752 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7753 * Removes the first x rows from a container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7754 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7755 * handle: Handle to the window (widget) to be deleted from.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7756 * rowcount: The number of rows to be deleted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7757 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7758 DW_FUNCTION_DEFINITION(dw_container_delete, void, HWND handle, int rowcount)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7759 DW_FUNCTION_ADD_PARAM2(handle, rowcount)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7760 DW_FUNCTION_NO_RETURN(dw_container_delete)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7761 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, rowcount, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7762 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7763 DW_FUNCTION_INIT;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7764 DWContainer *cont = handle;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7765 int x;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7766
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7767 for(x=0;x<rowcount;x++)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7768 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7769 [cont removeRow:0];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7770 }
1705
3fa0448d3a7e Fixed a bug in dw_container_delete_row() on Mac and potentially a similar bug in dw_container_delete().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1704
diff changeset
7771 [cont reloadData];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7772 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7773 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7774
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7775 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7776 * Scrolls container up or down.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7777 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7778 * handle: Handle to the window (widget) to be scrolled.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7779 * direction: DW_SCROLL_UP, DW_SCROLL_DOWN, DW_SCROLL_TOP or
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7780 * DW_SCROLL_BOTTOM. (rows is ignored for last two)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7781 * rows: The number of rows to be scrolled.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7782 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7783 DW_FUNCTION_DEFINITION(dw_container_scroll, void, HWND handle, int direction, long rows)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7784 DW_FUNCTION_ADD_PARAM3(handle, direction, rows)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7785 DW_FUNCTION_NO_RETURN(dw_container_scroll)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7786 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, direction, int, rows, long)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7787 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7788 DW_FUNCTION_INIT;
837
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
7789 DWContainer *cont = handle;
89d4bad9c96e Initial attempt at implementing the scrollbox on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 831
diff changeset
7790 NSScrollView *sv = [cont scrollview];
852
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7791 NSScroller *scrollbar = [sv verticalScroller];
855
0103a8751ab4 Removed an unnecessary method in the container (rowCount) and implemented container column alignment.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 854
diff changeset
7792 int rowcount = (int)[cont numberOfRowsInTableView:cont];
852
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7793 float currpos = [scrollbar floatValue];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7794 float change;
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7795
853
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
7796 /* Safety check */
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
7797 if(rowcount < 1)
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
7798 {
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
7799 return;
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
7800 }
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7801
853
c27ce204302b Add safety check to avoid potential divide by zero.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 852
diff changeset
7802 change = (float)rows/(float)rowcount;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
7803
852
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7804 switch(direction)
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7805 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7806 case DW_SCROLL_TOP:
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7807 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7808 [scrollbar setFloatValue:0];
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7809 break;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7810 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7811 case DW_SCROLL_BOTTOM:
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7812 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7813 [scrollbar setFloatValue:1];
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7814 break;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7815 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7816 case DW_SCROLL_UP:
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7817 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7818 float newpos = currpos - change;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7819 if(newpos < 0)
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7820 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7821 newpos = 0;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7822 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7823 [scrollbar setFloatValue:newpos];
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7824 break;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7825 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7826 case DW_SCROLL_DOWN:
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7827 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7828 float newpos = currpos + change;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7829 if(newpos > 1)
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7830 {
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7831 newpos = 1;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7832 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7833 [scrollbar setFloatValue:newpos];
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7834 break;
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7835 }
bb582f89007a Implemented dw_container_scroll() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 851
diff changeset
7836 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7837 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7838 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7839
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7840 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7841 * Starts a new query of a container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7842 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7843 * handle: Handle to the window (widget) to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7844 * flags: If this parameter is DW_CRA_SELECTED it will only
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7845 * return items that are currently selected. Otherwise
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7846 * it will return all records in the container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7847 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7848 DW_FUNCTION_DEFINITION(dw_container_query_start, char *, HWND handle, unsigned long flags)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7849 DW_FUNCTION_ADD_PARAM2(handle, flags)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7850 DW_FUNCTION_RETURN(dw_container_query_start, char *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7851 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, flags, unsigned long)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7852 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7853 DW_FUNCTION_INIT;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7854 DWContainer *cont = handle;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7855 NSIndexSet *selected = [cont selectedRowIndexes];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7856 NSUInteger result = [selected indexGreaterThanOrEqualToIndex:0];
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7857 void *retval = NULL;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7858
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7859 if(result != NSNotFound)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7860 {
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7861 if(flags & DW_CR_RETDATA)
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7862 retval = [cont getRowData:(int)result];
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7863 else
1885
0768bbcf67e5 Need to duplicate container query results on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1874
diff changeset
7864 {
0768bbcf67e5 Need to duplicate container query results on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1874
diff changeset
7865 char *temp = [cont getRowTitle:(int)result];
0768bbcf67e5 Need to duplicate container query results on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1874
diff changeset
7866 if(temp)
0768bbcf67e5 Need to duplicate container query results on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1874
diff changeset
7867 retval = strdup(temp);
0768bbcf67e5 Need to duplicate container query results on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1874
diff changeset
7868 }
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7869 [cont setLastQueryPoint:(int)result];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7870 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7871 DW_FUNCTION_RETURN_THIS(retval);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7872 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7873
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7874 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7875 * Continues an existing query of a container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7876 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7877 * handle: Handle to the window (widget) to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7878 * flags: If this parameter is DW_CRA_SELECTED it will only
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7879 * return items that are currently selected. Otherwise
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7880 * it will return all records in the container.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7881 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7882 DW_FUNCTION_DEFINITION(dw_container_query_next, char *, HWND handle, unsigned long flags)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7883 DW_FUNCTION_ADD_PARAM2(handle, flags)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7884 DW_FUNCTION_RETURN(dw_container_query_next, char *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7885 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, flags, unsigned long)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7886 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7887 DW_FUNCTION_INIT;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7888 DWContainer *cont = handle;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7889 int lastQueryPoint = [cont lastQueryPoint];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7890 NSIndexSet *selected = [cont selectedRowIndexes];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7891 NSUInteger result = [selected indexGreaterThanIndex:lastQueryPoint];
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7892 void *retval = NULL;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7893
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7894 if(result != NSNotFound)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7895 {
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7896 if(flags & DW_CR_RETDATA)
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7897 retval = [cont getRowData:(int)result];
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7898 else
1885
0768bbcf67e5 Need to duplicate container query results on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1874
diff changeset
7899 {
0768bbcf67e5 Need to duplicate container query results on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1874
diff changeset
7900 char *temp = [cont getRowTitle:(int)result];
0768bbcf67e5 Need to duplicate container query results on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1874
diff changeset
7901 if(temp)
0768bbcf67e5 Need to duplicate container query results on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1874
diff changeset
7902 retval = strdup(temp);
0768bbcf67e5 Need to duplicate container query results on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1874
diff changeset
7903 }
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7904 [cont setLastQueryPoint:(int)result];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7905 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7906 DW_FUNCTION_RETURN_THIS(retval);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7907 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7908
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7909 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7910 * Cursors the item with the text speficied, and scrolls to that item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7911 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7912 * handle: Handle to the window (widget) to be queried.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7913 * text: Text usually returned by dw_container_query().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7914 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
7915 DW_FUNCTION_DEFINITION(dw_container_cursor, void, HWND handle, const char *text)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7916 DW_FUNCTION_ADD_PARAM2(handle, text)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7917 DW_FUNCTION_NO_RETURN(dw_container_cursor)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7918 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, text, char *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7919 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7920 DW_FUNCTION_INIT;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7921 DW_LOCAL_POOL_IN;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7922 DWContainer *cont = handle;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7923 char *thistext;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7924 int x, count = (int)[cont numberOfRowsInTableView:cont];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7925
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7926 for(x=0;x<count;x++)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7927 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7928 thistext = [cont getRowTitle:x];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7929
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7930 if(thistext && strcmp(thistext, text) == 0)
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7931 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7932 NSIndexSet *selected = [[NSIndexSet alloc] initWithIndex:(NSUInteger)x];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7933
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7934 [cont selectRowIndexes:selected byExtendingSelection:YES];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7935 [selected release];
1334
5e2ec37d1680 Attempt to make dw_container_cursor() scroll to the item on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1322
diff changeset
7936 [cont scrollRowToVisible:x];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7937 x=count;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7938 break;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7939 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7940 }
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
7941 DW_LOCAL_POOL_OUT;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7942 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7943 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7944
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7945 /*
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7946 * Cursors the item with the data speficied, and scrolls to that item.
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7947 * Parameters:
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7948 * handle: Handle to the window (widget) to be queried.
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7949 * data: Data associated with the row.
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7950 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7951 DW_FUNCTION_DEFINITION(dw_container_cursor_by_data, void, HWND handle, void *data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7952 DW_FUNCTION_ADD_PARAM2(handle, data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7953 DW_FUNCTION_NO_RETURN(dw_container_cursor_by_data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7954 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, data, void *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7955 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7956 DW_FUNCTION_INIT;
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7957 DW_LOCAL_POOL_IN;
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7958 DWContainer *cont = handle;
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7959 void *thisdata;
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7960 int x, count = (int)[cont numberOfRowsInTableView:cont];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
7961
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7962 for(x=0;x<count;x++)
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7963 {
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7964 thisdata = [cont getRowData:x];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
7965
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7966 if(thisdata == data)
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7967 {
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7968 NSIndexSet *selected = [[NSIndexSet alloc] initWithIndex:(NSUInteger)x];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
7969
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7970 [cont selectRowIndexes:selected byExtendingSelection:YES];
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7971 [selected release];
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7972 [cont scrollRowToVisible:x];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7973 x=count;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7974 break;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7975 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7976 }
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7977 DW_LOCAL_POOL_OUT;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7978 DW_FUNCTION_RETURN_NOTHING;
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7979 }
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7980
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
7981 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7982 * Deletes the item with the text speficied.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7983 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7984 * handle: Handle to the window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7985 * text: Text usually returned by dw_container_query().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7986 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
7987 DW_FUNCTION_DEFINITION(dw_container_delete_row, void, HWND handle, const char *text)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7988 DW_FUNCTION_ADD_PARAM2(handle, text)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7989 DW_FUNCTION_NO_RETURN(dw_container_delete_row)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7990 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, text, char *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7991 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
7992 DW_FUNCTION_INIT;
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7993 DWContainer *cont = handle;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7994 char *thistext;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7995 int x, count = (int)[cont numberOfRowsInTableView:cont];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
7996
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7997 for(x=0;x<count;x++)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7998 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
7999 thistext = [cont getRowTitle:x];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8000
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8001 if(thistext && strcmp(thistext, text) == 0)
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8002 {
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8003 [cont removeRow:x];
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8004 [cont reloadData];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8005 x=count;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8006 break;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8007 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8008 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8009 DW_FUNCTION_RETURN_NOTHING;
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8010 }
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8011
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8012 /*
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8013 * Deletes the item with the data speficied.
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8014 * Parameters:
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8015 * handle: Handle to the window (widget).
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8016 * data: Data specified.
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8017 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8018 DW_FUNCTION_DEFINITION(dw_container_delete_row_by_data, void, HWND handle, void *data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8019 DW_FUNCTION_ADD_PARAM2(handle, data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8020 DW_FUNCTION_NO_RETURN(dw_container_delete_row_by_data)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8021 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, data, void *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8022 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8023 DW_FUNCTION_INIT;
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8024 DWContainer *cont = handle;
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8025 void *thisdata;
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8026 int x, count = (int)[cont numberOfRowsInTableView:cont];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
8027
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8028 for(x=0;x<count;x++)
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8029 {
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8030 thisdata = [cont getRowData:x];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
8031
1871
3f571ad9b92e First Mac round of changes aimed at separating the data and text
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1862
diff changeset
8032 if(thisdata == data)
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8033 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
8034 [cont removeRow:x];
1705
3fa0448d3a7e Fixed a bug in dw_container_delete_row() on Mac and potentially a similar bug in dw_container_delete().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1704
diff changeset
8035 [cont reloadData];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8036 x=count;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8037 break;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8038 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8039 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8040 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8041 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8042
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8043 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8044 * Optimizes the column widths so that all data is visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8045 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8046 * handle: Handle to the window (widget) to be optimized.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8047 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8048 DW_FUNCTION_DEFINITION(dw_container_optimize, void, HWND handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8049 DW_FUNCTION_ADD_PARAM1(handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8050 DW_FUNCTION_NO_RETURN(dw_container_optimize)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8051 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8052 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8053 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8054 DWContainer *cont = handle;
856
9dc45928a75f Added method to do column optimizations like on other platforms. Figure out the maximum width for a column and sizing to that.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 855
diff changeset
8055 [cont optimize];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8056 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8057 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8058
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8059 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8060 * Inserts an icon into the taskbar.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8061 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8062 * handle: Window handle that will handle taskbar icon messages.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8063 * icon: Icon handle to display in the taskbar.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8064 * bubbletext: Text to show when the mouse is above the icon.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8065 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
8066 void API dw_taskbar_insert(HWND handle, HICN icon, const char *bubbletext)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8067 {
1943
469711814566 Mac: Fix NSStatusItem deprecation warnings by using the embedded NSStatusBarButton instead.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1942
diff changeset
8068 #ifdef BUILDING_FOR_YOSEMITE
1220
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
8069 NSStatusItem *item = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
1943
469711814566 Mac: Fix NSStatusItem deprecation warnings by using the embedded NSStatusBarButton instead.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1942
diff changeset
8070 NSStatusBarButton *button = [item button];
1220
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
8071 NSImage *image = icon;
1943
469711814566 Mac: Fix NSStatusItem deprecation warnings by using the embedded NSStatusBarButton instead.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1942
diff changeset
8072 [button setImage:image];
1220
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
8073 if(bubbletext)
1943
469711814566 Mac: Fix NSStatusItem deprecation warnings by using the embedded NSStatusBarButton instead.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1942
diff changeset
8074 [button setToolTip:[NSString stringWithUTF8String:bubbletext]];
469711814566 Mac: Fix NSStatusItem deprecation warnings by using the embedded NSStatusBarButton instead.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1942
diff changeset
8075 [button setTarget:handle];
469711814566 Mac: Fix NSStatusItem deprecation warnings by using the embedded NSStatusBarButton instead.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1942
diff changeset
8076 [button setEnabled:YES];
469711814566 Mac: Fix NSStatusItem deprecation warnings by using the embedded NSStatusBarButton instead.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1942
diff changeset
8077 [[button cell] setHighlighted:YES];
469711814566 Mac: Fix NSStatusItem deprecation warnings by using the embedded NSStatusBarButton instead.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1942
diff changeset
8078 [button sendActionOn:(DWEventMaskLeftMouseUp|DWEventMaskLeftMouseDown|DWEventMaskRightMouseUp|DWEventMaskRightMouseDown)];
469711814566 Mac: Fix NSStatusItem deprecation warnings by using the embedded NSStatusBarButton instead.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1942
diff changeset
8079 [button setAction:@selector(mouseDown:)];
1220
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
8080 dw_window_set_data(handle, "_dw_taskbar", item);
1943
469711814566 Mac: Fix NSStatusItem deprecation warnings by using the embedded NSStatusBarButton instead.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1942
diff changeset
8081 #endif
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8082 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8083
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8084 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8085 * Deletes an icon from the taskbar.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8086 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8087 * handle: Window handle that was used with dw_taskbar_insert().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8088 * icon: Icon handle that was used with dw_taskbar_insert().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8089 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
8090 void API dw_taskbar_delete(HWND handle, HICN icon)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8091 {
1943
469711814566 Mac: Fix NSStatusItem deprecation warnings by using the embedded NSStatusBarButton instead.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1942
diff changeset
8092 #ifdef BUILDING_FOR_YOSEMITE
1220
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
8093 NSStatusItem *item = dw_window_get_data(handle, "_dw_taskbar");
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8094 DW_LOCAL_POOL_IN;
1220
67ff39b9577c Initial implementation of dw_taskbar_* for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1215
diff changeset
8095 [item release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8096 DW_LOCAL_POOL_OUT;
1943
469711814566 Mac: Fix NSStatusItem deprecation warnings by using the embedded NSStatusBarButton instead.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1942
diff changeset
8097 #endif
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8098 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8099
1708
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
8100 /* Internal function to keep HICNs from getting too big */
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
8101 void _icon_resize(NSImage *image)
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
8102 {
1709
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
8103 if(image)
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
8104 {
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
8105 NSSize size = [image size];
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
8106 if(size.width > 24 || size.height > 24)
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
8107 {
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
8108 if(size.width > 24)
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
8109 size.width = 24;
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
8110 if(size.height > 24)
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
8111 size.height = 24;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8112 [image setSize:size];
1709
de49c1f284b2 Safety check for the icon resize code on Mac and GTK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1708
diff changeset
8113 }
1708
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
8114 }
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
8115 }
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
8116
1713
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
8117 /* Internal version that does not resize the image */
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
8118 HICN _dw_icon_load(unsigned long resid)
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
8119 {
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
8120 NSBundle *bundle = [NSBundle mainBundle];
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
8121 NSString *respath = [bundle resourcePath];
1770
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
8122 NSString *filepath = [respath stringByAppendingFormat:@"/%lu.png", resid];
1713
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
8123 NSImage *image = [[NSImage alloc] initWithContentsOfFile:filepath];
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
8124 return image;
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
8125 }
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
8126
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8127 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8128 * Obtains an icon from a module (or header in GTK).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8129 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8130 * module: Handle to module (DLL) in OS/2 and Windows.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8131 * id: A unsigned long id int the resources on OS/2 and
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8132 * Windows, on GTK this is converted to a pointer
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8133 * to an embedded XPM.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8134 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
8135 HICN API dw_icon_load(unsigned long module, unsigned long resid)
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
8136 {
1713
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
8137 NSImage *image = _dw_icon_load(resid);
1708
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
8138 _icon_resize(image);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8139 return image;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8140 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8141
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8142 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8143 * Obtains an icon from a file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8144 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8145 * filename: Name of the file, omit extention to have
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8146 * DW pick the appropriate file extension.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8147 * (ICO on OS/2 or Windows, XPM on Unix)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8148 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
8149 HICN API dw_icon_load_from_file(const char *filename)
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
8150 {
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8151 char *ext = _dw_get_image_extension( filename );
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8152
674
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
8153 NSString *nstr = [ NSString stringWithUTF8String:filename ];
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
8154 NSImage *image = [[NSImage alloc] initWithContentsOfFile:nstr];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8155 if(!image && ext)
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8156 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8157 nstr = [nstr stringByAppendingString: [NSString stringWithUTF8String:ext]];
674
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
8158 image = [[NSImage alloc] initWithContentsOfFile:nstr];
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
8159 }
1708
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
8160 _icon_resize(image);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8161 return image;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8162 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8163
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8164 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8165 * Obtains an icon from data
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8166 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8167 * filename: Name of the file, omit extention to have
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8168 * DW pick the appropriate file extension.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8169 * (ICO on OS/2 or Windows, XPM on Unix)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8170 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
8171 HICN API dw_icon_load_from_data(const char *data, int len)
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
8172 {
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8173 NSData *thisdata = [NSData dataWithBytes:data length:len];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8174 NSImage *image = [[NSImage alloc] initWithData:thisdata];
1708
cc10082567ed Similar code for Mac to keep HICNs from getting too big.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1705
diff changeset
8175 _icon_resize(image);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8176 return image;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8177 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8178
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8179 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8180 * Frees a loaded resource in OS/2 and Windows.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8181 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8182 * handle: Handle to icon returned by dw_icon_load().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8183 */
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
8184 void API dw_icon_free(HICN handle)
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
8185 {
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
8186 NSImage *image = handle;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8187 DW_LOCAL_POOL_IN;
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
8188 [image release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8189 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8190 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8191
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8192 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8193 * Create a new MDI Frame to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8194 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8195 * id: An ID to be used with dw_window_from_id or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8196 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
8197 HWND API dw_mdi_new(unsigned long cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8198 {
684
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
8199 /* There isn't anything like quite like MDI on MacOS...
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
8200 * However we will make floating windows that hide
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
8201 * when the application is deactivated to simulate
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8202 * similar behavior.
684
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
8203 */
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
8204 DWMDI *mdi = [[DWMDI alloc] init];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
8205 /* [mdi setTag:cid]; Why doesn't this work? */
684
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
8206 return mdi;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8207 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8208
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8209 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8210 * Creates a splitbar window (widget) with given parameters.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8211 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8212 * type: Value can be DW_VERT or DW_HORZ.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8213 * topleft: Handle to the window to be top or left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8214 * bottomright: Handle to the window to be bottom or right.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8215 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8216 * A handle to a splitbar window or NULL on failure.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8217 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8218 DW_FUNCTION_DEFINITION(dw_splitbar_new, HWND, int type, HWND topleft, HWND bottomright, unsigned long cid)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8219 DW_FUNCTION_ADD_PARAM4(type, topleft, bottomright, cid)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8220 DW_FUNCTION_RETURN(dw_splitbar_new, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8221 DW_FUNCTION_RESTORE_PARAM4(type, int, topleft, HWND, bottomright, HWND, cid, unsigned long)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8222 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8223 DW_FUNCTION_INIT;
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
8224 id tmpbox = dw_box_new(DW_VERT, 0);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8225 DWSplitBar *split = [[DWSplitBar alloc] init];
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
8226 [split setDelegate:split];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
8227 dw_box_pack_start(tmpbox, topleft, 0, 0, TRUE, TRUE, 0);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8228 [split addSubview:tmpbox];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
8229 [tmpbox autorelease];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8230 tmpbox = dw_box_new(DW_VERT, 0);
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
8231 dw_box_pack_start(tmpbox, bottomright, 0, 0, TRUE, TRUE, 0);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8232 [split addSubview:tmpbox];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
8233 [tmpbox autorelease];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8234 if(type == DW_VERT)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8235 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8236 [split setVertical:NO];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8237 }
668
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
8238 else
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
8239 {
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
8240 [split setVertical:YES];
7b99731c6484 Fixes for splitbars (horizontal and vertical definitions are reversed).
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 667
diff changeset
8241 }
753
590eebc9b61f Preset the splitbar percent to 50% since Leopard doesn't set it automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 752
diff changeset
8242 /* Set the default percent to 50% split */
590eebc9b61f Preset the splitbar percent to 50% since Leopard doesn't set it automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 752
diff changeset
8243 [split setPercent:50.0];
1956
2924bc788170 Mac: Added code to avoid unused variable/parameter warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1955
diff changeset
8244 [split setTag:cid];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8245 DW_FUNCTION_RETURN_THIS(split);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8246 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8247
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8248 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8249 * Sets the position of a splitbar (pecentage).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8250 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8251 * handle: The handle to the splitbar returned by dw_splitbar_new().
1117
9ca5de2e59f8 Fixed the dw_splitbar_set() comment documentation. The percent parameter was missing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1115
diff changeset
8252 * percent: The position of the splitbar.
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8253 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8254 DW_FUNCTION_DEFINITION(dw_splitbar_set, void, HWND handle, float percent)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8255 DW_FUNCTION_ADD_PARAM2(handle, percent)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8256 DW_FUNCTION_NO_RETURN(dw_splitbar_set)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8257 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, percent, float)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8258 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8259 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8260 DWSplitBar *split = handle;
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8261 NSRect rect = [split frame];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8262 float pos;
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8263 /* Calculate the position based on the size */
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8264 if([split isVertical])
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8265 {
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8266 pos = rect.size.width * (percent / 100.0);
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8267 }
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8268 else
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8269 {
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8270 pos = rect.size.height * (percent / 100.0);
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8271 }
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8272 if(pos > 0)
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8273 {
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8274 [split setPosition:pos ofDividerAtIndex:0];
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8275 }
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8276 else
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8277 {
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8278 /* If we have no size.. wait until the resize
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8279 * event when we get an actual size to try
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8280 * to set the splitbar again.
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8281 */
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8282 [split setPercent:percent];
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8283 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8284 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8285 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8286
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8287 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8288 * Gets the position of a splitbar (pecentage).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8289 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8290 * handle: The handle to the splitbar returned by dw_splitbar_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8291 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8292 float API dw_splitbar_get(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8293 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8294 DWSplitBar *split = handle;
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8295 NSRect rect1 = [split frame];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8296 NSArray *subviews = [split subviews];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8297 NSView *view = [subviews objectAtIndex:0];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8298 NSRect rect2 = [view frame];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8299 float pos, total, retval = 0.0;
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8300 if([split isVertical])
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8301 {
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8302 total = rect1.size.width;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8303 pos = rect2.size.width;
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8304 }
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8305 else
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8306 {
677
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8307 total = rect1.size.height;
99002595f549 Fixes for dw_splitbar_set() not working on an unsized window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 676
diff changeset
8308 pos = rect2.size.height;
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8309 }
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8310 if(total > 0)
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8311 {
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8312 retval = pos / total;
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
8313 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8314 return retval;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8315 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8316
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8317 /* Internal function to convert fontname to NSFont */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
8318 NSFont *_dw_font_by_name(const char *fontname)
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8319 {
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8320 char *fontcopy = strdup(fontname);
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8321 char *name = strchr(fontcopy, '.');
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8322 NSFont *font = nil;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8323
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8324 if(name)
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8325 {
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8326 int size = atoi(fontcopy);
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8327 *name = 0;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8328 name++;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8329 font = [NSFont fontWithName:[ NSString stringWithUTF8String:name ] size:(float)size];
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8330 }
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8331 free(fontcopy);
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8332 return font;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8333 }
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8334
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8335 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8336 * Create a bitmap object to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8337 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8338 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8339 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8340 DW_FUNCTION_DEFINITION(dw_bitmap_new, HWND, ULONG cid)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8341 DW_FUNCTION_ADD_PARAM1(cid)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8342 DW_FUNCTION_RETURN(dw_bitmap_new, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8343 DW_FUNCTION_RESTORE_PARAM1(cid, ULONG)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8344 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8345 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8346 NSImageView *bitmap = [[NSImageView alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8347 [bitmap setImageFrameStyle:NSImageFrameNone];
1902
74f50459c530 Fix some deprecations introduced in Mac OS X Yosemite 10.10...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1896
diff changeset
8348 [bitmap setImageScaling:NSImageScaleNone];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8349 [bitmap setEditable:NO];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
8350 [bitmap setTag:cid];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8351 DW_FUNCTION_RETURN_THIS(bitmap);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8352 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8353
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8354 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8355 * Creates a pixmap with given parameters.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8356 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8357 * handle: Window handle the pixmap is associated with.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8358 * width: Width of the pixmap in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8359 * height: Height of the pixmap in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8360 * depth: Color depth of the pixmap.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8361 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8362 * A handle to a pixmap or NULL on failure.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8363 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8364 HPIXMAP API dw_pixmap_new(HWND handle, unsigned long width, unsigned long height, int depth)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8365 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8366 HPIXMAP pixmap;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8367
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8368 if(!(pixmap = calloc(1,sizeof(struct _hpixmap))))
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8369 return NULL;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8370 pixmap->width = width;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8371 pixmap->height = height;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8372 pixmap->handle = handle;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8373 pixmap->image = [[NSBitmapImageRep alloc]
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8374 initWithBitmapDataPlanes:NULL
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8375 pixelsWide:width
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8376 pixelsHigh:height
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8377 bitsPerSample:8
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8378 samplesPerPixel:4
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8379 hasAlpha:YES
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8380 isPlanar:NO
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8381 colorSpaceName:NSDeviceRGBColorSpace
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8382 bytesPerRow:0
909
c092eab43ae3 Experimental change to pixmap rendering. Switch from using NSImage to NSBitmapImageRef to store the image.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 902
diff changeset
8383 bitsPerPixel:0];
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8384 return pixmap;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8385 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8386
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8387 /* Function takes an NSImage and copies it into a flipped NSBitmapImageRep */
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8388 void _flip_image(NSImage *tmpimage, NSBitmapImageRep *image, NSSize size)
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8389 {
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
8390 NSCompositingOperation op = DWCompositingOperationSourceOver;
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8391 [NSGraphicsContext saveGraphicsState];
1938
5a88fff43d99 Mac: Fixed deprecation warnings relating to the GraphicsPort now using CoreGraphics.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1936
diff changeset
8392 [NSGraphicsContext setCurrentContext:_dw_draw_context(image)];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8393 [[[NSDictionary alloc] initWithObjectsAndKeys:image, NSGraphicsContextDestinationAttributeName, nil] autorelease];
1590
9eef6f82ee50 Comment cleanup in the Mac source.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1586
diff changeset
8394 /* Make a new transform */
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
8395 NSAffineTransform *t = [NSAffineTransform transform];
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
8396
1590
9eef6f82ee50 Comment cleanup in the Mac source.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1586
diff changeset
8397 /* By scaling Y negatively, we effectively flip the image */
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
8398 [t scaleXBy:1.0 yBy:-1.0];
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
8399
1590
9eef6f82ee50 Comment cleanup in the Mac source.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1586
diff changeset
8400 /* But we also have to translate it back by its height */
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
8401 [t translateXBy:0.0 yBy:-size.height];
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
8402
1590
9eef6f82ee50 Comment cleanup in the Mac source.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1586
diff changeset
8403 /* Apply the transform */
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
8404 [t concat];
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
8405 [tmpimage drawAtPoint:NSMakePoint(0, 0) fromRect:NSMakeRect(0, 0, size.width, size.height)
1914
3872ab37297b Fix numerous deprecation warnings building with SDK 10.12 Sierra.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1908
diff changeset
8406 operation:op fraction:1.0];
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8407 [NSGraphicsContext restoreGraphicsState];
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8408 }
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8409
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8410 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8411 * Creates a pixmap from a file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8412 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8413 * handle: Window handle the pixmap is associated with.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8414 * filename: Name of the file, omit extention to have
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8415 * DW pick the appropriate file extension.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8416 * (BMP on OS/2 or Windows, XPM on Unix)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8417 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8418 * A handle to a pixmap or NULL on failure.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8419 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
8420 HPIXMAP API dw_pixmap_new_from_file(HWND handle, const char *filename)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8421 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8422 HPIXMAP pixmap;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8423 DW_LOCAL_POOL_IN;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8424 char *ext = _dw_get_image_extension( filename );
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8425
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8426 if(!(pixmap = calloc(1,sizeof(struct _hpixmap))))
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8427 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8428 DW_LOCAL_POOL_OUT;
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8429 return NULL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8430 }
674
78f9aa6d6d89 Fixes or fonts and loading images from files. Added Mac specific settings to dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 673
diff changeset
8431 NSString *nstr = [ NSString stringWithUTF8String:filename ];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8432 NSImage *tmpimage = [[[NSImage alloc] initWithContentsOfFile:nstr] autorelease];
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8433 if(!tmpimage && ext)
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8434 {
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
8435 nstr = [nstr stringByAppendingString: [NSString stringWithUTF8String:ext]];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8436 tmpimage = [[[NSImage alloc] initWithContentsOfFile:nstr] autorelease];
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8437 }
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8438 if(!tmpimage)
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8439 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8440 DW_LOCAL_POOL_OUT;
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8441 return NULL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8442 }
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8443 NSSize size = [tmpimage size];
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8444 NSBitmapImageRep *image = [[NSBitmapImageRep alloc]
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8445 initWithBitmapDataPlanes:NULL
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8446 pixelsWide:size.width
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8447 pixelsHigh:size.height
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8448 bitsPerSample:8
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8449 samplesPerPixel:4
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8450 hasAlpha:YES
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8451 isPlanar:NO
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8452 colorSpaceName:NSDeviceRGBColorSpace
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8453 bytesPerRow:0
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8454 bitsPerPixel:0];
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8455 _flip_image(tmpimage, image, size);
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8456 pixmap->width = size.width;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8457 pixmap->height = size.height;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8458 pixmap->image = image;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8459 pixmap->handle = handle;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8460 DW_LOCAL_POOL_OUT;
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8461 return pixmap;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8462 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8463
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8464 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8465 * Creates a pixmap from memory.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8466 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8467 * handle: Window handle the pixmap is associated with.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8468 * data: Source of the image data
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8469 * (BMP on OS/2 or Windows, XPM on Unix)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8470 * le: length of data
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8471 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8472 * A handle to a pixmap or NULL on failure.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8473 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
8474 HPIXMAP API dw_pixmap_new_from_data(HWND handle, const char *data, int len)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8475 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8476 HPIXMAP pixmap;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8477 DW_LOCAL_POOL_IN;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8478
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8479 if(!(pixmap = calloc(1,sizeof(struct _hpixmap))))
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8480 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8481 DW_LOCAL_POOL_OUT;
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8482 return NULL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8483 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8484 NSData *thisdata = [NSData dataWithBytes:data length:len];
1557
030e9bddc1c9 Fixed some potential Objective-C memory leaks on Mac reported by XCode 4.2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1556
diff changeset
8485 NSImage *tmpimage = [[[NSImage alloc] initWithData:thisdata] autorelease];
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8486 if(!tmpimage)
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8487 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8488 DW_LOCAL_POOL_OUT;
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8489 return NULL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8490 }
957
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8491 NSSize size = [tmpimage size];
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8492 NSBitmapImageRep *image = [[NSBitmapImageRep alloc]
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8493 initWithBitmapDataPlanes:NULL
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8494 pixelsWide:size.width
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8495 pixelsHigh:size.height
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8496 bitsPerSample:8
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8497 samplesPerPixel:4
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8498 hasAlpha:YES
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8499 isPlanar:NO
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8500 colorSpaceName:NSDeviceRGBColorSpace
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8501 bytesPerRow:0
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8502 bitsPerPixel:0];
beed3e7f9d4b Fixes to flip pixmaps when loading from file or data on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 954
diff changeset
8503 _flip_image(tmpimage, image, size);
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8504 pixmap->width = size.width;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8505 pixmap->height = size.height;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8506 pixmap->image = image;
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8507 pixmap->handle = handle;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8508 DW_LOCAL_POOL_OUT;
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8509 return pixmap;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8510 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8511
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8512 /*
890
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
8513 * Sets the transparent color for a pixmap
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
8514 * Parameters:
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
8515 * pixmap: Handle to a pixmap returned by
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
8516 * dw_pixmap_new..
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
8517 * color: transparent color
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
8518 * Note: This does nothing on Mac as transparency
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
8519 * is handled automatically
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8520 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8521 void API dw_pixmap_set_transparent_color( HPIXMAP pixmap, ULONG color )
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8522 {
890
5a96cc2695b9 Removed dw_pixmap_set_transparent_color() from unimplemented on the Mac since it is handled automaticaly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 888
diff changeset
8523 /* Don't do anything */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8524 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8525
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8526 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8527 * Creates a pixmap from internal resource graphic specified by id.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8528 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8529 * handle: Window handle the pixmap is associated with.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8530 * id: Resource ID associated with requested pixmap.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8531 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8532 * A handle to a pixmap or NULL on failure.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8533 */
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
8534 HPIXMAP API dw_pixmap_grab(HWND handle, ULONG resid)
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
8535 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8536 HPIXMAP pixmap;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8537 DW_LOCAL_POOL_IN;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
8538
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8539 if(!(pixmap = calloc(1,sizeof(struct _hpixmap))))
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8540 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8541 DW_LOCAL_POOL_OUT;
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8542 return NULL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8543 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8544
670
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
8545 NSBundle *bundle = [NSBundle mainBundle];
0b920d0dc13e Implemented bitmap buttons and pixmaps from bundle resources.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 669
diff changeset
8546 NSString *respath = [bundle resourcePath];
1770
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
8547 NSString *filepath = [respath stringByAppendingFormat:@"/%lu.png", resid];
1318
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8548 NSImage *temp = [[NSImage alloc] initWithContentsOfFile:filepath];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8549
1318
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8550 if(temp)
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8551 {
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8552 NSSize size = [temp size];
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8553 NSBitmapImageRep *image = [[NSBitmapImageRep alloc]
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8554 initWithBitmapDataPlanes:NULL
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8555 pixelsWide:size.width
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8556 pixelsHigh:size.height
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8557 bitsPerSample:8
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8558 samplesPerPixel:4
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8559 hasAlpha:YES
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8560 isPlanar:NO
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8561 colorSpaceName:NSDeviceRGBColorSpace
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8562 bytesPerRow:0
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8563 bitsPerPixel:0];
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8564 _flip_image(temp, image, size);
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8565 pixmap->width = size.width;
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8566 pixmap->height = size.height;
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8567 pixmap->image = image;
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8568 pixmap->handle = handle;
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8569 [temp release];
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8570 return pixmap;
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8571 }
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8572 free(pixmap);
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8573 DW_LOCAL_POOL_OUT;
1318
ebd67be26f43 Fixed some issues and deprecations building with Xcode 4.2 on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1314
diff changeset
8574 return NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8575 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8576
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8577 /*
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8578 * Sets the font used by a specified pixmap.
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8579 * Normally the pixmap font is obtained from the associated window handle.
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8580 * However this can be used to override that, or for pixmaps with no window.
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8581 * Parameters:
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8582 * pixmap: Handle to a pixmap returned by dw_pixmap_new() or
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8583 * passed to the application via a callback.
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8584 * fontname: Name and size of the font in the form "size.fontname"
1147
091ed7c20b3f Implemented dw_pixmap_set_font() on Windows. Added to export files on Windows and OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1146
diff changeset
8585 * Returns:
091ed7c20b3f Implemented dw_pixmap_set_font() on Windows. Added to export files on Windows and OS/2.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1146
diff changeset
8586 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8587 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
8588 int API dw_pixmap_set_font(HPIXMAP pixmap, const char *fontname)
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8589 {
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8590 if(pixmap)
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8591 {
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8592 NSFont *font = _dw_font_by_name(fontname);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8593
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8594 if(font)
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8595 {
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8596 DW_LOCAL_POOL_IN;
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8597 NSFont *oldfont = pixmap->font;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8598 [font retain];
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8599 pixmap->font = font;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8600 if(oldfont)
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8601 [oldfont release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8602 DW_LOCAL_POOL_OUT;
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8603 return DW_ERROR_NONE;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8604 }
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8605 }
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8606 return DW_ERROR_GENERAL;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8607 }
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8608
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8609 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8610 * Destroys an allocated pixmap.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8611 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8612 * pixmap: Handle to a pixmap returned by
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8613 * dw_pixmap_new..
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8614 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8615 void API dw_pixmap_destroy(HPIXMAP pixmap)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8616 {
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8617 if(pixmap)
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8618 {
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8619 NSBitmapImageRep *image = (NSBitmapImageRep *)pixmap->image;
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8620 NSFont *font = pixmap->font;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8621 DW_LOCAL_POOL_IN;
1146
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8622 [image release];
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8623 [font release];
9d97610b2140 Adding dw_pixmap_set_font() which is equivalent to dw_window_set_font() except for pixmaps.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1144
diff changeset
8624 free(pixmap);
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8625 DW_LOCAL_POOL_OUT;
981
536ec60ee433 Don't destroy a pixmap if the handle is null
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 980
diff changeset
8626 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8627 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8628
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8629 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8630 * Copies from one item to another.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8631 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8632 * dest: Destination window handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8633 * destp: Destination pixmap. (choose only one).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8634 * xdest: X coordinate of destination.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8635 * ydest: Y coordinate of destination.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8636 * width: Width of area to copy.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8637 * height: Height of area to copy.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8638 * src: Source window handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8639 * srcp: Source pixmap. (choose only one).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8640 * xsrc: X coordinate of source.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8641 * ysrc: Y coordinate of source.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8642 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8643 void API dw_pixmap_bitblt(HWND dest, HPIXMAP destp, int xdest, int ydest, int width, int height, HWND src, HPIXMAP srcp, int xsrc, int ysrc)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8644 {
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8645 dw_pixmap_stretch_bitblt(dest, destp, xdest, ydest, width, height, src, srcp, xsrc, ysrc, -1, -1);
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8646 }
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8647
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8648 /*
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8649 * Copies from one surface to another allowing for stretching.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8650 * Parameters:
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8651 * dest: Destination window handle.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8652 * destp: Destination pixmap. (choose only one).
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8653 * xdest: X coordinate of destination.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8654 * ydest: Y coordinate of destination.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8655 * width: Width of the target area.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8656 * height: Height of the target area.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8657 * src: Source window handle.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8658 * srcp: Source pixmap. (choose only one).
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8659 * xsrc: X coordinate of source.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8660 * ysrc: Y coordinate of source.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8661 * srcwidth: Width of area to copy.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8662 * srcheight: Height of area to copy.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8663 * Returns:
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8664 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8665 */
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8666 int API dw_pixmap_stretch_bitblt(HWND dest, HPIXMAP destp, int xdest, int ydest, int width, int height, HWND src, HPIXMAP srcp, int xsrc, int ysrc, int srcwidth, int srcheight)
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8667 {
1886
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
8668 DWBitBlt *bltinfo;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8669 NSValue* bi;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8670 DW_LOCAL_POOL_IN;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8671
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8672 /* Sanity checks */
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8673 if((!dest && !destp) || (!src && !srcp) ||
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8674 ((srcwidth == -1 || srcheight == -1) && srcwidth != srcheight))
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8675 {
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8676 DW_LOCAL_POOL_OUT;
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8677 return DW_ERROR_GENERAL;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8678 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
8679
1886
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
8680 bltinfo = calloc(1, sizeof(DWBitBlt));
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
8681 bi = [NSValue valueWithPointer:bltinfo];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
8682
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8683 /* Fill in the information */
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8684 bltinfo->dest = dest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8685 bltinfo->src = src;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8686 bltinfo->xdest = xdest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8687 bltinfo->ydest = ydest;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8688 bltinfo->width = width;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8689 bltinfo->height = height;
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8690 bltinfo->xsrc = xsrc;
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8691 bltinfo->ysrc = ysrc;
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8692 bltinfo->srcwidth = srcwidth;
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8693 bltinfo->srcheight = srcheight;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8694
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8695 if(destp)
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8696 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8697 bltinfo->dest = (id)destp->image;
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8698 }
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8699 if(srcp)
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8700 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
8701 id object = bltinfo->src = (id)srcp->image;
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
8702 [object retain];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8703 }
1953
77d156c3f01c Mac: Added a safeCall method to DWObject to make it easier to run things on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1952
diff changeset
8704 [DWObj safeCall:@selector(doBitBlt:) withObject:bi];
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
8705 DW_LOCAL_POOL_OUT;
1247
93607596cf85 Implemented dw_pixmap_stretch_bitblt() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1241
diff changeset
8706 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8707 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8708
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8709 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8710 * Create a new static text window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8711 * Not available under OS/2, eCS
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8712 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8713 * text: The text to be display by the static text widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8714 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8715 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
8716 HWND API dw_calendar_new(ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8717 {
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
8718 DWCalendar *calendar = [[DWCalendar alloc] init];
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
8719 [calendar setDatePickerMode:NSSingleDateMode];
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
8720 [calendar setDatePickerStyle:NSClockAndCalendarDatePickerStyle];
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
8721 [calendar setDatePickerElements:NSYearMonthDayDatePickerElementFlag];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
8722 [calendar setTag:cid];
1120
b2e060f43329 Initialize the calendar control to the current date during creation on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1117
diff changeset
8723 [calendar setDateValue:[NSDate date]];
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
8724 return calendar;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8725 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8726
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8727 /*
2012
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8728 * Sets the current date of a calendar.
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8729 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8730 * handle: The handle to the calendar returned by dw_calendar_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8731 * year...
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8732 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8733 void dw_calendar_set_date(HWND handle, unsigned int year, unsigned int month, unsigned int day)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8734 {
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
8735 DWCalendar *calendar = handle;
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
8736 NSDate *date;
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
8737 char buffer[101];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8738 DW_LOCAL_POOL_IN;
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
8739
1902
74f50459c530 Fix some deprecations introduced in Mac OS X Yosemite 10.10...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1896
diff changeset
8740 snprintf(buffer, 100, "%04d-%02d-%02d", year, month, day);
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
8741
1902
74f50459c530 Fix some deprecations introduced in Mac OS X Yosemite 10.10...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1896
diff changeset
8742 NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
8743 dateFormatter.dateFormat = @"yyyy-MM-dd";
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
8744
1902
74f50459c530 Fix some deprecations introduced in Mac OS X Yosemite 10.10...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1896
diff changeset
8745 date = [dateFormatter dateFromString:[NSString stringWithUTF8String:buffer]];
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
8746 [calendar setDateValue:date];
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
8747 [date release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8748 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8749 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8750
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8751 /*
2012
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8752 * Gets the current date of a calendar.
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8753 * Parameters:
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8754 * handle: The handle to the calendar returned by dw_calendar_new().
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8755 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8756 void dw_calendar_get_date(HWND handle, unsigned int *year, unsigned int *month, unsigned int *day)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8757 {
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
8758 DWCalendar *calendar = handle;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8759 DW_LOCAL_POOL_IN;
2004
ebbdb2120659 Mac: Fix building on 10.9 and earlier due to changed constant names.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2002
diff changeset
8760 NSCalendar *mycalendar = [[NSCalendar alloc] initWithCalendarIdentifier:DWCalendarIdentifierGregorian];
729
6712e4211522 Switched to graphical calendar control style... and fixed date querying code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 728
diff changeset
8761 NSDate *date = [calendar dateValue];
2004
ebbdb2120659 Mac: Fix building on 10.9 and earlier due to changed constant names.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2002
diff changeset
8762 NSDateComponents* components = [mycalendar components:DWCalendarUnitDay|DWCalendarUnitMonth|DWCalendarUnitYear fromDate:date];
2012
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8763 *day = (unsigned int)[components day];
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8764 *month = (unsigned int)[components month];
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8765 *year = (unsigned int)[components year];
2002
a2931caa3422 Fix setting/getting dates in dw_calendar under macos. Only tested on Mojave. Sorry about the white space changes.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1996
diff changeset
8766 [mycalendar release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8767 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8768 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8769
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8770 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8771 * Causes the embedded HTML widget to take action.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8772 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8773 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8774 * action: One of the DW_HTML_* constants.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8775 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8776 void API dw_html_action(HWND handle, int action)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8777 {
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
8778 DWWebView *html = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8779 switch(action)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8780 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8781 case DW_HTML_GOBACK:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8782 [html goBack];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8783 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8784 case DW_HTML_GOFORWARD:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8785 [html goForward];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8786 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8787 case DW_HTML_GOHOME:
2012
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8788 dw_html_url(handle, DW_HOME_URL);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8789 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8790 case DW_HTML_SEARCH:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8791 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8792 case DW_HTML_RELOAD:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8793 [html reload:html];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8794 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8795 case DW_HTML_STOP:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8796 [html stopLoading:html];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8797 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8798 case DW_HTML_PRINT:
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8799 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8800 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8801 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8802
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8803 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8804 * Render raw HTML code in the embedded HTML widget..
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8805 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8806 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8807 * string: String buffer containt HTML code to
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8808 * be rendered.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8809 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8810 * 0 on success.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8811 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
8812 int API dw_html_raw(HWND handle, const char *string)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8813 {
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
8814 DWWebView *html = handle;
1952
8ce5c562348f Mac: Attempting a better WKWebKit fix, use the WK_API_ENABLED constant to determine if the API is available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1951
diff changeset
8815 #if WK_API_ENABLED
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
8816 [html loadHTMLString:[ NSString stringWithUTF8String:string ] baseURL:nil];
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
8817 #else
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8818 [[html mainFrame] loadHTMLString:[ NSString stringWithUTF8String:string ] baseURL:nil];
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
8819 #endif
2014
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
8820 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8821 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8822
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8823 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8824 * Render file or web page in the embedded HTML widget..
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8825 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8826 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8827 * url: Universal Resource Locator of the web or
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8828 * file object to be rendered.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8829 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8830 * 0 on success.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8831 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
8832 int API dw_html_url(HWND handle, const char *url)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8833 {
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
8834 DWWebView *html = handle;
1952
8ce5c562348f Mac: Attempting a better WKWebKit fix, use the WK_API_ENABLED constant to determine if the API is available.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1951
diff changeset
8835 #if WK_API_ENABLED
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
8836 [html loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[ NSString stringWithUTF8String:url ]]]];
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
8837 #else
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8838 [[html mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[ NSString stringWithUTF8String:url ]]]];
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
8839 #endif
2014
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
8840 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8841 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8842
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8843 /*
2012
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8844 * Executes the javascript contained in "script" in the HTML window.
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8845 * Parameters:
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8846 * handle: Handle to the HTML window.
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8847 * script: Javascript code to execute.
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8848 * scriptdata: Data passed to the signal handler.
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8849 * Notes: A DW_SIGNAL_HTML_RESULT event will be raised with scriptdata.
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8850 * Returns:
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8851 * DW_ERROR_NONE (0) on success.
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8852 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
8853 int dw_html_javascript_run(HWND handle, const char *script, void *scriptdata)
2012
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8854 {
2014
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
8855 DWWebView *html = handle;
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
8856 DW_LOCAL_POOL_IN;
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
8857
2012
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8858 #if WK_API_ENABLED
2020
59dfb86fb3b1 Mac: Implemented DW_SIGNAL_HTML_RESULT for all versions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2014
diff changeset
8859 [html evaluateJavaScript:[NSString stringWithUTF8String:script] completionHandler:^(NSString *result, NSError *error)
59dfb86fb3b1 Mac: Implemented DW_SIGNAL_HTML_RESULT for all versions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2014
diff changeset
8860 {
59dfb86fb3b1 Mac: Implemented DW_SIGNAL_HTML_RESULT for all versions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2014
diff changeset
8861 void *params[2] = { result, scriptdata };
59dfb86fb3b1 Mac: Implemented DW_SIGNAL_HTML_RESULT for all versions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2014
diff changeset
8862 _event_handler(html, (NSEvent *)params, 18);
59dfb86fb3b1 Mac: Implemented DW_SIGNAL_HTML_RESULT for all versions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2014
diff changeset
8863 }];
2014
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
8864 #else
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
8865 NSString *result = [html stringByEvaluatingJavaScriptFromString:[NSString stringWithUTF8String:script]];
2020
59dfb86fb3b1 Mac: Implemented DW_SIGNAL_HTML_RESULT for all versions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2014
diff changeset
8866 void *params[2] = { result, scriptdata };
59dfb86fb3b1 Mac: Implemented DW_SIGNAL_HTML_RESULT for all versions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2014
diff changeset
8867 _event_handler(html, (NSEvent *)params, 18);
2014
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
8868 #endif
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
8869 DW_LOCAL_POOL_OUT;
2012
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8870 return DW_ERROR_NONE;
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8871 }
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8872
75c6eb796e91 Mac: Implement dw_html_javascript_run() so things build again.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2004
diff changeset
8873 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8874 * Create a new HTML window (widget) to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8875 * Not available under OS/2, eCS
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8876 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8877 * text: The default text to be in the entryfield widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8878 * id: An ID to be used with dw_window_from_id() or 0L.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8879 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8880 DW_FUNCTION_DEFINITION(dw_html_new, HWND, ULONG cid)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8881 DW_FUNCTION_ADD_PARAM1(cid)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8882 DW_FUNCTION_RETURN(dw_html_new, HWND)
1956
2924bc788170 Mac: Added code to avoid unused variable/parameter warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1955
diff changeset
8883 DW_FUNCTION_RESTORE_PARAM1(__DW_UNUSED__ cid, ULONG)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8884 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8885 DW_FUNCTION_INIT;
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
8886 DWWebView *web = [[DWWebView alloc] init];
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
8887 #if WK_API_ENABLED
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
8888 web.navigationDelegate = web;
2014
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
8889 #else
b1838dd5509a Mac: Added support on MacOS versions that only support WebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2013
diff changeset
8890 web.frameLoadDelegate = web;
2013
7303b35a9f4d Mac: Added DW_SIGNAL_HTML support on Mac when using WKWebView.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2012
diff changeset
8891 #endif
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
8892 /* [web setTag:cid]; Why doesn't this work? */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
8893 DW_FUNCTION_RETURN_THIS(web);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8894 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8895
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8896 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8897 * Returns the current X and Y coordinates of the mouse pointer.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8898 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8899 * x: Pointer to variable to store X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8900 * y: Pointer to variable to store Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8901 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8902 void API dw_pointer_query_pos(long *x, long *y)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8903 {
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
8904 NSPoint mouseLoc;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8905 mouseLoc = [NSEvent mouseLocation];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8906 if(x)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8907 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8908 *x = mouseLoc.x;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8909 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8910 if(y)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8911 {
946
c64d3ca566f9 Attempt at inverting the window position and mouse pointer coordinates on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 945
diff changeset
8912 *y = [[NSScreen mainScreen] frame].size.height - mouseLoc.y;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8913 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8914 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8915
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8916 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8917 * Sets the X and Y coordinates of the mouse pointer.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8918 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8919 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8920 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8921 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8922 void API dw_pointer_set_pos(long x, long y)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8923 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8924 /* From what I have read this isn't possible, agaist human interface rules */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8925 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8926
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8927 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8928 * Create a menu object to be popped up.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8929 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8930 * id: An ID to be used for getting the resource from the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8931 * resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8932 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
8933 HMENUI API dw_menu_new(ULONG cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8934 {
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
8935 NSMenu *menu = [[NSMenu alloc] init];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8936 [menu setAutoenablesItems:NO];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
8937 /* [menu setTag:cid]; Why doesn't this work? */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8938 return menu;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8939 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8940
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8941 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8942 * Create a menubar on a window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8943 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8944 * location: Handle of a window frame to be attached to.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8945 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8946 HMENUI API dw_menubar_new(HWND location)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8947 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8948 NSWindow *window = location;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8949 NSMenu *windowmenu = _generate_main_menu();
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8950 [[window contentView] setMenu:windowmenu];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8951 return (HMENUI)windowmenu;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8952 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8953
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8954 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8955 * Destroys a menu created with dw_menubar_new or dw_menu_new.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8956 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8957 * menu: Handle of a menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8958 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8959 void API dw_menu_destroy(HMENUI *menu)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8960 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8961 NSMenu *thismenu = *menu;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8962 DW_LOCAL_POOL_IN;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
8963 [thismenu release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
8964 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8965 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8966
1903
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8967 /* Handle deprecation of convertScreenToBase in 10.10 yet still supporting
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8968 * 10.6 and earlier since convertRectFromScreen was introduced in 10.7.
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8969 */
1904
2e456850e027 Minor fix for that last commit... code actually works now. ;)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1903
diff changeset
8970 NSPoint _windowPointFromScreen(id window, NSPoint p)
2e456850e027 Minor fix for that last commit... code actually works now. ;)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1903
diff changeset
8971 {
2e456850e027 Minor fix for that last commit... code actually works now. ;)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1903
diff changeset
8972 SEL crfs = NSSelectorFromString(@"convertRectFromScreen:");
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
8973
1903
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8974 if([window respondsToSelector:crfs])
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8975 {
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8976 NSRect (* icrfs)(id, SEL, NSRect) = (NSRect (*)(id, SEL, NSRect))[window methodForSelector:crfs];
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8977 NSRect rect = icrfs(window, crfs, NSMakeRect(p.x, p.y, 1, 1));
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8978 return rect.origin;
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8979 }
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8980 else
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8981 {
1904
2e456850e027 Minor fix for that last commit... code actually works now. ;)
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1903
diff changeset
8982 SEL cstb = NSSelectorFromString(@"convertScreenToBase:");
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
8983
1903
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8984 if([window respondsToSelector:cstb])
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8985 {
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8986 NSPoint (* icstb)(id, SEL, NSPoint) = (NSPoint (*)(id, SEL, NSPoint))[window methodForSelector:cstb];
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8987 return icstb(window, cstb, p);
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8988 }
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8989 }
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8990 return NSMakePoint(0,0);
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8991 }
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
8992
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8993 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8994 * Pops up a context menu at given x and y coordinates.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8995 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8996 * menu: The handle the the existing menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8997 * parent: Handle to the window initiating the popup.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8998 * x: X coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8999 * y: Y coordinate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9000 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9001 void API dw_menu_popup(HMENUI *menu, HWND parent, int x, int y)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9002 {
702
e9a3d1da3d3e dw_menu_popup() now uses the coordinates specified instead of the event coorindates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 701
diff changeset
9003 NSMenu *thismenu = (NSMenu *)*menu;
711
82250177f814 Fix for popup menus not being created when window handle passed is a toplevel window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 710
diff changeset
9004 id object = parent;
82250177f814 Fix for popup menus not being created when window handle passed is a toplevel window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 710
diff changeset
9005 NSView *view = [object isKindOfClass:[NSWindow class]] ? [object contentView] : parent;
702
e9a3d1da3d3e dw_menu_popup() now uses the coordinates specified instead of the event coorindates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 701
diff changeset
9006 NSWindow *window = [view window];
701
c91a1b345f2e Fix for button press and context menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 700
diff changeset
9007 NSEvent *event = [DWApp currentEvent];
1225
f5b79d8b0694 Fixed positioning popup menu when the controlling window is not visible on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1222
diff changeset
9008 if(!window)
f5b79d8b0694 Fixed positioning popup menu when the controlling window is not visible on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1222
diff changeset
9009 window = [event window];
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
9010 [thismenu autorelease];
946
c64d3ca566f9 Attempt at inverting the window position and mouse pointer coordinates on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 945
diff changeset
9011 NSPoint p = NSMakePoint(x, [[NSScreen mainScreen] frame].size.height - y);
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
9012 NSEvent* fake = [NSEvent mouseEventWithType:DWEventTypeRightMouseDown
1903
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
9013 location:_windowPointFromScreen(window, p)
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9014 modifierFlags:0
702
e9a3d1da3d3e dw_menu_popup() now uses the coordinates specified instead of the event coorindates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 701
diff changeset
9015 timestamp:[event timestamp]
e9a3d1da3d3e dw_menu_popup() now uses the coordinates specified instead of the event coorindates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 701
diff changeset
9016 windowNumber:[window windowNumber]
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9017 context:[NSGraphicsContext currentContext]
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9018 eventNumber:1
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9019 clickCount:1
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9020 pressure:0.0];
702
e9a3d1da3d3e dw_menu_popup() now uses the coordinates specified instead of the event coorindates.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 701
diff changeset
9021 [NSMenu popUpContextMenu:thismenu withEvent:fake forView:view];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9022 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9023
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
9024 char _removetilde(char *dest, const char *src)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9025 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9026 int z, cur=0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9027 char accel = '\0';
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9028
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9029 for(z=0;z<strlen(src);z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9030 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9031 if(src[z] != '~')
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9032 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9033 dest[cur] = src[z];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9034 cur++;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9035 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9036 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9037 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9038 accel = src[z+1];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9039 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9040 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9041 dest[cur] = 0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9042 return accel;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9043 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9044
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9045 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9046 * Adds a menuitem or submenu to an existing menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9047 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9048 * menu: The handle the the existing menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9049 * title: The title text on the menu item to be added.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9050 * id: An ID to be used for message passing.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9051 * flags: Extended attributes to set on the menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9052 * end: If TRUE memu is positioned at the end of the menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9053 * check: If TRUE menu is "check"able.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9054 * flags: Extended attributes to set on the menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9055 * submenu: Handle to an existing menu to be a submenu or NULL.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9056 */
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
9057 HWND API dw_menu_append_item(HMENUI menux, const char *title, ULONG itemid, ULONG flags, int end, int check, HMENUI submenux)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9058 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9059 NSMenu *menu = menux;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9060 NSMenu *submenu = submenux;
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
9061 DWMenuItem *item = NULL;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9062 if(strlen(title) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9063 {
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
9064 [menu addItem:[DWMenuItem separatorItem]];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9065 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9066 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9067 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9068 char accel[2];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9069 char *newtitle = malloc(strlen(title)+1);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9070 NSString *nstr;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9071
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9072 accel[0] = _removetilde(newtitle, title);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9073 accel[1] = 0;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9074
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9075 nstr = [ NSString stringWithUTF8String:newtitle ];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9076 free(newtitle);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9077
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
9078 item = [[[DWMenuItem alloc] initWithTitle:nstr
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
9079 action:@selector(menuHandler:)
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
9080 keyEquivalent:[ NSString stringWithUTF8String:accel ]] autorelease];
1312
c5db6c70905c Added code to remove signal handlers when objects are destroyed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1306
diff changeset
9081 [menu addItem:item];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9082
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9083 [item setTag:itemid];
1517
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
9084 if(check)
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
9085 {
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
9086 [item setCheck:YES];
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
9087 if(flags & DW_MIS_CHECKED)
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
9088 {
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
9089 [item setState:DWControlStateValueOn];
1517
6506f29dfefc Implement automatic checking and unchecking of menu items on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1513
diff changeset
9090 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9091 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9092 if(flags & DW_MIS_DISABLED)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9093 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9094 [item setEnabled:NO];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9095 }
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9096
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9097 if(submenux)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9098 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9099 [submenu setTitle:nstr];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9100 [menu setSubmenu:submenu forItem:item];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9101 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9102 return item;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9103 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9104 return item;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9105 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9106
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9107 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9108 * Sets the state of a menu item check.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9109 * Deprecated; use dw_menu_item_set_state()
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9110 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9111 * menu: The handle the the existing menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9112 * id: Menuitem id.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9113 * check: TRUE for checked FALSE for not checked.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9114 */
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
9115 void API dw_menu_item_set_check(HMENUI menux, unsigned long itemid, int check)
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
9116 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9117 id menu = menux;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9118 NSMenuItem *menuitem = (NSMenuItem *)[menu itemWithTag:itemid];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9119
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9120 if(menuitem != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9121 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9122 if(check)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9123 {
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
9124 [menuitem setState:DWControlStateValueOn];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9125 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9126 else
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9127 {
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
9128 [menuitem setState:DWControlStateValueOff];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9129 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9130 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9131 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9132
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9133 /*
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9134 * Deletes the menu item specified.
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9135 * Parameters:
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9136 * menu: The handle to the menu in which the item was appended.
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9137 * id: Menuitem id.
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9138 * Returns:
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9139 * DW_ERROR_NONE (0) on success or DW_ERROR_UNKNOWN on failure.
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9140 */
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9141 int API dw_menu_delete_item(HMENUI menux, unsigned long itemid)
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9142 {
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9143 id menu = menux;
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9144 NSMenuItem *menuitem = (NSMenuItem *)[menu itemWithTag:itemid];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9145
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9146 if(menuitem != nil)
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9147 {
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9148 [menu removeItem:menuitem];
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9149 return DW_ERROR_NONE;
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9150 }
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9151 return DW_ERROR_UNKNOWN;
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9152 }
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9153
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
9154 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9155 * Sets the state of a menu item.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9156 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9157 * menu: The handle to the existing menu.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9158 * id: Menuitem id.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9159 * flags: DW_MIS_ENABLED/DW_MIS_DISABLED
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9160 * DW_MIS_CHECKED/DW_MIS_UNCHECKED
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9161 */
654
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
9162 void API dw_menu_item_set_state(HMENUI menux, unsigned long itemid, unsigned long state)
80e253df49fd Implementing the menubar and hopefully popup menus.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 653
diff changeset
9163 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9164 id menu = menux;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9165 NSMenuItem *menuitem = (NSMenuItem *)[menu itemWithTag:itemid];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9166
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9167 if(menuitem != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9168 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9169 if(state & DW_MIS_CHECKED)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9170 {
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
9171 [menuitem setState:DWControlStateValueOn];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9172 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9173 else if(state & DW_MIS_UNCHECKED)
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9174 {
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
9175 [menuitem setState:DWControlStateValueOff];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9176 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9177 if(state & DW_MIS_ENABLED)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9178 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9179 [menuitem setEnabled:YES];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9180 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9181 else if(state & DW_MIS_DISABLED)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9182 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9183 [menuitem setEnabled:NO];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9184 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9185 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9186 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9187
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
9188 /* Gets the notebook page from associated ID */
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
9189 DWNotebookPage *_notepage_from_id(DWNotebook *notebook, unsigned long pageid)
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
9190 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9191 NSArray *pages = [notebook tabViewItems];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9192 for(DWNotebookPage *notepage in pages)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9193 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9194 if([notepage pageid] == pageid)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9195 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9196 return notepage;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9197 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9198 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9199 return nil;
652
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
9200 }
ef0f484c6c4b Added even more... including first signal handling and notebooks among other controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 651
diff changeset
9201
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9202 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9203 * Create a notebook object to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9204 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9205 * id: An ID to be used for getting the resource from the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9206 * resource file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9207 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
9208 HWND API dw_notebook_new(ULONG cid, int top)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9209 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9210 DWNotebook *notebook = [[DWNotebook alloc] init];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9211 [notebook setDelegate:notebook];
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
9212 /* [notebook setTag:cid]; Why doesn't this work? */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9213 return notebook;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9214 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9215
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9216 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9217 * Adds a new page to specified notebook.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9218 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9219 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9220 * flags: Any additional page creation flags.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9221 * front: If TRUE page is added at the beginning.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9222 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9223 unsigned long API dw_notebook_page_new(HWND handle, ULONG flags, int front)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9224 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9225 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9226 NSInteger page = [notebook pageid];
1907
54f9ec5bb793 XCode 7.0 reports that NSTabViewItem initWithIdentifier can't be NULL...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1906
diff changeset
9227 DWNotebookPage *notepage = [[DWNotebookPage alloc] initWithIdentifier:[NSString stringWithFormat: @"pageid:%d", (int)page]];
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
9228 [notepage setPageid:(int)page];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9229 if(front)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9230 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9231 [notebook insertTabViewItem:notepage atIndex:(NSInteger)0];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9232 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9233 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9234 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9235 [notebook addTabViewItem:notepage];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9236 }
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
9237 [notepage autorelease];
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
9238 [notebook setPageid:(int)(page+1)];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9239 return (unsigned long)page;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9240 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9241
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9242 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9243 * Remove a page from a notebook.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9244 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9245 * handle: Handle to the notebook widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9246 * pageid: ID of the page to be destroyed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9247 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9248 void API dw_notebook_page_destroy(HWND handle, unsigned int pageid)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9249 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9250 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9251 DWNotebookPage *notepage = _notepage_from_id(notebook, pageid);
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
9252 DW_LOCAL_POOL_IN;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9253
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9254 if(notepage != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9255 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9256 [notebook removeTabViewItem:notepage];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9257 }
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
9258 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9259 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9260
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9261 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9262 * Queries the currently visible page ID.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9263 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9264 * handle: Handle to the notebook widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9265 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9266 unsigned long API dw_notebook_page_get(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9267 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9268 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9269 DWNotebookPage *notepage = (DWNotebookPage *)[notebook selectedTabViewItem];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9270 return [notepage pageid];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9271 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9272
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9273 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9274 * Sets the currently visibale page ID.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9275 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9276 * handle: Handle to the notebook widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9277 * pageid: ID of the page to be made visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9278 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9279 void API dw_notebook_page_set(HWND handle, unsigned int pageid)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9280 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9281 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9282 DWNotebookPage *notepage = _notepage_from_id(notebook, pageid);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9283
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9284 if(notepage != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9285 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9286 [notebook selectTabViewItem:notepage];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9287 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9288 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9289
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9290 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9291 * Sets the text on the specified notebook tab.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9292 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9293 * handle: Notebook handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9294 * pageid: Page ID of the tab to set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9295 * text: Pointer to the text to set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9296 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
9297 void API dw_notebook_page_set_text(HWND handle, ULONG pageid, const char *text)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9298 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9299 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9300 DWNotebookPage *notepage = _notepage_from_id(notebook, pageid);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9301
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9302 if(notepage != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9303 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9304 [notepage setLabel:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9305 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9306 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9307
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9308 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9309 * Sets the text on the specified notebook tab status area.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9310 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9311 * handle: Notebook handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9312 * pageid: Page ID of the tab to set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9313 * text: Pointer to the text to set.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9314 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
9315 void API dw_notebook_page_set_status_text(HWND handle, ULONG pageid, const char *text)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9316 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9317 /* Note supported here... do nothing */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9318 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9319
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9320 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9321 * Packs the specified box into the notebook page.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9322 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9323 * handle: Handle to the notebook to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9324 * pageid: Page ID in the notebook which is being packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9325 * page: Box handle to be packed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9326 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9327 void API dw_notebook_pack(HWND handle, ULONG pageid, HWND page)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9328 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9329 DWNotebook *notebook = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9330 DWNotebookPage *notepage = _notepage_from_id(notebook, pageid);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9331
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9332 if(notepage != nil)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9333 {
667
28727d9a835c Fix for a rather serious notebook layout bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 666
diff changeset
9334 HWND tmpbox = dw_box_new(DW_VERT, 0);
28727d9a835c Fix for a rather serious notebook layout bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 666
diff changeset
9335 DWBox *box = tmpbox;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9336
667
28727d9a835c Fix for a rather serious notebook layout bug.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 666
diff changeset
9337 dw_box_pack_start(tmpbox, page, 0, 0, TRUE, TRUE, 0);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9338 [notepage setView:box];
1862
9c7485b1921c Fixed object/signal/memory leak on Mac when destroying
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1861
diff changeset
9339 [box autorelease];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9340 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9341 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9342
1610
48a61abcd5bb Make sure source will build with Mac frameworks older than 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1607
diff changeset
9343 #ifndef NSWindowCollectionBehaviorFullScreenPrimary
48a61abcd5bb Make sure source will build with Mac frameworks older than 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1607
diff changeset
9344 #define NSWindowCollectionBehaviorFullScreenPrimary (1 << 7)
48a61abcd5bb Make sure source will build with Mac frameworks older than 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1607
diff changeset
9345 #endif
48a61abcd5bb Make sure source will build with Mac frameworks older than 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1607
diff changeset
9346
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9347 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9348 * Create a new Window Frame.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9349 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9350 * owner: The Owner's window handle or HWND_DESKTOP.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9351 * title: The Window title.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9352 * flStyle: Style flags, see the PM reference.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9353 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
9354 DW_FUNCTION_DEFINITION(dw_window_new, HWND, HWND hwndOwner, const char *title, ULONG flStyle)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
9355 DW_FUNCTION_ADD_PARAM3(hwndOwner, title, flStyle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
9356 DW_FUNCTION_RETURN(dw_window_new, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
9357 DW_FUNCTION_RESTORE_PARAM3(hwndOwner, HWND, title, char *, flStyle, ULONG)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
9358 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
9359 DW_FUNCTION_INIT;
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9360 NSRect frame = NSMakeRect(1,1,1,1);
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
9361 DWWindow *window = [[DWWindow alloc]
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9362 initWithContentRect:frame
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9363 styleMask:(flStyle)
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9364 backing:NSBackingStoreBuffered
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9365 defer:false];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9366
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9367 [window setTitle:[ NSString stringWithUTF8String:title ]];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9368
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9369 DWView *view = [[DWView alloc] init];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9370
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9371 [window setContentView:view];
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9372 [window setDelegate:view];
766
82cde14ec084 Enable recalculating the key view loop (keyboard focus list) automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 763
diff changeset
9373 [window setAutorecalculatesKeyViewLoop:YES];
944
cdb7a53e5515 Some motion notify changes... so it can handle events without the mouse button pressed on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 943
diff changeset
9374 [window setAcceptsMouseMovedEvents:YES];
1861
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
9375 [window setReleasedWhenClosed:YES];
c836603d3f14 Add dw_shutdown() function which does the same thing as dw_exit() ...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1853
diff changeset
9376 [view autorelease];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9377
1607
d7fcea7bfcf9 Add full screen support for resizable windows on Mac 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1593
diff changeset
9378 /* Enable full screen mode on resizeable windows */
d7fcea7bfcf9 Add full screen support for resizable windows on Mac 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1593
diff changeset
9379 if(flStyle & DW_FCF_SIZEBORDER)
d7fcea7bfcf9 Add full screen support for resizable windows on Mac 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1593
diff changeset
9380 {
d7fcea7bfcf9 Add full screen support for resizable windows on Mac 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1593
diff changeset
9381 [window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
d7fcea7bfcf9 Add full screen support for resizable windows on Mac 10.7.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1593
diff changeset
9382 }
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9383
684
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
9384 /* If it isn't a toplevel window... */
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
9385 if(hwndOwner)
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
9386 {
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
9387 id object = hwndOwner;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9388
684
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
9389 /* Check to see if the parent is an MDI window */
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
9390 if([object isMemberOfClass:[DWMDI class]])
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
9391 {
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
9392 /* Set the window level to be floating */
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
9393 [window setLevel:NSFloatingWindowLevel];
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
9394 [window setHidesOnDeactivate:YES];
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
9395 }
014b02436c1f Added MDI simulation code... the MDI "window" will just be a box for
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 683
diff changeset
9396 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
9397 DW_FUNCTION_RETURN_THIS(window);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9398 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9399
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9400 /*
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9401 * Call a function from the window (widget)'s context.
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9402 * Parameters:
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9403 * handle: Window handle of the widget.
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9404 * function: Function pointer to be called.
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9405 * data: Pointer to the data to be passed to the function.
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9406 */
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9407 void API dw_window_function(HWND handle, void *function, void *data)
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9408 {
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9409 void **params = calloc(2, sizeof(void *));
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
9410 NSValue *v;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
9411 DW_LOCAL_POOL_IN;
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
9412 v = [NSValue valueWithPointer:params];
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9413 params[0] = function;
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9414 params[1] = data;
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9415 [DWObj performSelectorOnMainThread:@selector(doWindowFunc:) withObject:v waitUntilDone:YES];
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9416 free(params);
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
9417 DW_LOCAL_POOL_OUT;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9418 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9419
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9420
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
9421 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9422 * Changes the appearance of the mouse pointer.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9423 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9424 * handle: Handle to widget for which to change.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9425 * cursortype: ID of the pointer you want.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9426 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9427 void API dw_window_set_pointer(HWND handle, int pointertype)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9428 {
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
9429 id object = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9430
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9431 if([ object isKindOfClass:[ NSView class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9432 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9433 NSView *view = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9434
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
9435 if(pointertype == DW_POINTER_DEFAULT)
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
9436 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
9437 [view discardCursorRects];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
9438 }
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
9439 else if(pointertype == DW_POINTER_ARROW)
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
9440 {
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
9441 NSRect rect = [view frame];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
9442 NSCursor *cursor = [NSCursor arrowCursor];
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9443
669
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
9444 [view addCursorRect:rect cursor:cursor];
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
9445 }
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
9446 /* No cursor for DW_POINTER_CLOCK? */
62aae18e7b7d Implemented most of the listbox functions for the actual listbox control...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 668
diff changeset
9447 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9448 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9449
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9450 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9451 * Makes the window visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9452 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9453 * handle: The window handle to make visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9454 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9455 int API dw_window_show(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9456 {
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9457 NSObject *object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9458
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
9459 if([ object isMemberOfClass:[ DWWindow class ] ])
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
9460 {
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
9461 DWWindow *window = handle;
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
9462 NSRect rect = [[window contentView] frame];
1795
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9463 id defaultitem = [window initialFirstResponder];
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
9464
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9465 if([window isMiniaturized])
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9466 {
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9467 [window deminiaturize:nil];
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9468 }
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9469 /* If we haven't been sized by a call.. */
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
9470 if(rect.size.width <= 1 || rect.size.height <= 1)
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
9471 {
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
9472 /* Determine the contents size */
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
9473 dw_window_set_size(handle, 0, 0);
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
9474 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9475 /* If the position was not set... generate a default
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9476 * default one in a similar pattern to SHELLPOSITION.
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9477 */
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
9478 if(![window shown])
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
9479 {
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9480 static int defaultx = 0, defaulty = 0;
1497
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
9481 int cx = dw_screen_width(), cy = dw_screen_height();
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9482 int maxx = cx / 4, maxy = cy / 4;
1497
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
9483 NSPoint point;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9484
1489
4c1c44af201a Added auto-positioning and auto-sizing code for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1478
diff changeset
9485 rect = [window frame];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9486
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9487 defaultx += 20;
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9488 defaulty += 20;
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9489 if(defaultx > maxx)
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9490 defaultx = 20;
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9491 if(defaulty > maxy)
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9492 defaulty = 20;
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9493
1497
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
9494 point.x = defaultx;
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
9495 /* Take into account menu bar and inverted Y */
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
9496 point.y = cy - defaulty - (int)rect.size.height - 22;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9497
1497
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
9498 [window setFrameOrigin:point];
1490
5393b56ec6d0 Autoposition code should only be run the first time on Mac, regardless of whether it was needed or not.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1489
diff changeset
9499 [window setShown:YES];
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9500 }
930
b6ee515cad8a When getting dw_window_show() called on an unresized window... trigger a relayout on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 929
diff changeset
9501 [[window contentView] showWindow];
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9502 [window makeKeyAndOrderFront:nil];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9503
1940
38a50e0820b1 Mac: Moved all 10.12 related constants to the top of the source, vastly reducing the number of #ifdefs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1939
diff changeset
9504 if(!([window styleMask] & DWWindowStyleMaskResizable))
1782
d056a50196a9 Attempted fix at Mac textured background repeat problems. Thanks to Christoph Sinai
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1779
diff changeset
9505 {
d056a50196a9 Attempted fix at Mac textured background repeat problems. Thanks to Christoph Sinai
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1779
diff changeset
9506 /* Fix incorrect repeat in displaying textured windows */
d056a50196a9 Attempted fix at Mac textured background repeat problems. Thanks to Christoph Sinai
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1779
diff changeset
9507 [window setAutorecalculatesContentBorderThickness:NO forEdge:NSMinYEdge];
d056a50196a9 Attempted fix at Mac textured background repeat problems. Thanks to Christoph Sinai
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1779
diff changeset
9508 [window setContentBorderThickness:0.0 forEdge:NSMinYEdge];
d056a50196a9 Attempted fix at Mac textured background repeat problems. Thanks to Christoph Sinai
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1779
diff changeset
9509 }
1795
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9510 if(defaultitem)
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9511 {
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9512 /* If there is a default item set, make it first responder */
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9513 [window makeFirstResponder:defaultitem];
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9514 }
735
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9515 }
b75be4860279 Possible fix for initial window creation with 0 size... not sure if the size I picked is good or not...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 734
diff changeset
9516 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9517 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9518
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9519 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9520 * Makes the window invisible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9521 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9522 * handle: The window handle to make visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9523 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9524 int API dw_window_hide(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9525 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9526 NSObject *object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9527
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9528 if([ object isKindOfClass:[ NSWindow class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9529 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9530 NSWindow *window = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9531
733
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
9532 [window orderOut:nil];
8d5e5b89725f Fixed the crashing issue with dw_color_choose() it now functions properly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 732
diff changeset
9533 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9534 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9535 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9536
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9537 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9538 * Sets the colors used by a specified window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9539 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9540 * handle: The window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9541 * fore: Foreground color in DW_RGB format or a default color index.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9542 * back: Background color in DW_RGB format or a default color index.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9543 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9544 int API dw_window_set_color(HWND handle, ULONG fore, ULONG back)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9545 {
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
9546 id object = handle;
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
9547 unsigned long _fore = _get_color(fore);
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
9548 unsigned long _back = _get_color(back);
811
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9549 NSColor *fg = NULL;
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9550 NSColor *bg = NULL;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
9551
811
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9552 /* Get the NSColor for non-default colors */
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9553 if(fore != DW_CLR_DEFAULT)
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9554 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9555 fg = [NSColor colorWithDeviceRed: DW_RED_VALUE(_fore)/255.0 green: DW_GREEN_VALUE(_fore)/255.0 blue: DW_BLUE_VALUE(_fore)/255.0 alpha: 1];
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9556 }
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9557 if(back != DW_CLR_DEFAULT)
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9558 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9559 bg = [NSColor colorWithDeviceRed: DW_RED_VALUE(_back)/255.0 green: DW_GREEN_VALUE(_back)/255.0 blue: DW_BLUE_VALUE(_back)/255.0 alpha: 1];
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9560 }
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9561
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9562 /* Get the textfield from the spinbutton */
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9563 if([object isMemberOfClass:[DWSpinButton class]])
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9564 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9565 object = [object textfield];
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9566 }
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9567 /* Get the cell on classes using NSCell */
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9568 if([object isKindOfClass:[NSTextField class]])
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9569 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9570 id cell = [object cell];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
9571
1849
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
9572 [object setTextColor:(fg ? fg : [NSColor controlTextColor])];
1848
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
9573 [cell setTextColor:(fg ? fg : [NSColor controlTextColor])];
811
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9574 }
1849
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
9575 if([object isMemberOfClass:[DWButton class]])
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
9576 {
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
9577 [object setTextColor:(fg ? fg : [NSColor controlTextColor])];
b5e1ccc76e58 Added code to set the foreground color on Mac buttons...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1848
diff changeset
9578 }
811
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9579 if([object isKindOfClass:[NSTextField class]] || [object isKindOfClass:[NSButton class]])
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9580 {
50ed3e92215b Changes for dw_window_set_color() so it works on pretty much any control we support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 810
diff changeset
9581 id cell = [object cell];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
9582
1848
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
9583 [cell setBackgroundColor:(bg ? bg : [NSColor controlColor])];
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
9584 }
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
9585 else if([object isMemberOfClass:[DWBox class]])
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
9586 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9587 DWBox *box = object;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9588
1848
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
9589 [box setColor:_back];
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
9590 }
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
9591 else if([object isKindOfClass:[NSTableView class]])
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
9592 {
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
9593 DWContainer *cont = handle;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
9594
1848
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
9595 [cont setBackgroundColor:(bg ? bg : [NSColor controlBackgroundColor])];
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
9596 [cont setForegroundColor:(fg ? fg : [NSColor controlTextColor])];
810
746cdd753e7a Added coloring support for the Container/Tree/Listbox controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 809
diff changeset
9597 }
1543
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
9598 else if([object isMemberOfClass:[DWMLE class]])
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
9599 {
b86a04751ea0 Refactor MLE code on Mac to be more like the Container and Tree code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1538
diff changeset
9600 DWMLE *mle = handle;
1848
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
9601 [mle setBackgroundColor:(bg ? bg : [NSColor controlBackgroundColor])];
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
9602 NSTextStorage *ts = [mle textStorage];
68f923e57542 Attempt at resetting default colors with DW_CLR_DEFAULT on Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1843
diff changeset
9603 [ts setForegroundColor:(fg ? fg : [NSColor controlTextColor])];
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
9604 }
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
9605 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9606 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9607
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9608 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9609 * Sets the font used by a specified window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9610 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9611 * handle: The window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9612 * border: Size of the window border in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9613 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9614 int API dw_window_set_border(HWND handle, int border)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9615 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
9616 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9617 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9618
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9619 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9620 * Sets the style of a given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9621 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9622 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9623 * width: New width in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9624 * height: New height in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9625 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9626 void API dw_window_set_style(HWND handle, ULONG style, ULONG mask)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9627 {
1778
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
9628 id object = _text_handle(handle);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9629
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
9630 if([object isMemberOfClass:[DWWindow class]])
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
9631 {
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
9632 DWWindow *window = object;
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
9633 SEL sssm = NSSelectorFromString(@"setStyleMask");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9634
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
9635 if([window respondsToSelector:sssm])
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
9636 {
1993
e643d280edae Mac: Fix compilation with the Catalina 10.15 SDK.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1986
diff changeset
9637 DWIMP issm = (DWIMP)[window methodForSelector:sssm];
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
9638 int currentstyle = (int)[window styleMask];
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
9639 int tmp;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9640
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
9641 tmp = currentstyle | (int)mask;
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
9642 tmp ^= mask;
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
9643 tmp |= style;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9644
1773
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
9645 issm(window, sssm, tmp);
da7786b8573f Check if classes respond to selectors on Mac for new, removed and deprecated methods to avoid compiler warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1772
diff changeset
9646 }
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
9647 }
740
bb3b2d804f0e Working on fonts some more.... setting a default label font that is smaller.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 739
diff changeset
9648 else if([object isKindOfClass:[NSTextField class]])
bb3b2d804f0e Working on fonts some more.... setting a default label font that is smaller.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 739
diff changeset
9649 {
bb3b2d804f0e Working on fonts some more.... setting a default label font that is smaller.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 739
diff changeset
9650 NSTextField *tf = object;
1778
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
9651 DWTextFieldCell *cell = [tf cell];
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
9652
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
9653 [cell setAlignment:(style & 0xF)];
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
9654 if(mask & DW_DT_VCENTER && [cell isMemberOfClass:[DWTextFieldCell class]])
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
9655 {
e71ab68198ce Minor cleanups for the Mac status text changes for 10.8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1776
diff changeset
9656 [cell setVCenter:(style & DW_DT_VCENTER ? YES : NO)];
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
9657 }
1788
9d499b162fe1 Discovered a breakage in OS/2 functionality when building
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1786
diff changeset
9658 if(mask & DW_DT_WORDBREAK && [cell isMemberOfClass:[DWTextFieldCell class]])
9d499b162fe1 Discovered a breakage in OS/2 functionality when building
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1786
diff changeset
9659 {
9d499b162fe1 Discovered a breakage in OS/2 functionality when building
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1786
diff changeset
9660 [cell setWraps:(style & DW_DT_WORDBREAK ? YES : NO)];
9d499b162fe1 Discovered a breakage in OS/2 functionality when building
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1786
diff changeset
9661 }
740
bb3b2d804f0e Working on fonts some more.... setting a default label font that is smaller.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 739
diff changeset
9662 }
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
9663 else if([object isMemberOfClass:[NSTextView class]])
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
9664 {
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
9665 NSTextView *tv = handle;
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
9666 [tv setAlignment:(style & mask)];
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
9667 }
763
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
9668 else if([object isMemberOfClass:[DWButton class]])
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
9669 {
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
9670 DWButton *button = handle;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
9671
763
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
9672 if(mask & DW_BS_NOBORDER)
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
9673 {
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
9674 if(style & DW_BS_NOBORDER)
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
9675 [button setBordered:NO];
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
9676 else
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
9677 [button setBordered:YES];
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
9678 }
2cace4e6e69a Added DW_BS_NOBORDER style which can be set on buttons with dw_window_set_style() to make them flat.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 762
diff changeset
9679 }
1314
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9680 else if([object isMemberOfClass:[DWMenuItem class]])
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9681 {
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9682 if(mask & (DW_MIS_CHECKED | DW_MIS_UNCHECKED))
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9683 {
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9684 if(style & DW_MIS_CHECKED)
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
9685 [object setState:DWControlStateValueOn];
1314
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9686 else if(style & DW_MIS_UNCHECKED)
1936
ebde5ef666a6 Fixes many deprecation warnings building for MacOS 10.14.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1935
diff changeset
9687 [object setState:DWControlStateValueOff];
1314
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9688 }
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9689 if(mask & (DW_MIS_ENABLED | DW_MIS_DISABLED))
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9690 {
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9691 if(style & DW_MIS_ENABLED)
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9692 [object setEnabled:YES];
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9693 else if(style & DW_MIS_DISABLED)
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9694 [object setEnabled:NO];
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9695 }
c969db49606e Initial commit allowing dw_window_set_style() to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1313
diff changeset
9696 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9697 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9698
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9699 /*
1795
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9700 * Sets the current focus item for a window/dialog.
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9701 * Parameters:
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9702 * handle: Handle to the dialog item to be focused.
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9703 * Remarks:
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9704 * This is for use after showing the window/dialog.
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9705 */
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9706 void API dw_window_set_focus(HWND handle)
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9707 {
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9708 id object = handle;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9709
1795
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9710 [[object window] makeFirstResponder:object];
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9711 }
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9712
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9713 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9714 * Sets the default focus item for a window/dialog.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9715 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9716 * window: Toplevel window or dialog.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9717 * defaultitem: Handle to the dialog item to be default.
1795
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9718 * Remarks:
9304241b7b33 Added new dw_window_set_focus() function and attempted to fix...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1792
diff changeset
9719 * This is for use before showing the window/dialog.
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9720 */
766
82cde14ec084 Enable recalculating the key view loop (keyboard focus list) automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 763
diff changeset
9721 void API dw_window_default(HWND handle, HWND defaultitem)
82cde14ec084 Enable recalculating the key view loop (keyboard focus list) automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 763
diff changeset
9722 {
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
9723 DWWindow *window = handle;
872
13debcad9757 Another test fix at reported crash in dw_window_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 867
diff changeset
9724 id object = defaultitem;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
9725
872
13debcad9757 Another test fix at reported crash in dw_window_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 867
diff changeset
9726 if([window isKindOfClass:[NSWindow class]] && [object isKindOfClass:[NSControl class]])
864
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
9727 {
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
9728 [window setInitialFirstResponder:defaultitem];
ca01c7d95b80 Added some sanity checks for a couple of problem functions and default optimized container column width to 16 for image columns.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 860
diff changeset
9729 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9730 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9731
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9732 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9733 * Sets window to click the default dialog item when an ENTER is pressed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9734 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9735 * window: Window (widget) to look for the ENTER press.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9736 * next: Window (widget) to move to next (or click)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9737 */
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9738 void API dw_window_click_default(HWND handle, HWND next)
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9739 {
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9740 id object = handle;
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9741 id control = next;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
9742
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
9743 if([object isMemberOfClass:[DWWindow class]])
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
9744 {
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
9745 if([control isMemberOfClass:[DWButton class]])
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
9746 {
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
9747 NSWindow *window = object;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
9748
1935
994e2360dbb2 Fix crash on macos with clicking a default button set with dw_windows_click_default
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1934
diff changeset
9749 [window setDefaultButtonCell:[control cell]];
792
fc6a626a96cc Initial groupbox support. Sizing of the content frame is not quite right yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 768
diff changeset
9750 }
768
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9751 }
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9752 else
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9753 {
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9754 if([control isMemberOfClass:[DWSpinButton class]])
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9755 {
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9756 control = [control textfield];
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9757 }
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9758 else if([control isMemberOfClass:[DWComboBox class]])
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9759 {
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9760 /* TODO: Figure out why the combobox can't be
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9761 * focused using makeFirstResponder method.
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9762 */
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9763 control = [control textfield];
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9764 }
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9765 [object setClickDefault:control];
7a236fdcf4ba Fixed a typo in VK_RETURN and initial implementation of dw_window_click_default().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 767
diff changeset
9766 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9767 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9768
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9769 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9770 * Captures the mouse input to this window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9771 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9772 * handle: Handle to receive mouse input.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9773 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9774 void API dw_window_capture(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9775 {
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
9776 /* Don't do anything for now */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9777 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9778
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9779 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9780 * Releases previous mouse capture.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9781 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9782 void API dw_window_release(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9783 {
949
451c71b7fdb1 Changed dw_window_capture() an dw_window_release() because the mouseDragged method does this already.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 948
diff changeset
9784 /* Don't do anything for now */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9785 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9786
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9787 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9788 * Changes a window's parent to newparent.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9789 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9790 * handle: The window handle to destroy.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9791 * newparent: The window's new parent window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9792 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9793 void API dw_window_reparent(HWND handle, HWND newparent)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9794 {
686
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9795 id object = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9796
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
9797 if([object isMemberOfClass:[DWWindow class]])
686
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9798 {
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9799 /* We can't actually reparent on MacOS but if the
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9800 * new parent is an MDI window, change to be a
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9801 * floating window... otherwise set it to normal.
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9802 */
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9803 NSWindow *window = handle;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9804
686
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9805 /* If it isn't a toplevel window... */
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9806 if(newparent)
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9807 {
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9808 object = newparent;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9809
686
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9810 /* Check to see if the parent is an MDI window */
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9811 if([object isMemberOfClass:[DWMDI class]])
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9812 {
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9813 /* Set the window level to be floating */
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9814 [window setLevel:NSFloatingWindowLevel];
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9815 [window setHidesOnDeactivate:YES];
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9816 return;
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9817 }
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9818 }
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9819 /* Set the window back to a normal window */
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9820 [window setLevel:NSNormalWindowLevel];
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9821 [window setHidesOnDeactivate:NO];
218d676baf7f Implemented dw_window_reparent using the method used for MDI simulation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 685
diff changeset
9822 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9823 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9824
1051
6919854298fd Added dw_font_choose() on Windows for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1050
diff changeset
9825 /* Allows the user to choose a font using the system's font chooser dialog.
6919854298fd Added dw_font_choose() on Windows for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1050
diff changeset
9826 * Parameters:
6919854298fd Added dw_font_choose() on Windows for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1050
diff changeset
9827 * currfont: current font
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9828 * Returns:
1051
6919854298fd Added dw_font_choose() on Windows for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1050
diff changeset
9829 * A malloced buffer with the selected font or NULL on error.
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9830 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
9831 char * API dw_font_choose(const char *currfont)
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9832 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9833 /* Create the Color Chooser Dialog class. */
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9834 static DWFontChoose *fontDlg = nil;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9835 static NSFontManager *fontManager = nil;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9836 DWDialog *dialog;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9837 NSFont *font = nil;
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
9838
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9839 if(currfont)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9840 font = _dw_font_by_name(currfont);
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
9841
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9842 if(fontDlg)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9843 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9844 dialog = [fontDlg dialog];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9845 /* If someone is already waiting just return */
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9846 if(dialog)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9847 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9848 return NULL;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9849 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9850 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9851 else
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9852 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9853 [NSFontManager setFontPanelFactory:[DWFontChoose class]];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9854 fontManager = [NSFontManager sharedFontManager];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9855 fontDlg = (DWFontChoose *)[fontManager fontPanel:YES];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9856 }
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
9857
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9858 dialog = dw_dialog_new(fontDlg);
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9859 if(font)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9860 [fontManager setSelectedFont:font isMultiple:NO];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9861 else
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9862 [fontManager setSelectedFont:[NSFont fontWithName:@"Helvetica" size:9.0] isMultiple:NO];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9863 [fontDlg setDialog:dialog];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9864 [fontDlg setFontManager:fontManager];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9865 [fontManager orderFrontFontPanel:fontManager];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9866
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
9867
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9868 /* Wait for them to pick a color */
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9869 font = (NSFont *)dw_dialog_wait(dialog);
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9870 if(font)
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9871 {
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9872 NSString *fontname = [font displayName];
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9873 NSString *output = [NSString stringWithFormat:@"%d.%s", (int)[font pointSize], [fontname UTF8String]];
1068
efaa9ceeb253 Removed test for class member for itemdata in dw_tree_item_get_data()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1067
diff changeset
9874 return strdup([output UTF8String]);
1050
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9875 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9876 return NULL;
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9877 }
48f43c975533 Added dw_font_choose() on the Mac for 2.1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1048
diff changeset
9878
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9879 /* Internal function to return a pointer to an item struct
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9880 * with information about the packing information regarding object.
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9881 */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9882 Item *_box_item(id object)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9883 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9884 /* Find the item within the box it is packed into */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9885 if([object isKindOfClass:[DWBox class]] || [object isKindOfClass:[DWGroupBox class]] || [object isKindOfClass:[NSControl class]])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9886 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9887 DWBox *parent = (DWBox *)[object superview];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9888
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9889 /* Some controls are embedded in scrollviews...
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9890 * so get the parent of the scrollview in that case.
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9891 */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9892 if([object isKindOfClass:[NSTableView class]] && [parent isMemberOfClass:[NSClipView class]])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9893 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9894 object = [parent superview];
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9895 parent = (DWBox *)[object superview];
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9896 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9897
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9898 if([parent isKindOfClass:[DWBox class]] || [parent isKindOfClass:[DWGroupBox class]])
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9899 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9900 Box *thisbox = [parent box];
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9901 Item *thisitem = thisbox->items;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9902 int z;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9903
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9904 for(z=0;z<thisbox->count;z++)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9905 {
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9906 if(thisitem[z].hwnd == object)
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9907 return &thisitem[z];
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9908 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9909 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9910 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9911 return NULL;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9912 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9913
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9914 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9915 * Sets the font used by a specified window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9916 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9917 * handle: The window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9918 * fontname: Name and size of the font in the form "size.fontname"
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9919 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
9920 int API dw_window_set_font(HWND handle, const char *fontname)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9921 {
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
9922 NSFont *font = _dw_font_by_name(fontname);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9923
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
9924 if(font)
740
bb3b2d804f0e Working on fonts some more.... setting a default label font that is smaller.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 739
diff changeset
9925 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
9926 id object = _text_handle(handle);
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
9927 if([object window])
673
6d0f0dc7ff7c Some minor font fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 672
diff changeset
9928 {
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
9929 [object lockFocus];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
9930 [font set];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
9931 [object unlockFocus];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
9932 }
1040
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9933 if([object isMemberOfClass:[DWGroupBox class]])
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9934 {
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9935 [object setTitleFont:font];
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9936 }
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9937 else if([object isKindOfClass:[NSControl class]])
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
9938 {
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
9939 [object setFont:font];
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
9940 [[object cell] setFont:font];
673
6d0f0dc7ff7c Some minor font fixes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 672
diff changeset
9941 }
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
9942 else if([object isMemberOfClass:[DWRender class]])
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
9943 {
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
9944 DWRender *render = object;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
9945
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
9946 [render setFont:font];
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
9947 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9948 else
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9949 return DW_ERROR_UNKNOWN;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9950 /* If we changed the text... */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9951 Item *item = _box_item(handle);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9952
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9953 /* Check to see if any of the sizes need to be recalculated */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9954 if(item && (item->origwidth == -1 || item->origheight == -1))
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
9955 {
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
9956 _control_size(handle, item->origwidth == -1 ? &item->width : NULL, item->origheight == -1 ? &item->height : NULL);
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
9957 /* Queue a redraw on the top-level window */
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
9958 _dw_redraw([object window], TRUE);
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
9959 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9960 return DW_ERROR_NONE;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9961 }
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
9962 return DW_ERROR_UNKNOWN;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9963 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9964
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9965 /*
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9966 * Returns the current font for the specified window
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9967 * Parameters:
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9968 * handle: The window handle from which to obtain the font.
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9969 */
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9970 char * API dw_window_get_font(HWND handle)
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9971 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
9972 id object = _text_handle(handle);
1040
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9973 NSFont *font = nil;
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9974
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9975 if([object isMemberOfClass:[DWGroupBox class]])
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9976 {
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9977 font = [object titleFont];
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9978 }
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9979 else if([object isKindOfClass:[NSControl class]] || [object isMemberOfClass:[DWRender class]])
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9980 {
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9981 font = [object font];
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9982 }
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9983 if(font)
7ea8a428e0cc Attempt at adding support for groupboxes to dw_window_set/get_font() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1027
diff changeset
9984 {
1041
6a57bf20d8f9 Return displayName property instead of fontName property in dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1040
diff changeset
9985 NSString *fontname = [font displayName];
739
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
9986 NSString *output = [NSString stringWithFormat:@"%d.%s", (int)[font pointSize], [fontname UTF8String]];
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
9987 return strdup([output UTF8String]);
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
9988 }
a0aec9a56914 Font and color improvements... including implementing dw_window_set_font().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 738
diff changeset
9989 return NULL;
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9990 }
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9991
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
9992 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9993 * Destroys a window and all of it's children.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9994 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9995 * handle: The window handle to destroy.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9996 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
9997 DW_FUNCTION_DEFINITION(dw_window_destroy, int, HWND handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
9998 DW_FUNCTION_ADD_PARAM1(handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
9999 DW_FUNCTION_RETURN(dw_window_destroy, int)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10000 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10001 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10002 DW_FUNCTION_INIT;
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
10003 DW_LOCAL_POOL_IN;
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
10004 id object = handle;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10005 int retval = 0;
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
10006
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
10007 /* Handle destroying a top-level window */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10008 if([ object isKindOfClass:[ NSWindow class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10009 {
1313
9f12bc79924b Autorelease fixes for Mac allowing the objects to dealloc when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1312
diff changeset
10010 DWWindow *window = handle;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10011 [window close];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10012 }
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
10013 /* Handle removing menu items from menus */
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
10014 else if([ object isKindOfClass:[NSMenuItem class]])
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
10015 {
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
10016 NSMenu *menu = [object menu];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10017
1376
52bbb1acce61 Don't release the menu item when destroying it on Mac... causes crashes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1375
diff changeset
10018 [menu removeItem:object];
1375
611893219ba9 Implemented dw_menu_delete_item() on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1340
diff changeset
10019 }
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
10020 /* Handle destroying a control or box */
1664
4ec0bce77f70 Fix dw_window_destroy() failing on splitbars and possibly other widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1654
diff changeset
10021 else if([object isKindOfClass:[NSView class]] || [object isKindOfClass:[NSControl class]])
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
10022 {
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
10023 DWBox *parent = (DWBox *)[object superview];
983
6abf763838c6 Allow checboxes and other "buttons" to have a blank title instead of the default "Button"
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 982
diff changeset
10024
6abf763838c6 Allow checboxes and other "buttons" to have a blank title instead of the default "Button"
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 982
diff changeset
10025 /* Some controls are embedded in scrollviews...
979
f6234f870e81 Attempt at fixing dw_window_destroy() for controls that are embedded in scrollviews on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 957
diff changeset
10026 * so get the parent of the scrollview in that case.
f6234f870e81 Attempt at fixing dw_window_destroy() for controls that are embedded in scrollviews on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 957
diff changeset
10027 */
1549
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
10028 if(([object isKindOfClass:[NSTableView class]] || [object isMemberOfClass:[DWMLE class]])
ca6be9c48fff Implemented auto-sizing containers on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1543
diff changeset
10029 && [parent isMemberOfClass:[NSClipView class]])
982
a4425bb24b77 Fixed dw_window_destroy() on container and trees... there are multiple parts to scrollviews aparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 981
diff changeset
10030 {
a4425bb24b77 Fixed dw_window_destroy() on container and trees... there are multiple parts to scrollviews aparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 981
diff changeset
10031 object = [parent superview];
980
94dde9b3dfc0 Ok so we need to set the object to be the right value in this case so it gets removed from the proper view on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 979
diff changeset
10032 parent = (DWBox *)[object superview];
979
f6234f870e81 Attempt at fixing dw_window_destroy() for controls that are embedded in scrollviews on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 957
diff changeset
10033 }
940
b5ae9cf15f68 Fix for returning wrong extension in _dw_get_image_extension; only worked for .ico files
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 939
diff changeset
10034
1099
d1cea9be1436 Fixed dw_window_destroy() with groupboxes on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1098
diff changeset
10035 if([parent isKindOfClass:[DWBox class]] || [parent isKindOfClass:[DWGroupBox class]])
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
10036 {
1671
d5f39d32c4da Initial implementation of dw_box_remove() and dw_box_remove_at_index() for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1664
diff changeset
10037 id window = [object window];
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
10038 Box *thisbox = [parent box];
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
10039 int z, index = -1;
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10040 Item *tmpitem = NULL, *thisitem = thisbox->items;
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10041
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10042 if(!thisitem)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10043 thisbox->count = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10044
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
10045 for(z=0;z<thisbox->count;z++)
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
10046 {
982
a4425bb24b77 Fixed dw_window_destroy() on container and trees... there are multiple parts to scrollviews aparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 981
diff changeset
10047 if(thisitem[z].hwnd == object)
937
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
10048 index = z;
83aceaaef6ed Added initial support for allowing dW_window_destroy() to remove an item from its containing box on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 936
diff changeset
10049 }
940
b5ae9cf15f68 Fix for returning wrong extension in _dw_get_image_extension; only worked for .ico files
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 939
diff changeset
10050
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10051 if(index != -1)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10052 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10053 [object removeFromSuperview];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10054
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10055 if(thisbox->count > 1)
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10056 {
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10057 tmpitem = calloc(sizeof(Item), (thisbox->count-1));
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10058
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10059 /* Copy all but the current entry to the new list */
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10060 for(z=0;z<index;z++)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10061 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10062 tmpitem[z] = thisitem[z];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10063 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10064 for(z=index+1;z<thisbox->count;z++)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10065 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10066 tmpitem[z-1] = thisitem[z];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10067 }
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
10068 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10069
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10070 thisbox->items = tmpitem;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10071 if(thisitem)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10072 free(thisitem);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10073 if(tmpitem)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10074 thisbox->count--;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10075 else
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10076 thisbox->count = 0;
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10077
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10078 /* Queue a redraw on the top-level window */
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10079 _dw_redraw(window, TRUE);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10080 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10081 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10082 }
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
10083 DW_LOCAL_POOL_OUT;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10084 DW_FUNCTION_RETURN_THIS(retval);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10085 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10086
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10087 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10088 * Gets the text used for a given window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10089 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10090 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10091 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10092 * text: The text associsated with a given window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10093 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10094 DW_FUNCTION_DEFINITION(dw_window_get_text, char *, HWND handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10095 DW_FUNCTION_ADD_PARAM1(handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10096 DW_FUNCTION_RETURN(dw_window_get_text, char *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10097 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10098 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10099 DW_FUNCTION_INIT;
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
10100 id object = _text_handle(handle);
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10101 char *retval = NULL;
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
10102
808
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
10103 if([ object isKindOfClass:[ NSWindow class ] ] || [ object isKindOfClass:[ NSButton class ] ])
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
10104 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
10105 id window = object;
808
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
10106 NSString *nsstr = [ window title];
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
10107
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10108 retval = strdup([ nsstr UTF8String ]);
808
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
10109 }
c0641a6d4258 Similar fix for dw_window_get_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 807
diff changeset
10110 else if([ object isKindOfClass:[ NSControl class ] ])
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10111 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
10112 NSControl *control = object;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10113 NSString *nsstr = [ control stringValue];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10114
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10115 retval = strdup([ nsstr UTF8String ]);
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10116 }
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10117 DW_FUNCTION_RETURN_THIS(retval);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10118 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10119
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10120 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10121 * Sets the text used for a given window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10122 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10123 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10124 * text: The text associsated with a given window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10125 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
10126 DW_FUNCTION_DEFINITION(dw_window_set_text, void, HWND handle, const char *text)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10127 DW_FUNCTION_ADD_PARAM2(handle, text)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10128 DW_FUNCTION_NO_RETURN(dw_window_set_text)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10129 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, text, char *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10130 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10131 DW_FUNCTION_INIT;
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
10132 id object = _text_handle(handle);
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
10133
807
f7016a38bedd Fix for dw_window_set_text() on buttons not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 806
diff changeset
10134 if([ object isKindOfClass:[ NSWindow class ] ] || [ object isKindOfClass:[ NSButton class ] ])
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
10135 [object setTitle:[ NSString stringWithUTF8String:text ]];
807
f7016a38bedd Fix for dw_window_set_text() on buttons not working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 806
diff changeset
10136 else if([ object isKindOfClass:[ NSControl class ] ])
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10137 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
10138 NSControl *control = object;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10139 [control setStringValue:[ NSString stringWithUTF8String:text ]];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10140 }
953
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
10141 else if([object isMemberOfClass:[DWGroupBox class]])
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
10142 {
1772
5e16351b01d2 Experimental change to use NSBox to draw border of status text widgets on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1771
diff changeset
10143 DWGroupBox *groupbox = object;
953
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
10144 [groupbox setTitle:[NSString stringWithUTF8String:text]];
2dfc06afc7d3 Support dw_window_set_text() for groupboxes
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 952
diff changeset
10145 }
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
10146 else
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
10147 return;
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
10148 /* If we changed the text... */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
10149 Item *item = _box_item(handle);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10150
1410
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
10151 /* Check to see if any of the sizes need to be recalculated */
c607fd86e5c2 Initial code on the Mac to automatically calculate widget required sizes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1400
diff changeset
10152 if(item && (item->origwidth == -1 || item->origheight == -1))
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
10153 {
1792
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
10154 int newwidth, newheight;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10155
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10156 _control_size(handle, &newwidth, &newheight);
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10157
1792
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
10158 /* Only update the item and redraw the window if it changed */
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
10159 if((item->origwidth == -1 && item->width != newwidth) ||
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
10160 (item->origheight == -1 && item->height != newheight))
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
10161 {
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
10162 if(item->origwidth == -1)
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
10163 item->width = newwidth;
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
10164 if(item->origheight == -1)
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
10165 item->height = newheight;
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
10166 /* Queue a redraw on the top-level window */
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
10167 _dw_redraw([object window], TRUE);
b0bdec1b820c Similar fixes to the Mac one on OS/2 and Windows....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1791
diff changeset
10168 }
1422
131bedf41332 Initial support for automatic redrawing on Windows and ranged/bitmap auto-calculation support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1421
diff changeset
10169 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10170 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10171 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10172
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10173 /*
1389
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
10174 * Sets the text used for a given window's floating bubble help.
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
10175 * Parameters:
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
10176 * handle: Handle to the window (widget).
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
10177 * bubbletext: The text in the floating bubble tooltip.
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
10178 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
10179 DW_FUNCTION_DEFINITION(dw_window_set_tooltip, void, HWND handle, const char *bubbletext)
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10180 DW_FUNCTION_ADD_PARAM2(handle, bubbletext)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10181 DW_FUNCTION_NO_RETURN(dw_window_set_tooltip)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10182 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, bubbletext, char *)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10183 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10184 DW_FUNCTION_INIT;
1389
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
10185 id object = handle;
1400
ccd383e11ff8 Allow removing of tooltips by passing NULL or "" and prevent double tooltips on some platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1396
diff changeset
10186 if(bubbletext && *bubbletext)
ccd383e11ff8 Allow removing of tooltips by passing NULL or "" and prevent double tooltips on some platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1396
diff changeset
10187 [object setToolTip:[NSString stringWithUTF8String:bubbletext]];
ccd383e11ff8 Allow removing of tooltips by passing NULL or "" and prevent double tooltips on some platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1396
diff changeset
10188 else
ccd383e11ff8 Allow removing of tooltips by passing NULL or "" and prevent double tooltips on some platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1396
diff changeset
10189 [object setToolTip:nil];
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10190 DW_FUNCTION_RETURN_NOTHING;
1389
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
10191 }
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
10192
0512fbb08abf Added dw_window_set_tooltip() for adding bubble help to most controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1385
diff changeset
10193 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10194 * Disables given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10195 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10196 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10197 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10198 DW_FUNCTION_DEFINITION(dw_window_disable, void, HWND handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10199 DW_FUNCTION_ADD_PARAM1(handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10200 DW_FUNCTION_NO_RETURN(dw_window_disable)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10201 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10202 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10203 DW_FUNCTION_INIT;
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10204 id object = handle;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
10205
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10206 if([object isMemberOfClass:[NSScrollView class]])
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10207 {
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10208 NSScrollView *sv = handle;
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10209 object = [sv documentView];
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10210 }
1277
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
10211 if([object isKindOfClass:[NSControl class]] || [object isKindOfClass:[NSMenuItem class]])
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
10212 {
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
10213 [object setEnabled:NO];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10214 }
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10215 if([object isKindOfClass:[NSTextView class]])
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10216 {
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10217 NSTextView *mle = object;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
10218
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10219 [mle setEditable:NO];
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10220 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10221 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10222 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10223
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10224 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10225 * Enables given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10226 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10227 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10228 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10229 DW_FUNCTION_DEFINITION(dw_window_enable, void, HWND handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10230 DW_FUNCTION_ADD_PARAM1(handle)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10231 DW_FUNCTION_NO_RETURN(dw_window_enable)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10232 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10233 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10234 DW_FUNCTION_INIT;
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10235 id object = handle;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
10236
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10237 if([object isMemberOfClass:[NSScrollView class]])
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10238 {
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10239 NSScrollView *sv = handle;
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10240 object = [sv documentView];
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10241 }
1277
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
10242 if([object isKindOfClass:[NSControl class]] || [object isKindOfClass:[NSMenuItem class]])
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
10243 {
107e38a29eeb Allow dw_window_enable/disable() to work on menu items on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1275
diff changeset
10244 [object setEnabled:YES];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10245 }
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10246 if([object isKindOfClass:[NSTextView class]])
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10247 {
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10248 NSTextView *mle = object;
938
cfcf66a90e8c Add support for different image file types in dw_*_from_file() functions.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 937
diff changeset
10249
800
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10250 [mle setEditable:YES];
e5a0a1a3ee03 dw_window_enable() and dw_window_disable() now function as expected on MLE controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 799
diff changeset
10251 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10252 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10253 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10254
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10255 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10256 * Sets the bitmap used for a given static window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10257 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10258 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10259 * id: An ID to be used to specify the icon,
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10260 * (pass 0 if you use the filename param)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10261 * filename: a path to a file (Bitmap on OS/2 or
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10262 * Windows and a pixmap on Unix, pass
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10263 * NULL if you use the id param)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10264 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
10265 void API dw_window_set_bitmap_from_data(HWND handle, unsigned long cid, const char *data, int len)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10266 {
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10267 id object = handle;
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
10268
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10269 if([ object isKindOfClass:[ NSImageView class ] ] || [ object isKindOfClass:[ NSButton class ]])
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10270 {
1719
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10271 if(data)
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10272 {
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10273 DW_LOCAL_POOL_IN;
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10274 NSData *thisdata = [NSData dataWithBytes:data length:len];
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10275 NSImage *pixmap = [[[NSImage alloc] initWithData:thisdata] autorelease];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10276
1719
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10277 if(pixmap)
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10278 {
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10279 [object setImage:pixmap];
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10280 }
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10281 /* If we changed the bitmap... */
1719
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10282 Item *item = _box_item(handle);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10283
1719
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10284 /* Check to see if any of the sizes need to be recalculated */
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10285 if(item && (item->origwidth == -1 || item->origheight == -1))
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10286 {
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10287 _control_size(handle, item->origwidth == -1 ? &item->width : NULL, item->origheight == -1 ? &item->height : NULL);
1719
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10288 /* Queue a redraw on the top-level window */
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10289 _dw_redraw([object window], TRUE);
1719
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10290 }
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10291 DW_LOCAL_POOL_OUT;
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10292 }
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10293 else
032c3388dda6 Fix dw_window_set_bitmap_from_data() not using the resource ID if data is NULL.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1713
diff changeset
10294 dw_window_set_bitmap(handle, cid, NULL);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10295 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10296 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10297
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10298 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10299 * Sets the bitmap used for a given static window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10300 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10301 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10302 * id: An ID to be used to specify the icon,
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10303 * (pass 0 if you use the filename param)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10304 * filename: a path to a file (Bitmap on OS/2 or
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10305 * Windows and a pixmap on Unix, pass
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10306 * NULL if you use the id param)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10307 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
10308 void API dw_window_set_bitmap(HWND handle, unsigned long resid, const char *filename)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10309 {
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10310 id object = handle;
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
10311 DW_LOCAL_POOL_IN;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10312
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10313 if([ object isKindOfClass:[ NSImageView class ] ] || [ object isKindOfClass:[ NSButton class ]])
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10314 {
745
d29fb0d5b291 Fixes for font handling on pixmaps... it needs to use the associated render control to get the fonts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 744
diff changeset
10315 NSImage *bitmap = nil;
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
10316
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
10317 if(filename)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
10318 {
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10319 char *ext = _dw_get_image_extension( filename );
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10320 NSString *nstr = [ NSString stringWithUTF8String:filename ];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
10321
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10322 bitmap = [[[NSImage alloc] initWithContentsOfFile:nstr] autorelease];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
10323
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10324 if(!bitmap && ext)
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10325 {
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10326 nstr = [nstr stringByAppendingString: [NSString stringWithUTF8String:ext]];
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10327 bitmap = [[[NSImage alloc] initWithContentsOfFile:nstr] autorelease];
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10328 }
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10329 }
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10330 if(!bitmap && resid > 0 && resid < 65536)
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
10331 {
1713
c836c6c33d8e Create an internal _dw_icon_load() which does not resize the image on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1712
diff changeset
10332 bitmap = _dw_icon_load(resid);
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
10333 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10334
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
10335 if(bitmap)
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
10336 {
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10337 [object setImage:bitmap];
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
10338
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10339 /* If we changed the bitmap... */
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10340 Item *item = _box_item(handle);
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
10341
1821
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10342 /* Check to see if any of the sizes need to be recalculated */
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10343 if(item && (item->origwidth == -1 || item->origheight == -1))
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10344 {
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10345 _control_size(handle, item->origwidth == -1 ? &item->width : NULL, item->origheight == -1 ? &item->height : NULL);
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10346 /* Queue a redraw on the top-level window */
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10347 _dw_redraw([object window], TRUE);
69f9aa1e1b1e Added bitmap button support to dw_window_set_bitmap() and added missing extention handling.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1819
diff changeset
10348 }
675
48f8efba898f Filled in most of the remaining MLE and container functions... the remaining few
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 674
diff changeset
10349 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10350 }
1580
a51397ea24bf Added local auto-release macros on Mac to allow us to prevent leaks
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1574
diff changeset
10351 DW_LOCAL_POOL_OUT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10352 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10353
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10354 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10355 * Sets the icon used for a given window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10356 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10357 * handle: Handle to the window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10358 * id: An ID to be used to specify the icon.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10359 */
672
388f2a48aaae Missed one function to typedef. Fixed errors in the test program and switched to using
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 671
diff changeset
10360 void API dw_window_set_icon(HWND handle, HICN icon)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10361 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10362 /* This isn't needed, it is loaded from the bundle */
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10363 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10364
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10365 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10366 * Gets the child window handle with specified ID.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10367 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10368 * handle: Handle to the parent window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10369 * id: Integer ID of the child.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10370 */
685
314a12dccd20 Cleanups for conflicts with "id" which is a keyword in Objective-C.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 684
diff changeset
10371 HWND API dw_window_from_id(HWND handle, int cid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10372 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10373 NSObject *object = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10374 NSView *view = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10375 if([ object isKindOfClass:[ NSWindow class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10376 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10377 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10378 view = [window contentView];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10379 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10380 return [view viewWithTag:cid];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10381 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10382
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10383 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10384 * Minimizes or Iconifies a top-level window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10385 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10386 * handle: The window handle to minimize.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10387 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10388 int API dw_window_minimize(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10389 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10390 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10391 [window miniaturize:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10392 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10393 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10394
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10395 /* Causes entire window to be invalidated and redrawn.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10396 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10397 * handle: Toplevel window handle to be redrawn.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10398 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10399 void API dw_window_redraw(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10400 {
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
10401 DWWindow *window = handle;
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
10402 [window setRedraw:YES];
941
18f194e1d71d dw_window_redraw() should relayout the window in addition to flushing the buffer on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 940
diff changeset
10403 [[window contentView] showWindow];
1941
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
10404 #ifndef BUILDING_FOR_MOJAVE
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10405 [window flushWindow];
1941
b498fb0360fc Mac: 10.14 seems to have drastically changed the drawing mechanism.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1940
diff changeset
10406 #endif
1101
d7eafaa054ab Added support for dw_window_redraw() causing splitbar panes to redraw without
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1100
diff changeset
10407 [window setRedraw:NO];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10408 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10409
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10410 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10411 * Makes the window topmost.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10412 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10413 * handle: The window handle to make topmost.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10414 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10415 int API dw_window_raise(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10416 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10417 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10418 [window orderFront:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10419 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10420 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10421
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10422 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10423 * Makes the window bottommost.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10424 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10425 * handle: The window handle to make bottommost.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10426 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10427 int API dw_window_lower(HWND handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10428 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10429 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10430 [window orderBack:nil];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10431 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10432 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10433
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10434 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10435 * Sets the size of a given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10436 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10437 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10438 * width: New width in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10439 * height: New height in pixels.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10440 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10441 DW_FUNCTION_DEFINITION(dw_window_set_size, void, HWND handle, ULONG width, ULONG height)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10442 DW_FUNCTION_ADD_PARAM3(handle, width, height)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10443 DW_FUNCTION_NO_RETURN(dw_window_set_size)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10444 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, width, ULONG, height, ULONG)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10445 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10446 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10447 NSObject *object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10448
1494
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10449 if([ object isMemberOfClass:[ DWWindow class ] ])
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10450 {
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10451 DWWindow *window = handle;
1438
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
10452 Box *thisbox;
1478
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
10453 NSRect content, frame = NSMakeRect(0, 0, width, height);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10454
1478
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
10455 /* Convert the external frame size to internal content size */
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
10456 content = [NSWindow contentRectForFrameRect:frame styleMask:[window styleMask]];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10457
1438
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
10458 /*
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
10459 * The following is an attempt to dynamically size a window based on the size of its
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
10460 * children before realization. Only applicable when width or height is less than one.
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
10461 */
1906
fac81560eb09 Fix a number of warning generated by the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1905
diff changeset
10462 if((width < 1 || height < 1) && (thisbox = (Box *)[[window contentView] box]))
1438
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
10463 {
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
10464 int depth = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10465
1438
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
10466 /* Calculate space requirements */
1446
0d4fdf646caf Fix clang integer conversion warning on 64bit Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1442
diff changeset
10467 _resize_box(thisbox, &depth, (int)width, (int)height, 1);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10468
1531
783a464afab2 Added window and box support to dw_window_get_preferred_size() on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1530
diff changeset
10469 /* Update components that need auto-sizing */
1478
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
10470 if(width < 1) content.size.width = thisbox->minwidth;
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
10471 if(height < 1) content.size.height = thisbox->minheight;
1438
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
10472 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10473
1438
bde7ebced556 Initial layout engine 2.0 for Windows and OS/2...Plus some updates for the Mac code...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1437
diff changeset
10474 /* Finally set the size */
1478
7216f4301364 Fix mixing frame and content sizes on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1474
diff changeset
10475 [window setContentSize:content.size];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10476 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10477 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10478 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10479
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10480 /*
1429
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1425
diff changeset
10481 * Gets the size the system thinks the widget should be.
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1425
diff changeset
10482 * Parameters:
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1425
diff changeset
10483 * handle: Window handle of the item to be back.
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1425
diff changeset
10484 * width: Width in pixels of the item or NULL if not needed.
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1425
diff changeset
10485 * height: Height in pixels of the item or NULL if not needed.
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1425
diff changeset
10486 */
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1425
diff changeset
10487 void API dw_window_get_preferred_size(HWND handle, int *width, int *height)
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1425
diff changeset
10488 {
1530
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10489 id object = handle;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10490
1530
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10491 if([object isMemberOfClass:[DWWindow class]])
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10492 {
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10493 Box *thisbox;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10494
1906
fac81560eb09 Fix a number of warning generated by the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1905
diff changeset
10495 if((thisbox = (Box *)[[object contentView] box]))
1530
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10496 {
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10497 int depth = 0;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10498 NSRect frame;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10499
1530
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10500 /* Calculate space requirements */
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10501 _resize_box(thisbox, &depth, 0, 0, 1);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10502
1531
783a464afab2 Added window and box support to dw_window_get_preferred_size() on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1530
diff changeset
10503 /* Figure out the border size */
1530
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10504 frame = [NSWindow frameRectForContentRect:NSMakeRect(0, 0, thisbox->minwidth, thisbox->minheight) styleMask:[object styleMask]];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10505
1531
783a464afab2 Added window and box support to dw_window_get_preferred_size() on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1530
diff changeset
10506 /* Return what was requested */
1530
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10507 if(width) *width = frame.size.width;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10508 if(height) *height = frame.size.height;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10509 }
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10510 }
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10511 else if([object isMemberOfClass:[DWBox class]])
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10512 {
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10513 Box *thisbox;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10514
1906
fac81560eb09 Fix a number of warning generated by the new
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1905
diff changeset
10515 if((thisbox = (Box *)[object box]))
1530
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10516 {
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10517 int depth = 0;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10518
1530
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10519 /* Calculate space requirements */
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10520 _resize_box(thisbox, &depth, 0, 0, 1);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10521
1531
783a464afab2 Added window and box support to dw_window_get_preferred_size() on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1530
diff changeset
10522 /* Return what was requested */
1530
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10523 if(width) *width = thisbox->minwidth;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10524 if(height) *height = thisbox->minheight;
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10525 }
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10526 }
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10527 else
eecfceaf581f On Mac allow dw_window_get_preferred_size() to work on windows and boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1529
diff changeset
10528 _control_size(handle, width, height);
1429
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1425
diff changeset
10529 }
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1425
diff changeset
10530
fbaec6e5df63 Added dw_window_get_preferred_size() which attempts to determine the size the system wants for the widget. This is useful when creating nice looking layouts.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1425
diff changeset
10531 /*
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10532 * Sets the gravity of a given window (widget).
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10533 * Gravity controls which corner of the screen and window the position is relative to.
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10534 * Parameters:
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10535 * handle: Window (widget) handle.
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10536 * horz: DW_GRAV_LEFT (default), DW_GRAV_RIGHT or DW_GRAV_CENTER.
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10537 * vert: DW_GRAV_TOP (default), DW_GRAV_BOTTOM or DW_GRAV_CENTER.
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10538 */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10539 void API dw_window_set_gravity(HWND handle, int horz, int vert)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10540 {
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10541 dw_window_set_data(handle, "_dw_grav_horz", DW_INT_TO_POINTER(horz));
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10542 dw_window_set_data(handle, "_dw_grav_vert", DW_INT_TO_POINTER(vert));
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10543 }
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10544
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10545 /* Convert the coordinates based on gravity */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10546 void _handle_gravity(HWND handle, long *x, long *y, unsigned long width, unsigned long height)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10547 {
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10548 int horz = DW_POINTER_TO_INT(dw_window_get_data(handle, "_dw_grav_horz"));
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10549 int vert = DW_POINTER_TO_INT(dw_window_get_data(handle, "_dw_grav_vert"));
1513
def1ca619ba2 Use the screen of the window when possible on Mac instead of the main screen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1502
diff changeset
10550 id object = handle;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10551
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10552 /* Do any gravity calculations */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10553 if(horz || (vert & 0xf) != DW_GRAV_BOTTOM)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10554 {
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10555 long newx = *x, newy = *y;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10556
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10557 /* Handle horizontal center gravity */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10558 if((horz & 0xf) == DW_GRAV_CENTER)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10559 newx += ((dw_screen_width() / 2) - (width / 2));
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10560 /* Handle right gravity */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10561 else if((horz & 0xf) == DW_GRAV_RIGHT)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10562 newx = dw_screen_width() - width - *x;
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10563 /* Handle vertical center gravity */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10564 if((vert & 0xf) == DW_GRAV_CENTER)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10565 newy += ((dw_screen_height() / 2) - (height / 2));
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10566 else if((vert & 0xf) == DW_GRAV_TOP)
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10567 newy = dw_screen_height() - height - *y;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10568
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10569 /* Save the new values */
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10570 *x = newx;
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10571 *y = newy;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10572 }
1492
1608c2a9c2b8 Initial attempt at gravity obstacles on Mac.... doesn't work was trying to debug
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1490
diff changeset
10573 /* Adjust the values to avoid Dock/Menubar if requested */
1494
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10574 if((horz | vert) & DW_GRAV_OBSTACLES)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10575 {
1513
def1ca619ba2 Use the screen of the window when possible on Mac instead of the main screen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1502
diff changeset
10576 NSRect visiblerect = [[object screen] visibleFrame];
def1ca619ba2 Use the screen of the window when possible on Mac instead of the main screen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1502
diff changeset
10577 NSRect totalrect = [[object screen] frame];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10578
1494
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10579 if(horz & DW_GRAV_OBSTACLES)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10580 {
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10581 if((horz & 0xf) == DW_GRAV_LEFT)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10582 *x += visiblerect.origin.x;
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10583 else if((horz & 0xf) == DW_GRAV_RIGHT)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10584 *x -= (totalrect.origin.x + totalrect.size.width) - (visiblerect.origin.x + visiblerect.size.width);
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10585 }
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10586 if(vert & DW_GRAV_OBSTACLES)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10587 {
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10588 if((vert & 0xf) == DW_GRAV_BOTTOM)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10589 *y += visiblerect.origin.y;
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10590 else if((vert & 0xf) == DW_GRAV_TOP)
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10591 *y -= (totalrect.origin.y + totalrect.size.height) - (visiblerect.origin.y + visiblerect.size.height);
cf960e266444 Fixes for gravity obstacles on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1492
diff changeset
10592 }
1492
1608c2a9c2b8 Initial attempt at gravity obstacles on Mac.... doesn't work was trying to debug
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1490
diff changeset
10593 }
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10594 }
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10595
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10596 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10597 * Sets the position of a given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10598 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10599 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10600 * x: X location from the bottom left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10601 * y: Y location from the bottom left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10602 */
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10603 DW_FUNCTION_DEFINITION(dw_window_set_pos, void, HWND handle, LONG x, LONG y)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10604 DW_FUNCTION_ADD_PARAM3(handle, x, y)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10605 DW_FUNCTION_NO_RETURN(dw_window_set_pos)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10606 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, x, LONG, y, LONG)
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10607 {
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10608 DW_FUNCTION_INIT;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10609 NSObject *object = handle;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10610
1497
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
10611 if([ object isMemberOfClass:[ DWWindow class ] ])
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
10612 {
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
10613 DWWindow *window = handle;
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10614 NSPoint point;
1498
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
10615 NSSize size = [[window contentView] frame].size;
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
10616
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
10617 /* Can't position an unsized window, so attempt to auto-size */
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
10618 if(size.width <= 1 || size.height <= 1)
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
10619 {
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
10620 /* Determine the contents size */
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
10621 dw_window_set_size(handle, 0, 0);
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
10622 }
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
10623
f8b4d6075cac Added auto-size support during dw_window_set_pos() on OS/2, Mac and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1497
diff changeset
10624 size = [window frame].size;
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10625 _handle_gravity(handle, &x, &y, (unsigned long)size.width, (unsigned long)size.height);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10626
1474
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10627 point.x = x;
cd3d7e341467 Initial implementation of dw_window_set_gravity() on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1457
diff changeset
10628 point.y = y;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10629
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10630 [window setFrameOrigin:point];
1497
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
10631 /* Position set manually... don't auto-position */
99a53823079f On Mac lets just use the shown flag and not worry about the actual window position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1494
diff changeset
10632 [window setShown:YES];
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10633 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
10634 DW_FUNCTION_RETURN_NOTHING;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10635 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10636
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10637 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10638 * Sets the position and size of a given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10639 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10640 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10641 * x: X location from the bottom left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10642 * y: Y location from the bottom left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10643 * width: Width of the widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10644 * height: Height of the widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10645 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10646 void API dw_window_set_pos_size(HWND handle, LONG x, LONG y, ULONG width, ULONG height)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10647 {
947
c9f6ba940453 On window sizes we need to flip the origin point on the frame too on the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 946
diff changeset
10648 dw_window_set_size(handle, width, height);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10649 dw_window_set_pos(handle, x, y);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10650 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10651
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10652 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10653 * Gets the position and size of a given window (widget).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10654 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10655 * handle: Window (widget) handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10656 * x: X location from the bottom left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10657 * y: Y location from the bottom left.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10658 * width: Width of the widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10659 * height: Height of the widget.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10660 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10661 void API dw_window_get_pos_size(HWND handle, LONG *x, LONG *y, ULONG *width, ULONG *height)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10662 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10663 NSObject *object = handle;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10664
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10665 if([ object isKindOfClass:[ NSWindow class ] ])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10666 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10667 NSWindow *window = handle;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10668 NSRect rect = [window frame];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10669 if(x)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10670 *x = rect.origin.x;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10671 if(y)
1513
def1ca619ba2 Use the screen of the window when possible on Mac instead of the main screen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1502
diff changeset
10672 *y = [[window screen] frame].size.height - rect.origin.y - rect.size.height;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10673 if(width)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10674 *width = rect.size.width;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10675 if(height)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10676 *height = rect.size.height;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10677 return;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10678 }
951
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10679 else if([ object isKindOfClass:[ NSControl class ] ])
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10680 {
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10681 NSControl *control = handle;
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10682 NSRect rect = [control frame];
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10683 if(x)
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10684 *x = rect.origin.x;
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10685 if(y)
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10686 *y = rect.origin.y;
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10687 if(width)
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10688 *width = rect.size.width;
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10689 if(height)
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10690 *height = rect.size.height;
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10691 return;
7193401d139a Added support for dw_window_get_pos_size() to work on individual controls on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 950
diff changeset
10692 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10693 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10694
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10695 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10696 * Returns the width of the screen.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10697 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10698 int API dw_screen_width(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10699 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10700 NSRect screenRect = [[NSScreen mainScreen] frame];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10701 return screenRect.size.width;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10702 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10703
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10704 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10705 * Returns the height of the screen.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10706 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10707 int API dw_screen_height(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10708 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10709 NSRect screenRect = [[NSScreen mainScreen] frame];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10710 return screenRect.size.height;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10711 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10712
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10713 /* This should return the current color depth */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10714 unsigned long API dw_color_depth_get(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10715 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10716 NSWindowDepth screenDepth = [[NSScreen mainScreen] depth];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10717 return NSBitsPerPixelFromDepth(screenDepth);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10718 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10719
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10720 /*
2067
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10721 * Creates a new system notification if possible.
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10722 * Parameters:
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10723 * title: The short title of the notification.
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10724 * pixmap: Handle to an image to display or NULL if none.
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10725 * description: A longer description of the notification,
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10726 * or NULL if none is necessary.
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10727 * Returns:
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10728 * A handle to the notification which can be used to attach a "clicked" event if desired,
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10729 * or NULL if it fails or notifications are not supported by the system.
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10730 * Remarks:
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10731 * This will create a system notification that will show in the notifaction panel
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10732 * on supported systems, which may be clicked to perform another task.
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10733 */
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10734 HWND dw_notification_new(const char *title, HPIXMAP pixmap, const char *description, ...)
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10735 {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10736 #ifdef BUILDING_FOR_MOUNTAIN_LION
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10737 char outbuf[1025] = {0};
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10738 HWND retval = NULL;
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10739
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10740 if(description)
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10741 {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10742 va_list args;
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10743
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10744 va_start(args, description);
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10745 vsnprintf(outbuf, 1024, description, args);
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10746 va_end(args);
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10747 }
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10748
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10749 #ifdef BUILDING_FOR_MOJAVE
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10750 // Configure the notification's payload.
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10751 if (@available(macOS 10.14, *))
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10752 {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10753 UNMutableNotificationContent* notification = [[UNMutableNotificationContent alloc] init];
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10754
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10755 if(notification)
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10756 {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10757 notification.title = [NSString stringWithUTF8String:title];
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10758 if(description)
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10759 notification.body = [NSString stringWithUTF8String:outbuf];
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10760 retval = notification;
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10761 }
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10762 }
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10763 else
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10764 #endif
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10765 {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10766 // Fallback on earlier versions
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10767 NSUserNotification *notification = [[NSUserNotification alloc] init];
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10768
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10769 if(notification)
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10770 {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10771 notification.title = [NSString stringWithUTF8String:title];
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10772 notification.informativeText = [NSString stringWithUTF8String:outbuf];
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10773 if(pixmap && pixmap->image)
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10774 notification.contentImage = pixmap->image;
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10775 retval = notification;
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10776 }
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10777 }
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10778 return retval;
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10779 #else
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10780 return NULL;
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10781 #endif
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10782 }
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10783
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10784 /*
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10785 * Sends a notification created by dw_notification_new() after attaching signal handler.
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10786 * Parameters:
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10787 * notification: The handle to the notification returned by dw_notification_new().
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10788 * Returns:
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10789 * DW_ERROR_NONE on success, DW_ERROR_UNKNOWN on error or not supported.
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10790 */
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10791 int dw_notification_send(HWND notification)
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10792 {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10793 #ifdef BUILDING_FOR_MOUNTAIN_LION
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10794 if(notification)
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10795 {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10796 #ifdef BUILDING_FOR_MOJAVE
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10797 // Schedule the notification.
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10798 if (@available(macOS 10.14, *))
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10799 {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10800 UNMutableNotificationContent *content = (UNMutableNotificationContent *)notification;
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10801 NSString *notid = [NSString stringWithFormat:@"dw-notification-%llu", (unsigned long long)notification];
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10802 UNNotificationRequest* request = [UNNotificationRequest requestWithIdentifier:notid
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10803 content:content trigger:nil];
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10804
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10805 UNUserNotificationCenter* center = [UNUserNotificationCenter currentNotificationCenter];
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10806 [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10807 _event_handler(notification, nil, 8);
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10808 }];
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10809 }
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10810 else
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10811 #endif
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10812 {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10813 // Fallback on earlier versions
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10814 [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification];
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10815 }
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10816 return DW_ERROR_NONE;
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10817 }
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10818 #endif
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10819 return DW_ERROR_UNKNOWN;
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10820 }
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10821
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10822
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
10823 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10824 * Returns some information about the current operating environment.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10825 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10826 * env: Pointer to a DWEnv struct.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10827 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10828 void dw_environment_query(DWEnv *env)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10829 {
2064
19fb7f72051b Mac: Minor update to dw_environment_query(). Improve safety and remove unused code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2037
diff changeset
10830 memset(env, '\0', sizeof(DWEnv));
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10831 strcpy(env->osName, "MacOS");
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10832
2064
19fb7f72051b Mac: Minor update to dw_environment_query(). Improve safety and remove unused code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2037
diff changeset
10833 strncpy(env->buildDate, __DATE__, sizeof(env->buildDate)-1);
19fb7f72051b Mac: Minor update to dw_environment_query(). Improve safety and remove unused code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2037
diff changeset
10834 strncpy(env->buildTime, __TIME__, sizeof(env->buildTime)-1);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10835 env->DWMajorVersion = DW_MAJOR_VERSION;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10836 env->DWMinorVersion = DW_MINOR_VERSION;
1160
924c8087a755 Attempt to use the subversion revision number as the sub version number.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1158
diff changeset
10837 #ifdef VER_REV
924c8087a755 Attempt to use the subversion revision number as the sub version number.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1158
diff changeset
10838 env->DWSubVersion = VER_REV;
924c8087a755 Attempt to use the subversion revision number as the sub version number.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1158
diff changeset
10839 #else
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10840 env->DWSubVersion = DW_SUB_VERSION;
1160
924c8087a755 Attempt to use the subversion revision number as the sub version number.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1158
diff changeset
10841 #endif
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10842
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
10843 env->MajorVersion = DWOSMajor;
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
10844 env->MinorVersion = DWOSMinor;
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
10845 env->MajorBuild = DWOSBuild;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10846 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10847
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10848 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10849 * Emits a beep.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10850 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10851 * freq: Frequency.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10852 * dur: Duration.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10853 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10854 void API dw_beep(int freq, int dur)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10855 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10856 NSBeep();
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10857 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10858
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10859 /* Call this after drawing to the screen to make sure
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10860 * anything you have drawn is visible.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10861 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10862 void API dw_flush(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10863 {
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
10864 /* This may need to be thread specific */
699
b79300831495 Offload some drawing functions to the main thread to prevent focus deadlocks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 698
diff changeset
10865 [DWObj performSelectorOnMainThread:@selector(doFlush:) withObject:nil waitUntilDone:NO];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10866 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10867
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
10868 /* Functions for managing the user data lists that are associated with
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
10869 * a given window handle. Used in dw_window_set_data() and
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
10870 * dw_window_get_data().
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
10871 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
10872 UserData *_find_userdata(UserData **root, const char *varname)
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
10873 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10874 UserData *tmp = *root;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10875
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10876 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10877 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10878 if(strcasecmp(tmp->varname, varname) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10879 return tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10880 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10881 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10882 return NULL;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
10883 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
10884
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
10885 int _new_userdata(UserData **root, const char *varname, void *data)
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
10886 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10887 UserData *new = _find_userdata(root, varname);
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10888
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10889 if(new)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10890 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10891 new->data = data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10892 return TRUE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10893 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10894 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10895 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10896 new = malloc(sizeof(UserData));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10897 if(new)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10898 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10899 new->varname = strdup(varname);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10900 new->data = data;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10901
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10902 new->next = NULL;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10903
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10904 if (!*root)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10905 *root = new;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10906 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10907 {
1303
ca02c24e80c9 Experimental change to menu code on Windows to allow dw_window_enable/disable to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1302
diff changeset
10908 UserData *prev = *root, *tmp = prev->next;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
10909
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10910 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10911 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10912 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10913 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10914 }
1303
ca02c24e80c9 Experimental change to menu code on Windows to allow dw_window_enable/disable to work on menu item handles.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1302
diff changeset
10915 prev->next = new;
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10916 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10917 return TRUE;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10918 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10919 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10920 return FALSE;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
10921 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
10922
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
10923 int _remove_userdata(UserData **root, const char *varname, int all)
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
10924 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10925 UserData *prev = NULL, *tmp = *root;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10926
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10927 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10928 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10929 if(all || strcasecmp(tmp->varname, varname) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10930 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10931 if(!prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10932 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10933 *root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10934 free(tmp->varname);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10935 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10936 if(!all)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10937 return 0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10938 tmp = *root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10939 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10940 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10941 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10942 /* If all is true we should
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10943 * never get here.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10944 */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10945 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10946 free(tmp->varname);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10947 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10948 return 0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10949 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10950 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10951 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10952 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10953 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10954 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10955 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10956 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10957 return 0;
651
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
10958 }
270580896dac Filling in more class types.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 650
diff changeset
10959
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10960 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10961 * Add a named user data item to a window handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10962 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10963 * window: Window handle of signal to be called back.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10964 * dataname: A string pointer identifying which signal to be hooked.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10965 * data: User data to be passed to the handler function.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10966 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
10967 void dw_window_set_data(HWND window, const char *dataname, void *data)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10968 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10969 id object = window;
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
10970 if([object isMemberOfClass:[DWWindow class]])
681
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
10971 {
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
10972 NSWindow *win = window;
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
10973 object = [win contentView];
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
10974 }
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
10975 else if([object isMemberOfClass:[NSScrollView class]])
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
10976 {
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
10977 NSScrollView *sv = window;
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
10978 object = [sv documentView];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
10979 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10980 WindowData *blah = (WindowData *)[object userdata];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10981
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10982 if(!blah)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10983 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10984 if(!dataname)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10985 return;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10986
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10987 blah = calloc(1, sizeof(WindowData));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10988 [object setUserdata:blah];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10989 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
10990
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10991 if(data)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10992 _new_userdata(&(blah->root), dataname, data);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10993 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10994 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10995 if(dataname)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10996 _remove_userdata(&(blah->root), dataname, FALSE);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10997 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10998 _remove_userdata(&(blah->root), NULL, TRUE);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
10999 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11000 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11001
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11002 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11003 * Gets a named user data item to a window handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11004 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11005 * window: Window handle of signal to be called back.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11006 * dataname: A string pointer identifying which signal to be hooked.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11007 * data: User data to be passed to the handler function.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11008 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
11009 void *dw_window_get_data(HWND window, const char *dataname)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11010 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11011 id object = window;
894
d1d7e5c51860 Added a DWWindow subclass to trap key events on the main window for Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 891
diff changeset
11012 if([object isMemberOfClass:[DWWindow class]])
681
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
11013 {
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
11014 NSWindow *win = window;
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
11015 object = [win contentView];
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
11016 }
5fe12469c1fb Fix for dw_window_set/get_data() on a top-level window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 680
diff changeset
11017 else if([object isMemberOfClass:[NSScrollView class]])
676
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
11018 {
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
11019 NSScrollView *sv = window;
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
11020 object = [sv documentView];
9861d264925d MLE was missing the scrollbar. Fixes for getting and setting the position.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 675
diff changeset
11021 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11022 WindowData *blah = (WindowData *)[object userdata];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11023
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11024 if(blah && blah->root && dataname)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11025 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11026 UserData *ud = _find_userdata(&(blah->root), dataname);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11027 if(ud)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11028 return ud->data;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11029 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11030 return NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11031 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11032
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
11033 #define DW_TIMER_MAX 64
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
11034 NSTimer *DWTimers[DW_TIMER_MAX];
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
11035
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11036 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11037 * Add a callback to a timer event.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11038 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11039 * interval: Milliseconds to delay between calls.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11040 * sigfunc: The pointer to the function to be used as the callback.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11041 * data: User data to be passed to the handler function.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11042 * Returns:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11043 * Timer ID for use with dw_timer_disconnect(), 0 on error.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11044 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11045 int API dw_timer_connect(int interval, void *sigfunc, void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11046 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11047 int z;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11048
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11049 for(z=0;z<DW_TIMER_MAX;z++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11050 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11051 if(!DWTimers[z])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11052 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11053 break;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11054 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11055 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11056
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11057 if(sigfunc && !DWTimers[z])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11058 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11059 NSTimeInterval seconds = (double)interval / 1000.0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11060 NSTimer *thistimer = DWTimers[z] = [NSTimer scheduledTimerWithTimeInterval:seconds target:DWHandler selector:@selector(runTimer:) userInfo:nil repeats:YES];
1853
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11061 _new_signal(0, thistimer, z+1, sigfunc, NULL, data);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11062 return z+1;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11063 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11064 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11065 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11066
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11067 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11068 * Removes timer callback.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11069 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11070 * id: Timer ID returned by dw_timer_connect().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11071 */
657
f31a47b055f8 Work (unfinished) on container objects.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 656
diff changeset
11072 void API dw_timer_disconnect(int timerid)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11073 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11074 SignalHandler *prev = NULL, *tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11075 NSTimer *thistimer;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11076
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11077 /* 0 is an invalid timer ID */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11078 if(timerid < 1 || !DWTimers[timerid-1])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11079 return;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11080
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11081 thistimer = DWTimers[timerid-1];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11082 DWTimers[timerid-1] = nil;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11083
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11084 [thistimer invalidate];
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11085
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11086 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11087 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11088 if(tmp->id == timerid && tmp->window == thistimer)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11089 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11090 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11091 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11092 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11093 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11094 tmp = prev->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11095 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11096 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11097 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11098 Root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11099 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11100 tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11101 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11102 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11103 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11104 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11105 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11106 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11107 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11108 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11109 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11110
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11111 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11112 * Add a callback to a window event.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11113 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11114 * window: Window handle of signal to be called back.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11115 * signame: A string pointer identifying which signal to be hooked.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11116 * sigfunc: The pointer to the function to be used as the callback.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11117 * data: User data to be passed to the handler function.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11118 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
11119 void API dw_signal_connect(HWND window, const char *signame, void *sigfunc, void *data)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11120 {
1853
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11121 dw_signal_connect_data(window, signame, sigfunc, NULL, data);
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11122 }
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11123
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11124 /*
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11125 * Add a callback to a window event with a closure callback.
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11126 * Parameters:
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11127 * window: Window handle of signal to be called back.
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11128 * signame: A string pointer identifying which signal to be hooked.
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11129 * sigfunc: The pointer to the function to be used as the callback.
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11130 * discfunc: The pointer to the function called when this handler is removed.
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11131 * data: User data to be passed to the handler function.
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11132 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
11133 void API dw_signal_connect_data(HWND window, const char *signame, void *sigfunc, void *discfunc, void *data)
1853
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11134 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11135 ULONG message = 0, msgid = 0;
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
11136
1843
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
11137 /* Handle special case of application delete signal */
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
11138 if(!window && signame && strcmp(signame, DW_SIGNAL_DELETE) == 0)
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
11139 {
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
11140 window = DWApp;
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
11141 }
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11142
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11143 if(window && signame && sigfunc)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11144 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11145 if((message = _findsigmessage(signame)) != 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11146 {
1853
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11147 _new_signal(message, window, (int)msgid, sigfunc, discfunc, data);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11148 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11149 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11150 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11151
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11152 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11153 * Removes callbacks for a given window with given name.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11154 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11155 * window: Window handle of callback to be removed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11156 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
11157 void API dw_signal_disconnect_by_name(HWND window, const char *signame)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11158 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11159 SignalHandler *prev = NULL, *tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11160 ULONG message;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11161
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11162 if(!window || !signame || (message = _findsigmessage(signame)) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11163 return;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11164
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11165 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11166 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11167 if(tmp->window == window && tmp->message == message)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11168 {
1853
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11169 void (*discfunc)(HWND, void *) = tmp->discfunction;
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
11170
1853
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11171 if(discfunc)
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11172 {
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11173 discfunc(tmp->window, tmp->data);
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11174 }
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
11175
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11176 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11177 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11178 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11179 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11180 tmp = prev->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11181 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11182 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11183 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11184 Root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11185 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11186 tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11187 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11188 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11189 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11190 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11191 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11192 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11193 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11194 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11195 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11196
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11197 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11198 * Removes all callbacks for a given window.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11199 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11200 * window: Window handle of callback to be removed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11201 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11202 void API dw_signal_disconnect_by_window(HWND window)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11203 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11204 SignalHandler *prev = NULL, *tmp = Root;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11205
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11206 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11207 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11208 if(tmp->window == window)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11209 {
1853
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11210 void (*discfunc)(HWND, void *) = tmp->discfunction;
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
11211
1853
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11212 if(discfunc)
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11213 {
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11214 discfunc(tmp->window, tmp->data);
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11215 }
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
11216
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11217 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11218 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11219 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11220 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11221 tmp = prev->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11222 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11223 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11224 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11225 Root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11226 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11227 tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11228 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11229 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11230 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11231 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11232 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11233 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11234 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11235 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11236 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11237
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11238 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11239 * Removes all callbacks for a given window with specified data.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11240 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11241 * window: Window handle of callback to be removed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11242 * data: Pointer to the data to be compared against.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11243 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11244 void API dw_signal_disconnect_by_data(HWND window, void *data)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11245 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11246 SignalHandler *prev = NULL, *tmp = Root;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11247
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11248 while(tmp)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11249 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11250 if(tmp->window == window && tmp->data == data)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11251 {
1853
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11252 void (*discfunc)(HWND, void *) = tmp->discfunction;
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
11253
1853
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11254 if(discfunc)
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11255 {
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11256 discfunc(tmp->window, tmp->data);
4790589f52a9 Initial commit for new dw_signal_connect_data() function...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1849
diff changeset
11257 }
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
11258
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11259 if(prev)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11260 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11261 prev->next = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11262 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11263 tmp = prev->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11264 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11265 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11266 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11267 Root = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11268 free(tmp);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11269 tmp = Root;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11270 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11271 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11272 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11273 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11274 prev = tmp;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11275 tmp = tmp->next;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11276 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11277 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11278 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11279
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11280 void _my_strlwr(char *buf)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11281 {
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1102
diff changeset
11282 int z, len = (int)strlen(buf);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11283
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11284 for(z=0;z<len;z++)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11285 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11286 if(buf[z] >= 'A' && buf[z] <= 'Z')
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11287 buf[z] -= 'A' - 'a';
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11288 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11289 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11290
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11291 /* Open a shared library and return a handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11292 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11293 * name: Base name of the shared library.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11294 * handle: Pointer to a module handle,
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11295 * will be filled in with the handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11296 */
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
11297 int dw_module_load(const char *name, HMOD *handle)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11298 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11299 int len;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11300 char *newname;
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
11301 char errorbuf[1025];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11302
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11303
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11304 if(!handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11305 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11306
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1102
diff changeset
11307 if((len = (int)strlen(name)) == 0)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11308 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11309
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11310 /* Lenth + "lib" + ".dylib" + NULL */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11311 newname = malloc(len + 10);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11312
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11313 if(!newname)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11314 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11315
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11316 sprintf(newname, "lib%s.dylib", name);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11317 _my_strlwr(newname);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11318
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11319 *handle = dlopen(newname, RTLD_NOW);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11320 if(*handle == NULL)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11321 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11322 strncpy(errorbuf, dlerror(), 1024);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11323 printf("%s\n", errorbuf);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11324 sprintf(newname, "lib%s.dylib", name);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11325 *handle = dlopen(newname, RTLD_NOW);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11326 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11327
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11328 free(newname);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11329
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11330 return (NULL == *handle) ? -1 : 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11331 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11332
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11333 /* Queries the address of a symbol within open handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11334 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11335 * handle: Module handle returned by dw_module_load()
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11336 * name: Name of the symbol you want the address of.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11337 * func: A pointer to a function pointer, to obtain
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11338 * the address.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11339 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
11340 int dw_module_symbol(HMOD handle, const char *name, void**func)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11341 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11342 if(!func || !name)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11343 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11344
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11345 if(strlen(name) == 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11346 return -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11347
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11348 *func = (void*)dlsym(handle, name);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11349 return (NULL == *func);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11350 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11351
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11352 /* Frees the shared library previously opened.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11353 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11354 * handle: Module handle returned by dw_module_load()
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11355 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11356 int dw_module_close(HMOD handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11357 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11358 if(handle)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11359 return dlclose(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11360 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11361 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11362
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11363 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11364 * Returns the handle to an unnamed mutex semaphore.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11365 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11366 HMTX dw_mutex_new(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11367 {
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
11368 HMTX mutex = malloc(sizeof(pthread_mutex_t));
727
f190b5c2ce16 Fixed 2 errors in the tree select event handler. Also removed unused experimental code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 726
diff changeset
11369
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
11370 pthread_mutex_init(mutex, NULL);
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
11371 return mutex;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11372 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11373
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11374 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11375 * Closes a semaphore created by dw_mutex_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11376 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11377 * mutex: The handle to the mutex returned by dw_mutex_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11378 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11379 void dw_mutex_close(HMTX mutex)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11380 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11381 if(mutex)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11382 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11383 pthread_mutex_destroy(mutex);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11384 free(mutex);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11385 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11386 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11387
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11388 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11389 * Tries to gain access to the semaphore, if it can't it blocks.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11390 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11391 * mutex: The handle to the mutex returned by dw_mutex_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11392 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11393 void dw_mutex_lock(HMTX mutex)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11394 {
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
11395 /* We need to handle locks from the main thread differently...
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
11396 * since we can't stop message processing... otherwise we
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
11397 * will deadlock... so try to acquire the lock and continue
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
11398 * processing messages in between tries.
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
11399 */
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
11400 if(DWThread == pthread_self())
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
11401 {
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
11402 while(pthread_mutex_trylock(mutex) != 0)
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
11403 {
725
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
11404 /* Process any pending events */
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
11405 while(_dw_main_iteration([NSDate dateWithTimeIntervalSinceNow:0.01]))
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
11406 {
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
11407 /* Just loop */
4e09c92363df Experimental changes to dw_main_sleep() and dw_main_iteration() to hopefully solve some issues.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 724
diff changeset
11408 }
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
11409 }
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
11410 }
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
11411 else
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
11412 {
693
2f21ee9d7c7b Experimental change for locking on the main thread... will be committing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 692
diff changeset
11413 pthread_mutex_lock(mutex);
691
578bbfd8c904 Added initial thread synchronization code to stop the main loop when doing thread unsafe things.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 690
diff changeset
11414 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11415 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11416
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11417 /*
1158
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11418 * Tries to gain access to the semaphore.
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11419 * Parameters:
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11420 * mutex: The handle to the mutex returned by dw_mutex_new().
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11421 * Returns:
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11422 * DW_ERROR_NONE on success, DW_ERROR_TIMEOUT if it is already locked.
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11423 */
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11424 int API dw_mutex_trylock(HMTX mutex)
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11425 {
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11426 if(pthread_mutex_trylock(mutex) == 0)
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11427 return DW_ERROR_NONE;
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11428 return DW_ERROR_TIMEOUT;
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11429 }
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11430
f86f556ff29d Added dw_mutex_trylock() that functions like dw_mutex_lock() except
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1155
diff changeset
11431 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11432 * Reliquishes the access to the semaphore.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11433 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11434 * mutex: The handle to the mutex returned by dw_mutex_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11435 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11436 void dw_mutex_unlock(HMTX mutex)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11437 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11438 pthread_mutex_unlock(mutex);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11439 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11440
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11441 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11442 * Returns the handle to an unnamed event semaphore.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11443 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11444 HEV dw_event_new(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11445 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11446 HEV eve = (HEV)malloc(sizeof(struct _dw_unix_event));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11447
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11448 if(!eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11449 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11450
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11451 /* We need to be careful here, mutexes on Linux are
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11452 * FAST by default but are error checking on other
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11453 * systems such as FreeBSD and OS/2, perhaps others.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11454 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11455 pthread_mutex_init (&(eve->mutex), NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11456 pthread_mutex_lock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11457 pthread_cond_init (&(eve->event), NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11458
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11459 pthread_mutex_unlock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11460 eve->alive = 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11461 eve->posted = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11462
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11463 return eve;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11464 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11465
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11466 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11467 * Resets a semaphore created by dw_event_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11468 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11469 * eve: The handle to the event returned by dw_event_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11470 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11471 int dw_event_reset (HEV eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11472 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11473 if(!eve)
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 983
diff changeset
11474 return DW_ERROR_NON_INIT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11475
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11476 pthread_mutex_lock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11477 pthread_cond_broadcast (&(eve->event));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11478 pthread_cond_init (&(eve->event), NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11479 eve->posted = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11480 pthread_mutex_unlock (&(eve->mutex));
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 983
diff changeset
11481 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11482 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11483
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11484 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11485 * Posts a semaphore created by dw_event_new(). Causing all threads
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11486 * waiting on this event in dw_event_wait to continue.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11487 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11488 * eve: The handle to the event returned by dw_event_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11489 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11490 int dw_event_post (HEV eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11491 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11492 if(!eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11493 return FALSE;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11494
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11495 pthread_mutex_lock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11496 pthread_cond_broadcast (&(eve->event));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11497 eve->posted = 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11498 pthread_mutex_unlock (&(eve->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11499 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11500 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11501
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11502 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11503 * Waits on a semaphore created by dw_event_new(), until the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11504 * event gets posted or until the timeout expires.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11505 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11506 * eve: The handle to the event returned by dw_event_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11507 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11508 int dw_event_wait(HEV eve, unsigned long timeout)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11509 {
1155
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11510 int rc;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11511
1155
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11512 if(!eve)
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11513 return DW_ERROR_NON_INIT;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11514
1202
5c1a01c6384d Think we need to check the posted state inside the mutex...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1201
diff changeset
11515 pthread_mutex_lock (&(eve->mutex));
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11516
1155
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11517 if(eve->posted)
1202
5c1a01c6384d Think we need to check the posted state inside the mutex...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1201
diff changeset
11518 {
5c1a01c6384d Think we need to check the posted state inside the mutex...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1201
diff changeset
11519 pthread_mutex_unlock (&(eve->mutex));
5c1a01c6384d Think we need to check the posted state inside the mutex...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1201
diff changeset
11520 return DW_ERROR_NONE;
5c1a01c6384d Think we need to check the posted state inside the mutex...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1201
diff changeset
11521 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11522
1155
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11523 if(timeout != -1)
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11524 {
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11525 struct timeval now;
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11526 struct timespec timeo;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
11527
1155
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11528 gettimeofday(&now, 0);
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11529 timeo.tv_sec = now.tv_sec + (timeout / 1000);
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11530 timeo.tv_nsec = now.tv_usec * 1000;
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11531 rc = pthread_cond_timedwait(&(eve->event), &(eve->mutex), &timeo);
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11532 }
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11533 else
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11534 rc = pthread_cond_wait(&(eve->event), &(eve->mutex));
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11535 pthread_mutex_unlock (&(eve->mutex));
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11536 if(!rc)
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11537 return DW_ERROR_NONE;
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11538 if(rc == ETIMEDOUT)
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11539 return DW_ERROR_TIMEOUT;
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11540 return DW_ERROR_GENERAL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11541 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11542
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11543 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11544 * Closes a semaphore created by dw_event_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11545 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11546 * eve: The handle to the event returned by dw_event_new().
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11547 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11548 int dw_event_close(HEV *eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11549 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11550 if(!eve || !(*eve))
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 983
diff changeset
11551 return DW_ERROR_NON_INIT;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11552
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11553 pthread_mutex_lock (&((*eve)->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11554 pthread_cond_destroy (&((*eve)->event));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11555 pthread_mutex_unlock (&((*eve)->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11556 pthread_mutex_destroy (&((*eve)->mutex));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11557 free(*eve);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11558 *eve = NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11559
986
87dc0f5f96d0 Fix return type of dw_listbox_selected() to be "int" instead of "unsigned int" to allow -1 return.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 983
diff changeset
11560 return DW_ERROR_NONE;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11561 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11562
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11563 struct _seminfo {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11564 int fd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11565 int waiting;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11566 };
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11567
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11568 static void _handle_sem(int *tmpsock)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11569 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11570 fd_set rd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11571 struct _seminfo *array = (struct _seminfo *)malloc(sizeof(struct _seminfo));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11572 int listenfd = tmpsock[0];
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11573 int bytesread, connectcount = 1, maxfd, z, posted = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11574 char command;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11575 sigset_t mask;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11576
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11577 sigfillset(&mask); /* Mask all allowed signals */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11578 pthread_sigmask(SIG_BLOCK, &mask, NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11579
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11580 /* problems */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11581 if(tmpsock[1] == -1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11582 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11583 free(array);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11584 return;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11585 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11586
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11587 array[0].fd = tmpsock[1];
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11588 array[0].waiting = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11589
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11590 /* Free the memory allocated in dw_named_event_new. */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11591 free(tmpsock);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11592
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11593 while(1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11594 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11595 FD_ZERO(&rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11596 FD_SET(listenfd, &rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11597
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11598 maxfd = listenfd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11599
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11600 /* Added any connections to the named event semaphore */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11601 for(z=0;z<connectcount;z++)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11602 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11603 if(array[z].fd > maxfd)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11604 maxfd = array[z].fd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11605
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11606 FD_SET(array[z].fd, &rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11607 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11608
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11609 if(select(maxfd+1, &rd, NULL, NULL, NULL) == -1)
1886
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
11610 {
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
11611 free(array);
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
11612 return;
f7d408a47752 Fix a couple of errors reported by the static analyzer on Mac....
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1885
diff changeset
11613 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11614
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11615 if(FD_ISSET(listenfd, &rd))
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11616 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11617 struct _seminfo *newarray;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11618 int newfd = accept(listenfd, 0, 0);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11619
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11620 if(newfd > -1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11621 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11622 /* Add new connections to the set */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11623 newarray = (struct _seminfo *)malloc(sizeof(struct _seminfo)*(connectcount+1));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11624 memcpy(newarray, array, sizeof(struct _seminfo)*(connectcount));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11625
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11626 newarray[connectcount].fd = newfd;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11627 newarray[connectcount].waiting = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11628
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11629 connectcount++;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11630
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11631 /* Replace old array with new one */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11632 free(array);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11633 array = newarray;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11634 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11635 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11636
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11637 /* Handle any events posted to the semaphore */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11638 for(z=0;z<connectcount;z++)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11639 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11640 if(FD_ISSET(array[z].fd, &rd))
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11641 {
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1102
diff changeset
11642 if((bytesread = (int)read(array[z].fd, &command, 1)) < 1)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11643 {
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
11644 struct _seminfo *newarray = NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11645
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11646 /* Remove this connection from the set */
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
11647 if(connectcount > 1)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11648 {
1764
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
11649 newarray = (struct _seminfo *)malloc(sizeof(struct _seminfo)*(connectcount-1));
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
11650 if(!z)
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
11651 memcpy(newarray, &array[1], sizeof(struct _seminfo)*(connectcount-1));
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
11652 else
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
11653 {
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
11654 memcpy(newarray, array, sizeof(struct _seminfo)*z);
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
11655 if(z!=(connectcount-1))
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
11656 memcpy(&newarray[z], &array[z+1], sizeof(struct _seminfo)*(z-connectcount-1));
5ffeea4a2a4b Fixed a memory leak in the Mac box code, items were not being freed when destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1748
diff changeset
11657 }
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11658 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11659 connectcount--;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11660
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11661 /* Replace old array with new one */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11662 free(array);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11663 array = newarray;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11664 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11665 else if(bytesread == 1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11666 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11667 switch(command)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11668 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11669 case 0:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11670 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11671 /* Reset */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11672 posted = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11673 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11674 break;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11675 case 1:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11676 /* Post */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11677 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11678 int s;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11679 char tmp = (char)0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11680
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11681 posted = 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11682
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11683 for(s=0;s<connectcount;s++)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11684 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11685 /* The semaphore has been posted so
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11686 * we tell all the waiting threads to
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11687 * continue.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11688 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11689 if(array[s].waiting)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11690 write(array[s].fd, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11691 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11692 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11693 break;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11694 case 2:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11695 /* Wait */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11696 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11697 char tmp = (char)0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11698
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11699 array[z].waiting = 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11700
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11701 /* If we are posted exit immeditately */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11702 if(posted)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11703 write(array[z].fd, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11704 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11705 break;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11706 case 3:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11707 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11708 /* Done Waiting */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11709 array[z].waiting = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11710 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11711 break;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11712 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11713 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11714 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11715 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11716 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11717 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11718
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11719 /* Using domain sockets on unix for IPC */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11720 /* Create a named event semaphore which can be
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11721 * opened from other processes.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11722 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11723 * eve: Pointer to an event handle to receive handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11724 * name: Name given to semaphore which can be opened
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11725 * by other processes.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11726 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
11727 HEV dw_named_event_new(const char *name)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11728 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11729 struct sockaddr_un un;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11730 int ev, *tmpsock = (int *)malloc(sizeof(int)*2);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11731 HEV eve;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11732 DWTID dwthread;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11733
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11734 if(!tmpsock)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11735 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11736
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11737 eve = (HEV)malloc(sizeof(struct _dw_unix_event));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11738
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11739 if(!eve)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11740 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11741 free(tmpsock);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11742 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11743 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
11744
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11745 tmpsock[0] = socket(AF_UNIX, SOCK_STREAM, 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11746 ev = socket(AF_UNIX, SOCK_STREAM, 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11747 memset(&un, 0, sizeof(un));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11748 un.sun_family=AF_UNIX;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11749 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11750 strcpy(un.sun_path, "/tmp/.dw/");
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11751 strcat(un.sun_path, name);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11753 /* just to be safe, this should be changed
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11754 * to support multiple instances.
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11755 */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11756 remove(un.sun_path);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11757
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11758 bind(tmpsock[0], (struct sockaddr *)&un, sizeof(un));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11759 listen(tmpsock[0], 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11760 connect(ev, (struct sockaddr *)&un, sizeof(un));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11761 tmpsock[1] = accept(tmpsock[0], 0, 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11762
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11763 if(tmpsock[0] < 0 || tmpsock[1] < 0 || ev < 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11764 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11765 if(tmpsock[0] > -1)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11766 close(tmpsock[0]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11767 if(tmpsock[1] > -1)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11768 close(tmpsock[1]);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11769 if(ev > -1)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11770 close(ev);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11771 free(tmpsock);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11772 free(eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11773 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11774 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11775
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11776 /* Create a thread to handle this event semaphore */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11777 pthread_create(&dwthread, NULL, (void *)_handle_sem, (void *)tmpsock);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11778 eve->alive = ev;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11779 return eve;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11780 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11781
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11782 /* Open an already existing named event semaphore.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11783 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11784 * eve: Pointer to an event handle to receive handle.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11785 * name: Name given to semaphore which can be opened
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11786 * by other processes.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11787 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
11788 HEV dw_named_event_get(const char *name)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11789 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11790 struct sockaddr_un un;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11791 HEV eve;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11792 int ev = socket(AF_UNIX, SOCK_STREAM, 0);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11793 if(ev < 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11794 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11795
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11796 eve = (HEV)malloc(sizeof(struct _dw_unix_event));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11797
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11798 if(!eve)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11799 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11800 close(ev);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11801 return NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11802 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11803
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11804 un.sun_family=AF_UNIX;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11805 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11806 strcpy(un.sun_path, "/tmp/.dw/");
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11807 strcat(un.sun_path, name);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11808 connect(ev, (struct sockaddr *)&un, sizeof(un));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11809 eve->alive = ev;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11810 return eve;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11811 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11812
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11813 /* Resets the event semaphore so threads who call wait
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11814 * on this semaphore will block.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11815 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11816 * eve: Handle to the semaphore obtained by
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11817 * an open or create call.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11818 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11819 int dw_named_event_reset(HEV eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11820 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11821 /* signal reset */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11822 char tmp = (char)0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11823
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11824 if(!eve || eve->alive < 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11825 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11826
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11827 if(write(eve->alive, &tmp, 1) == 1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11828 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11829 return 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11830 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11831
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11832 /* Sets the posted state of an event semaphore, any threads
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11833 * waiting on the semaphore will no longer block.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11834 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11835 * eve: Handle to the semaphore obtained by
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11836 * an open or create call.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11837 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11838 int dw_named_event_post(HEV eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11839 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11840
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11841 /* signal post */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11842 char tmp = (char)1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11843
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11844 if(!eve || eve->alive < 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11845 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11846
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11847 if(write(eve->alive, &tmp, 1) == 1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11848 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11849 return 1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11850 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11851
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11852 /* Waits on the specified semaphore until it becomes
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11853 * posted, or returns immediately if it already is posted.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11854 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11855 * eve: Handle to the semaphore obtained by
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11856 * an open or create call.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11857 * timeout: Number of milliseconds before timing out
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11858 * or -1 if indefinite.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11859 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11860 int dw_named_event_wait(HEV eve, unsigned long timeout)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11861 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11862 fd_set rd;
1155
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11863 struct timeval tv, *useme = NULL;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11864 int retval = 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11865 char tmp;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11866
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11867 if(!eve || eve->alive < 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11868 return DW_ERROR_NON_INIT;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11869
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11870 /* Set the timout or infinite */
1155
e6a2f57c0842 Added support for infinite wait for dw_event_wait() on Mac, Unix and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1152
diff changeset
11871 if(timeout != -1)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11872 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11873 tv.tv_sec = timeout / 1000;
1110
404b639f096b Minor typecast fixes for warnings reported by clang on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1102
diff changeset
11874 tv.tv_usec = (int)timeout % 1000;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11875
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11876 useme = &tv;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11877 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11878
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11879 FD_ZERO(&rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11880 FD_SET(eve->alive, &rd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11881
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11882 /* Signal wait */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11883 tmp = (char)2;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11884 write(eve->alive, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11885
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11886 retval = select(eve->alive+1, &rd, NULL, NULL, useme);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11887
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11888 /* Signal done waiting. */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11889 tmp = (char)3;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11890 write(eve->alive, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11891
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11892 if(retval == 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11893 return DW_ERROR_TIMEOUT;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11894 else if(retval == -1)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11895 return DW_ERROR_INTERRUPT;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11896
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11897 /* Clear the entry from the pipe so
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11898 * we don't loop endlessly. :)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11899 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11900 read(eve->alive, &tmp, 1);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11901 return 0;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11902 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11903
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11904 /* Release this semaphore, if there are no more open
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11905 * handles on this semaphore the semaphore will be destroyed.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11906 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11907 * eve: Handle to the semaphore obtained by
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11908 * an open or create call.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11909 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11910 int dw_named_event_close(HEV eve)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11911 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11912 /* Finally close the domain socket,
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11913 * cleanup will continue in _handle_sem.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11914 */
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11915 if(eve)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11916 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11917 close(eve->alive);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11918 free(eve);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11919 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11920 return 0;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11921 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11922
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
11923 /* Mac specific function to cause garbage collection */
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
11924 void _dw_pool_drain(void)
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
11925 {
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
11926 #if !defined(GARBAGE_COLLECT)
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
11927 NSAutoreleasePool *pool = pthread_getspecific(_dw_pool_key);
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
11928 [pool drain];
698
e19f69a78f21 Fix for pool being removed and not just drained.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
11929 pool = [[NSAutoreleasePool alloc] init];
e19f69a78f21 Fix for pool being removed and not just drained.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
11930 pthread_setspecific(_dw_pool_key, pool);
731
6a589a1a42b0 Add dw_window_get_font()
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 730
diff changeset
11931 #endif
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
11932 }
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
11933
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
11934 /*
1887
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11935 * Generally an internal function called from a newly created
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11936 * thread to setup the Dynamic Windows environment for the thread.
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11937 * However it is exported so language bindings can call it when
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11938 * they create threads that require access to Dynamic Windows.
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11939 */
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11940 void API _dw_init_thread(void)
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11941 {
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
11942 /* If we aren't using garbage collection we need autorelease pools */
660
2784e7ee8bcb Fixes for pixmaps and drawing to the screen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 659
diff changeset
11943 #if !defined(GARBAGE_COLLECT)
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11944 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
11945 pthread_setspecific(_dw_pool_key, pool);
660
2784e7ee8bcb Fixes for pixmaps and drawing to the screen.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 659
diff changeset
11946 #endif
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
11947 _init_colors();
1887
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11948 }
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11949
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
11950 /*
1887
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11951 * Generally an internal function called from a terminating
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11952 * thread to cleanup the Dynamic Windows environment for the thread.
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11953 * However it is exported so language bindings can call it when
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11954 * they exit threads that require access to Dynamic Windows.
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11955 */
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11956 void API _dw_deinit_thread(void)
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11957 {
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11958 NSColor *color;
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
11959
671
c60a4f6cfae8 Implemented icon support on the Mac. In the process created a new HICN type.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 670
diff changeset
11960 /* Release the pool when we are done so we don't leak */
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
11961 color = pthread_getspecific(_dw_fg_color_key);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
11962 [color release];
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
11963 color = pthread_getspecific(_dw_bg_color_key);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
11964 [color release];
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
11965 #if !defined(GARBAGE_COLLECT)
698
e19f69a78f21 Fix for pool being removed and not just drained.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 697
diff changeset
11966 pool = pthread_getspecific(_dw_pool_key);
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
11967 [pool drain];
666
e426de6e6c7c Changes to make the resize function more like on the other platforms.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 665
diff changeset
11968 #endif
1887
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11969 }
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11970
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11971 /*
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11972 * Setup thread independent pools.
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11973 */
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11974 void _dwthreadstart(void *data)
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11975 {
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11976 void (*threadfunc)(void *) = NULL;
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11977 void **tmp = (void **)data;
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11978
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11979 _dw_init_thread();
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
11980
1887
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11981 threadfunc = (void (*)(void *))tmp[0];
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11982
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11983 /* Start our thread function */
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11984 threadfunc(tmp[1]);
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11985
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
11986 free(tmp);
1922
a2a8145f3148 Turn off smart text and quote substitution on MLE.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1914
diff changeset
11987
1887
09860ba329a4 Divided thread initialization and deinitialization into separate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1886
diff changeset
11988 _dw_deinit_thread();
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11989 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11990
1075
3d117071a50b Renamed Mac _dw_default_font() to dw_font_set_default() and added it on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1074
diff changeset
11991 /*
3d117071a50b Renamed Mac _dw_default_font() to dw_font_set_default() and added it on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1074
diff changeset
11992 * Sets the default font used on text based widgets.
3d117071a50b Renamed Mac _dw_default_font() to dw_font_set_default() and added it on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1074
diff changeset
11993 * Parameters:
3d117071a50b Renamed Mac _dw_default_font() to dw_font_set_default() and added it on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1074
diff changeset
11994 * fontname: Font name in Dynamic Windows format.
3d117071a50b Renamed Mac _dw_default_font() to dw_font_set_default() and added it on OS/2 and Windows.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1074
diff changeset
11995 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
11996 void API dw_font_set_default(const char *fontname)
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
11997 {
1241
459426f31fb4 Slight thread safety fix on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1239
diff changeset
11998 NSFont *oldfont = DWDefaultFont;
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
11999 DWDefaultFont = _dw_font_by_name(fontname);
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
12000 [DWDefaultFont retain];
1241
459426f31fb4 Slight thread safety fix on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1239
diff changeset
12001 [oldfont release];
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
12002 }
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
12003
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12004 /*
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12005 * Initializes the Dynamic Windows engine.
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12006 * Parameters:
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12007 * newthread: True if this is the only thread.
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12008 * False if there is already a message loop running.
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12009 */
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12010 int API dw_init(int newthread, int argc, char *argv[])
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12011 {
1786
9a32d4216f24 Make sure we set the locale on Mac and it is UTF-8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1784
diff changeset
12012 char *lang = getenv("LANG");
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12013
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12014 /* Correct the startup path if run from a bundle */
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12015 if(argc > 0 && argv[0])
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12016 {
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12017 char *pathcopy = strdup(argv[0]);
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12018 char *app = strstr(pathcopy, ".app/");
2070
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
12019 char *binname = strrchr(pathcopy, '/');
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
12020
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
12021 if(binname && (binname++) && _dw_app_id[0])
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
12022 {
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
12023 /* If we have a binary name, use that for the Application ID instead. */
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
12024 snprintf(_dw_app_id, 100, "%s.%s", DW_APP_DOMAIN_DEFAULT, binname);
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
12025 }
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12026 if(app)
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12027 {
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
12028 char pathbuf[PATH_MAX+1] = { 0 };
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
12029 size_t len = (size_t)(app - pathcopy);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12030
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
12031 if(len > 0)
1385
fc20ad815428 Don't need to include the / after the .app on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1384
diff changeset
12032 strncpy(_dw_bundle_path, pathcopy, len + 4);
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12033 *app = 0;
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
12034
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12035 getcwd(pathbuf, PATH_MAX);
1128
7d7535f6bc4e Added ability to set background color of MLE; setting foreground still outstanding.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1120
diff changeset
12036
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12037 /* If run from a bundle the path seems to be / */
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12038 if(strcmp(pathbuf, "/") == 0)
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12039 {
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
12040 char *pos = strrchr(pathcopy, '/');
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
12041
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
12042 if(pos)
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12043 {
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
12044 strncpy(pathbuf, pathcopy, (size_t)(pos - pathcopy));
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
12045 chdir(pathbuf);
1098
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12046 }
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12047 }
9e1d6fa397be Experimental change to set the current working directory to the bundle path on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1093
diff changeset
12048 }
1383
ead81c3d9e4e Thought I was fixing a memory leak but I was seeing the {} wrong.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1381
diff changeset
12049 if(pathcopy)
ead81c3d9e4e Thought I was fixing a memory leak but I was seeing the {} wrong.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1381
diff changeset
12050 free(pathcopy);
ead81c3d9e4e Thought I was fixing a memory leak but I was seeing the {} wrong.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1381
diff changeset
12051 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12052
1381
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
12053 /* Just in case we can't obtain a path */
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
12054 if(!_dw_bundle_path[0])
3ba4853d5b78 Initial attempt at dw_app_dir() for OS/2, Windows and Mac...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1378
diff changeset
12055 getcwd(_dw_bundle_path, PATH_MAX);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12056
751
eba6ab48c952 Runtime Snow Leopard checks where possible and visual fix for Leopard status text.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 749
diff changeset
12057 /* Get the operating system version */
1770
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
12058 NSString *version = [[NSProcessInfo processInfo] operatingSystemVersionString];
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
12059 const char *versionstr = [version UTF8String];
2396655d43f1 Fix some warnings with Mac 10.8 and Xcode 4.5.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1769
diff changeset
12060 sscanf(versionstr, "Version %d.%d.%d", &DWOSMajor, &DWOSMinor, &DWOSBuild);
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12061 /* Set the locale... if it is UTF-8 pass it
1786
9a32d4216f24 Make sure we set the locale on Mac and it is UTF-8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1784
diff changeset
12062 * directly, otherwise specify UTF-8 explicitly.
9a32d4216f24 Make sure we set the locale on Mac and it is UTF-8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1784
diff changeset
12063 */
9a32d4216f24 Make sure we set the locale on Mac and it is UTF-8.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1784
diff changeset
12064 setlocale(LC_ALL, lang && strstr(lang, ".UTF-8") ? lang : "UTF-8");
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
12065 /* Create the application object */
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
12066 DWApp = [NSApplication sharedApplication];
1843
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
12067 DWAppDel *del = [[DWAppDel alloc] init];
2fe7fca61236 Added support for trapping the Mac Quit handler by using DW_DESKTOP as
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1825
diff changeset
12068 [DWApp setDelegate:del];
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
12069 /* Create object for handling timers */
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
12070 DWHandler = [[DWTimerHandler alloc] init];
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12071 /* If we aren't using garbage collection we need autorelease pools */
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12072 #if !defined(GARBAGE_COLLECT)
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12073 pthread_key_create(&_dw_pool_key, NULL);
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
12074 pool = [[NSAutoreleasePool alloc] init];
726
ecf47778caff Possible fix for container string columns not showing correctly.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 725
diff changeset
12075 pthread_setspecific(_dw_pool_key, pool);
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12076 #endif
826
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
12077 pthread_key_create(&_dw_fg_color_key, NULL);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
12078 pthread_key_create(&_dw_bg_color_key, NULL);
6bb8bff36548 Implemented thread specific colors. Allows threads to have their own colors... also reducing color object recreation.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 825
diff changeset
12079 _init_colors();
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12080 /* Create a default main menu, with just the application menu */
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
12081 DWMainMenu = _generate_main_menu();
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
12082 [DWMainMenu retain];
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
12083 [DWApp setMainMenu:DWMainMenu];
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
12084 DWObj = [[DWObject alloc] init];
744
9882b0dfa304 Added an internal Mac function for setting the default Dynamic Windows font.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 743
diff changeset
12085 DWDefaultFont = nil;
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
12086 #ifdef BUILDING_FOR_MOJAVE
2067
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
12087 if (@available(macOS 10.14, *))
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
12088 {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
12089 [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:UNAuthorizationOptionAlert
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
12090 completionHandler:^(BOOL granted, NSError * _Nullable error) {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
12091 if (!granted) {
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
12092 NSLog(@"Unable to get notification permission.");
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
12093 }
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
12094 }];
3ccd0da07514 Mac: Initial notification support for the Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2064
diff changeset
12095 }
1955
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
12096 _DWDirtyDrawables = [[NSMutableArray alloc] init];
91541efcea10 Mac: Complete refactoring of the Mac code using a handful of macros.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1954
diff changeset
12097 #else
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12098 /* Create mutexes for thread safety */
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12099 DWRunMutex = dw_mutex_new();
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12100 DWThreadMutex = dw_mutex_new();
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12101 DWThreadMutex2 = dw_mutex_new();
1954
85229fe9ae5a Mac: 10.14 doesn't like too many needsDisplays so instead we keep a list of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1953
diff changeset
12102 #endif
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12103 /* Use NSThread to start a dummy thread to initialize the threading subsystem */
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
12104 NSThread *thread = [[ NSThread alloc] initWithTarget:DWObj selector:@selector(uselessThread:) object:nil];
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
12105 [thread start];
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12106 [thread release];
859
80a88c91ccf6 Implemented vertical centering on text fields.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 858
diff changeset
12107 [NSTextField setCellClass:[DWTextFieldCell class]];
2070
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
12108 if(!_dw_app_id[0])
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
12109 {
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
12110 /* Generate an Application ID based on the PID if all else fails. */
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
12111 snprintf(_dw_app_id, 100, "%s.pid.%d", DW_APP_DOMAIN_DEFAULT, getpid());
370baf78abdc Mac: Added dw_app_id_set() and updates to generate the APP ID automatically.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2067
diff changeset
12112 }
736
5b48519a7fb2 Added retains to the window menus so they don't get autoreleased when switching between
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 735
diff changeset
12113 return 0;
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12114 }
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12115
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12116 /*
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12117 * Allocates a shared memory region with a name.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12118 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12119 * handle: A pointer to receive a SHM identifier.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12120 * dest: A pointer to a pointer to receive the memory address.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12121 * size: Size in bytes of the shared memory region to allocate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12122 * name: A string pointer to a unique memory name.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12123 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
12124 HSHM dw_named_memory_new(void **dest, int size, const char *name)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12125 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
12126 char namebuf[1025] = {0};
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12127 struct _dw_unix_shm *handle = malloc(sizeof(struct _dw_unix_shm));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12128
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12129 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
12130 snprintf(namebuf, 1024, "/tmp/.dw/%s", name);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12131
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12132 if((handle->fd = open(namebuf, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) < 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12133 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12134 free(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12135 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12136 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12137
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12138 ftruncate(handle->fd, size);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12139
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12140 /* attach the shared memory segment to our process's address space. */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12141 *dest = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd, 0);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12142
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12143 if(*dest == MAP_FAILED)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12144 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12145 close(handle->fd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12146 *dest = NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12147 free(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12148 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12149 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12150
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12151 handle->size = size;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12152 handle->sid = getsid(0);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12153 handle->path = strdup(namebuf);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12154
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12155 return handle;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12156 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12157
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12158 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12159 * Aquires shared memory region with a name.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12160 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12161 * dest: A pointer to a pointer to receive the memory address.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12162 * size: Size in bytes of the shared memory region to requested.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12163 * name: A string pointer to a unique memory name.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12164 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
12165 HSHM dw_named_memory_get(void **dest, int size, const char *name)
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12166 {
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
12167 char namebuf[1025];
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12168 struct _dw_unix_shm *handle = malloc(sizeof(struct _dw_unix_shm));
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12169
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12170 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
1306
dbd507f42947 Added dw_debug() logging function which will output a message to the debugging console.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1303
diff changeset
12171 snprintf(namebuf, 1024, "/tmp/.dw/%s", name);
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12172
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12173 if((handle->fd = open(namebuf, O_RDWR)) < 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12174 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12175 free(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12176 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12177 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12178
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12179 /* attach the shared memory segment to our process's address space. */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12180 *dest = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd, 0);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12181
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12182 if(*dest == MAP_FAILED)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12183 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12184 close(handle->fd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12185 *dest = NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12186 free(handle);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12187 return NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12188 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12189
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12190 handle->size = size;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12191 handle->sid = -1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12192 handle->path = NULL;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12193
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12194 return handle;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12195 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12196
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12197 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12198 * Frees a shared memory region previously allocated.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12199 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12200 * handle: Handle obtained from DB_named_memory_allocate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12201 * ptr: The memory address aquired with DB_named_memory_allocate.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12202 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12203 int dw_named_memory_free(HSHM handle, void *ptr)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12204 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12205 struct _dw_unix_shm *h = handle;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12206 int rc = munmap(ptr, h->size);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12207
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12208 close(h->fd);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12209 if(h->path)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12210 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12211 /* Only remove the actual file if we are the
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12212 * creator of the file.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12213 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12214 if(h->sid != -1 && h->sid == getsid(0))
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12215 remove(h->path);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12216 free(h->path);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12217 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12218 return rc;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12219 }
697
830e1f3672b9 Added draining mechanism for threads that don't have run loops.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 696
diff changeset
12220
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12221 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12222 * Creates a new thread with a starting point of func.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12223 * Parameters:
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12224 * func: Function which will be run in the new thread.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12225 * data: Parameter(s) passed to the function.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12226 * stack: Stack size of new thread (OS/2 and Windows only).
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12227 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12228 DWTID dw_thread_new(void *func, void *data, int stack)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12229 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12230 DWTID thread;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12231 void **tmp = malloc(sizeof(void *) * 2);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12232 int rc;
650
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12233
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12234 tmp[0] = func;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12235 tmp[1] = data;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12236
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12237 rc = pthread_create(&thread, NULL, (void *)_dwthreadstart, (void *)tmp);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12238 if(rc == 0)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12239 return thread;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12240 return (DWTID)-1;
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12241 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12242
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12243 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12244 * Ends execution of current thread immediately.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12245 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12246 void dw_thread_end(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12247 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12248 pthread_exit(NULL);
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12249 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12250
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12251 /*
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12252 * Returns the current thread's ID.
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12253 */
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12254 DWTID dw_thread_id(void)
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12255 {
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12256 return (DWTID)pthread_self();
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12257 }
55b677d460e9 Added initial support for a MacOS Cocoa port.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12258
661
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12259 /*
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12260 * Execute and external program in a seperate session.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12261 * Parameters:
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12262 * program: Program name with optional path.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12263 * type: Either DW_EXEC_CON or DW_EXEC_GUI.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12264 * params: An array of pointers to string arguements.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12265 * Returns:
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12266 * -1 on error.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12267 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
12268 int dw_exec(const char *program, int type, char **params)
661
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12269 {
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12270 int ret = -1;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
12271
738
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
12272 if(type == DW_EXEC_GUI)
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
12273 {
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
12274 if(params && params[0] && params[1])
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
12275 {
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
12276 [[NSWorkspace sharedWorkspace] openFile:[NSString stringWithUTF8String:params[1]]
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
12277 withApplication:[NSString stringWithUTF8String:program]];
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
12278 }
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
12279 else
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
12280 {
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
12281 [[NSWorkspace sharedWorkspace] launchApplication:[NSString stringWithUTF8String:program]];
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
12282 }
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
12283 return 0;
52d5ed00f892 Use NSWorkplace to launch GUI applications instead of fork() and exec().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 737
diff changeset
12284 }
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
12285
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12286 if((ret = fork()) == 0)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12287 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12288 int i;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
12289
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12290 for (i = 3; i < 256; i++)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12291 close(i);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12292 setsid();
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
12293
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12294 if(type == DW_EXEC_CON)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12295 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12296 char **tmpargs;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
12297
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12298 if(!params)
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12299 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12300 tmpargs = malloc(sizeof(char *));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12301 tmpargs[0] = NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12302 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12303 else
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12304 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12305 int z = 0;
762
2aaa3f67cfb1 Fix for crashes with generating images from data
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 760
diff changeset
12306
752
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12307 while(params[z])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12308 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12309 z++;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12310 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12311 tmpargs = malloc(sizeof(char *)*(z+3));
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12312 z=0;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12313 tmpargs[0] = "xterm";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12314 tmpargs[1] = "-e";
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12315 while(params[z])
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12316 {
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12317 tmpargs[z+2] = params[z];
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12318 z++;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12319 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12320 tmpargs[z+2] = NULL;
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12321 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12322 execvp("xterm", tmpargs);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12323 free(tmpargs);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12324 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12325 /* If we got here exec failed */
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12326 _exit(-1);
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12327 }
cf447811d322 Converted tabs to spaces.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 751
diff changeset
12328 return ret;
661
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12329 }
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12330
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12331 /*
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12332 * Loads a web browser pointed at the given URL.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12333 * Parameters:
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12334 * url: Uniform resource locator.
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12335 */
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
12336 int dw_browse(const char *url)
661
eee90a788876 Added missing functions needed to build HandyFTP.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 660
diff changeset
12337 {
715
5f8102bd7646 dw_browse() reimplmented so it actually works as expected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 714
diff changeset
12338 NSURL *myurl = [NSURL URLWithString:[NSString stringWithUTF8String:url]];
5f8102bd7646 dw_browse() reimplmented so it actually works as expected.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 714
diff changeset
12339 [[NSWorkspace sharedWorkspace] openURL:myurl];
1115
03cd2f3e929d Fixed a documentation and template error regarding dw_browse() return code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1110
diff changeset
12340 return DW_ERROR_NONE;
03cd2f3e929d Fixed a documentation and template error regarding dw_browse() return code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1110
diff changeset
12341 }
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12342
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12343 typedef struct _dwprint
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12344 {
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12345 NSPrintInfo *pi;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12346 int (*drawfunc)(HPRINT, HPIXMAP, int, void *);
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12347 void *drawdata;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12348 unsigned long flags;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12349 } DWPrint;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12350
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12351 /*
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12352 * Creates a new print object.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12353 * Parameters:
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
12354 * jobname: Name of the print job to show in the queue.
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12355 * flags: Flags to initially configure the print object.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12356 * pages: Number of pages to print.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12357 * drawfunc: The pointer to the function to be used as the callback.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12358 * drawdata: User data to be passed to the handler function.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12359 * Returns:
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12360 * A handle to the print object or NULL on failure.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12361 */
2037
a00e73284c97 Mac: Continuing const changes. Hopefully last Mac commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2035
diff changeset
12362 HPRINT API dw_print_new(const char *jobname, unsigned long flags, unsigned int pages, void *drawfunc, void *drawdata)
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12363 {
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12364 DWPrint *print;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12365 NSPrintPanel *panel;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12366 PMPrintSettings settings;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12367 NSPrintInfo *pi;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12368
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12369 if(!drawfunc || !(print = calloc(1, sizeof(DWPrint))))
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12370 {
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12371 return NULL;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12372 }
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12373
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
12374 if(!jobname)
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
12375 jobname = "Dynamic Windows Print Job";
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12376
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12377 print->drawfunc = drawfunc;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12378 print->drawdata = drawdata;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12379 print->flags = flags;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12380
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12381 /* Get the page range */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12382 pi = [NSPrintInfo sharedPrintInfo];
1237
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
12383 [pi setHorizontalPagination:NSFitPagination];
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
12384 [pi setHorizontallyCentered:YES];
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
12385 [pi setVerticalPagination:NSFitPagination];
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
12386 [pi setVerticallyCentered:YES];
1903
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
12387 [pi setOrientation:DWPaperOrientationPortrait];
1237
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
12388 [pi setLeftMargin:0.0];
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
12389 [pi setRightMargin:0.0];
f8673299ec37 Ok if we setup the print information on Mac we get a better size...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1236
diff changeset
12390 [pi setTopMargin:0.0];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12391 [pi setBottomMargin:0.0];
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12392
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12393 settings = [pi PMPrintSettings];
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12394 PMSetPageRange(settings, 1, pages);
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12395 PMSetFirstPage(settings, 1, true);
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12396 PMSetLastPage(settings, pages, true);
1152
58b5374355ab Added print jobname parameter to dw_print_new().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1147
diff changeset
12397 PMPrintSettingsSetJobName(settings, (CFStringRef)[NSString stringWithUTF8String:jobname]);
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12398 [pi updateFromPMPrintSettings];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12399
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12400 /* Create and show the print panel */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12401 panel = [NSPrintPanel printPanel];
1903
b94b4ad26a05 Minor fixes and changes to remove deprecation warnings in 10.10 and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1902
diff changeset
12402 if(!panel || [panel runModalWithPrintInfo:pi] == DWModalResponseCancel)
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12403 {
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12404 free(print);
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12405 return NULL;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12406 }
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12407 /* Put the print info from the panel into the operation */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12408 print->pi = pi;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12409
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12410 return print;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12411 }
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12412
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12413 /*
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12414 * Runs the print job, causing the draw page callbacks to fire.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12415 * Parameters:
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12416 * print: Handle to the print object returned by dw_print_new().
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12417 * flags: Flags to run the print job.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12418 * Returns:
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12419 * DW_ERROR_UNKNOWN on error or DW_ERROR_NONE on success.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12420 */
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12421 int API dw_print_run(HPRINT print, unsigned long flags)
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12422 {
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12423 DWPrint *p = print;
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
12424 NSBitmapImageRep *rep, *rep2;
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12425 NSPrintInfo *pi;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12426 NSPrintOperation *po;
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
12427 HPIXMAP pixmap, pixmap2;
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
12428 NSImage *image, *flipped;
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12429 NSImageView *iv;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12430 NSSize size;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12431 PMPrintSettings settings;
1143
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
12432 int x, result = DW_ERROR_UNKNOWN;
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12433 UInt32 start, end;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12434
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12435 if(!p)
1143
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
12436 return result;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12437
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
12438 DW_LOCAL_POOL_IN;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12439
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12440 /* Figure out the printer/paper size */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12441 pi = p->pi;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12442 size = [pi paperSize];
1234
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
12443
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
12444 /* Get the page range */
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
12445 settings = [pi PMPrintSettings];
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
12446 PMGetFirstPage(settings, &start);
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
12447 if(start > 0)
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
12448 start--;
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
12449 PMGetLastPage(settings, &end);
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
12450 PMSetPageRange(settings, 1, 1);
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
12451 PMSetFirstPage(settings, 1, true);
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
12452 PMSetLastPage(settings, 1, true);
bee6fc8119ec Paper size reported on Mac height is for all pages...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1230
diff changeset
12453 [pi updateFromPMPrintSettings];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12454
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12455 /* Create an image view to print and a pixmap to draw into */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12456 iv = [[NSImageView alloc] init];
1143
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
12457 pixmap = dw_pixmap_new(iv, (int)size.width, (int)size.height, 8);
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12458 rep = pixmap->image;
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
12459 pixmap2 = dw_pixmap_new(iv, (int)size.width, (int)size.height, 8);
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
12460 rep2 = pixmap2->image;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12461
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12462 /* Create an image with the data from the pixmap
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12463 * to go into the image view.
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12464 */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12465 image = [[NSImage alloc] initWithSize:[rep size]];
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
12466 flipped = [[NSImage alloc] initWithSize:[rep size]];
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12467 [image addRepresentation:rep];
1176
408ea33b19cf Ok fixed a problem with the last commit using the wrong representation on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1175
diff changeset
12468 [flipped addRepresentation:rep2];
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
12469 [iv setImage:flipped];
1902
74f50459c530 Fix some deprecations introduced in Mac OS X Yosemite 10.10...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1896
diff changeset
12470 [iv setImageScaling:NSImageScaleProportionallyDown];
1144
5878dbfafbe2 Need to size the NSImageView to print it apparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1143
diff changeset
12471 [iv setFrameOrigin:NSMakePoint(0,0)];
5878dbfafbe2 Need to size the NSImageView to print it apparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1143
diff changeset
12472 [iv setFrameSize:size];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12473
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12474 /* Create the print operation using the image view and
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12475 * print info obtained from the panel in the last call.
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12476 */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12477 po = [NSPrintOperation printOperationWithView:iv printInfo:pi];
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12478 [po setShowsPrintPanel:NO];
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12479
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12480 /* Cycle through each page */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12481 for(x=start; x<end && p->drawfunc; x++)
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12482 {
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12483 /* Call the application's draw function */
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12484 p->drawfunc(print, pixmap, x, p->drawdata);
1340
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12485 if(p->drawfunc)
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12486 {
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12487 /* Internal representation is flipped... so flip again so we can print */
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12488 _flip_image(image, rep2, size);
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12489 #ifdef DEBUG_PRINT
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12490 /* Save it to file to see what we have */
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12491 NSData *data = [rep2 representationUsingType: NSPNGFileType properties: nil];
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12492 [data writeToFile: @"print.png" atomically: NO];
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12493 #endif
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12494 /* Print the image view */
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12495 [po runOperation];
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12496 /* Fill the pixmap with white in case we are printing more pages */
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12497 dw_color_foreground_set(DW_CLR_WHITE);
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12498 dw_draw_rect(0, pixmap, TRUE, 0, 0, (int)size.width, (int)size.height);
890890c31ba6 Another printing cancel fix for the Mac and updated the readme.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1335
diff changeset
12499 }
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12500 }
1143
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
12501 if(p->drawfunc)
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
12502 result = DW_ERROR_NONE;
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12503 /* Free memory */
1144
5878dbfafbe2 Need to size the NSImageView to print it apparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1143
diff changeset
12504 [image release];
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
12505 [flipped release];
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12506 dw_pixmap_destroy(pixmap);
1175
eb4589ddff3e Added some test code to save what we are trying to print as a PNG on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1160
diff changeset
12507 dw_pixmap_destroy(pixmap2);
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12508 free(p);
1144
5878dbfafbe2 Need to size the NSImageView to print it apparently on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1143
diff changeset
12509 [iv release];
1582
728778634933 Performed a more thorough audit of functions on Mac that require local pools.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1580
diff changeset
12510 DW_LOCAL_POOL_OUT;
1143
b1b23de965d7 Fixed using a pointer after being free()ed on Windows and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1141
diff changeset
12511 return result;
1137
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12512 }
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12513
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12514 /*
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12515 * Cancels the print job, typically called from a draw page callback.
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12516 * Parameters:
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12517 * print: Handle to the print object returned by dw_print_new().
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12518 */
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12519 void API dw_print_cancel(HPRINT print)
e24e5a13ff2c Added code to test the new print functions in dwtest.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1135
diff changeset
12520 {
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12521 DWPrint *p = print;
1802
aedf5903db0a Add DW_FCF_TEXTURED window style; relevant only for Mac port.
mhessling@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1795
diff changeset
12522
1141
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12523 if(p)
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12524 p->drawfunc = NULL;
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12525 }
8d8c73fb27f4 Initial implementation of printing support on Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1137
diff changeset
12526
1783
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12527 /*
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12528 * Converts a UTF-8 encoded string into a wide string.
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12529 * Parameters:
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12530 * utf8string: UTF-8 encoded source string.
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12531 * Returns:
1784
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
12532 * Wide string that needs to be freed with dw_free()
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
12533 * or NULL on failure.
1783
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12534 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
12535 wchar_t * API dw_utf8_to_wchar(const char *utf8string)
1783
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12536 {
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12537 size_t buflen = strlen(utf8string) + 1;
1784
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
12538 wchar_t *temp = malloc(buflen * sizeof(wchar_t));
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
12539 if(temp)
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
12540 mbstowcs(temp, utf8string, buflen);
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
12541 return temp;
1783
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12542 }
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12543
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12544 /*
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12545 * Converts a wide string into a UTF-8 encoded string.
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12546 * Parameters:
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12547 * wstring: Wide source string.
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12548 * Returns:
1784
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
12549 * UTF-8 encoded string that needs to be freed with dw_free()
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
12550 * or NULL on failure.
1783
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12551 */
2035
ea303d356419 Mac: Const changes to match the Windows changes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2032
diff changeset
12552 char * API dw_wchar_to_utf8(const wchar_t *wstring)
1783
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12553 {
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12554 size_t bufflen = 8 * wcslen(wstring) + 1;
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12555 char *temp = malloc(bufflen);
1784
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
12556 if(temp)
86ace55df07b Added UTF8/Wide conversion functions on OS/2 and Windows...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1783
diff changeset
12557 wcstombs(temp, wstring, bufflen);
1783
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12558 return temp;
9de6d1cc8fb8 Put test program code into DEPRECATED #ifdef again to avoid build warnings.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 1782
diff changeset
12559 }