annotate gtk4/dw.c @ 2757:b91bc30d0e4a

GTK4: dw_menu_popup() coordinates are relative to the parent window. The coordinates in the context events in GTK4 had been relative to the container or tree widget, causing the menu to popup in offset locations. Added a function to convert from the widget coordinate to the window. The events now pass window relative coordinates so when passed to dw_menu_popup() the menu appears in about the right location.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 03 Jan 2022 15:45:15 +0000
parents ee1cfa7d645e
children e1b5dbec0796
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2 * Dynamic Windows:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3 * A GTK like cross-platform GUI
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4 * GTK4 forwarder module for portabilty.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5 *
2751
ee1cfa7d645e Update copyright dates for the new year 2022.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2744
diff changeset
6 * (C) 2000-2022 Brian Smith <brian@dbsoft.org>
ee1cfa7d645e Update copyright dates for the new year 2022.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2744
diff changeset
7 * (C) 2003-2022 Mark Hessling <mark@rexx.org>
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9 #include "dwconfig.h"
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10 #include "dw.h"
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11 #include <glib/gi18n.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12 #include <string.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
13 #include <stdlib.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
14 #include <sys/utsname.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
15 #include <sys/socket.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
16 #include <sys/un.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
17 #include <sys/mman.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
18 #include <stdarg.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
19 #include <stdio.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
20 #include <unistd.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
21 #include <ctype.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
22 #include <errno.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
23 #include <sys/time.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
24 #include <dirent.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
25 #include <sys/stat.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
26 #include <signal.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
27 #include <fcntl.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
28 #include <unistd.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
29 #include <math.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
30 #include <gdk/gdkkeysyms.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
31
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
32 #ifdef GDK_WINDOWING_X11
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
33 #include <gdk/x11/gdkx.h>
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
34 #endif
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
35
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
36 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
37 #include <webkit2/webkit2.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
38 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
39
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
40 #include <gdk-pixbuf/gdk-pixbuf.h>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
41
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
42 #if __STDC_VERSION__ < 199901L
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
43 # if __GNUC__ >= 2
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
44 # define __func__ __FUNCTION__
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
45 # else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
46 # define __func__ "<unknown>"
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
47 # endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
48 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
49
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
50 /* Macros to encapsulate running functions on the main thread
2308
a9018bd91d04 GTK4: Fix DW_SIGNAL_ITEM_ENTER callbacks via the keyboard. Remove mouse
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2306
diff changeset
51 * #define _DW_SINGLE_THREADED to disable thread safety encapsulation.
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
52 * Parameters converted to a pointer array:
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
53 * [0] Pointer to the thread's event semaphore
2311
f6a6ea6b28fe Fix a minor typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2310
diff changeset
54 * [1] Pointer to the function's return value
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
55 * [2] Pointer to function parameter 1
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
56 * ...
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
57 */
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
58 #ifndef _DW_SINGLE_THREADED
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
59 #define DW_FUNCTION_DEFINITION(func, rettype, ...) gboolean _##func(void **_args); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
60 rettype API func(__VA_ARGS__) {
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
61 #define DW_FUNCTION_ADD_PARAM void **_args = alloca(sizeof(void *)*4); \
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
62 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
63 _args[1] = (void *)NULL; \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
64 _args[2] = (void *)pthread_getspecific(_dw_fg_color_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
65 _args[3] = (void *)pthread_getspecific(_dw_bg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
66 #define DW_FUNCTION_ADD_PARAM1(param1) void **_args = alloca(sizeof(void *)*5); \
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
67 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
68 _args[1] = (void *)NULL; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
69 _args[2] = (void *)&param1; \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
70 _args[3] = (void *)pthread_getspecific(_dw_fg_color_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
71 _args[4] = (void *)pthread_getspecific(_dw_bg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
72 #define DW_FUNCTION_ADD_PARAM2(param1, param2) void **_args = alloca(sizeof(void *)*6); \
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
73 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
74 _args[1] = (void *)NULL; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
75 _args[2] = (void *)&param1; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
76 _args[3] = (void *)&param2; \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
77 _args[4] = (void *)pthread_getspecific(_dw_fg_color_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
78 _args[5] = (void *)pthread_getspecific(_dw_bg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
79 #define DW_FUNCTION_ADD_PARAM3(param1, param2, param3) void **_args = alloca(sizeof(void *)*7); \
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
80 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
81 _args[1] = (void *)NULL; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
82 _args[2] = (void *)&param1; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
83 _args[3] = (void *)&param2; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
84 _args[4] = (void *)&param3; \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
85 _args[5] = (void *)pthread_getspecific(_dw_fg_color_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
86 _args[6] = (void *)pthread_getspecific(_dw_bg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
87 #define DW_FUNCTION_ADD_PARAM4(param1, param2, param3, param4) void **_args = alloca(sizeof(void *)*8); \
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
88 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
89 _args[1] = (void *)NULL; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
90 _args[2] = (void *)&param1; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
91 _args[3] = (void *)&param2; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
92 _args[4] = (void *)&param3; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
93 _args[5] = (void *)&param4; \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
94 _args[6] = (void *)pthread_getspecific(_dw_fg_color_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
95 _args[7] = (void *)pthread_getspecific(_dw_bg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
96 #define DW_FUNCTION_ADD_PARAM5(param1, param2, param3, param4, param5) void **_args = alloca(sizeof(void *)*9); \
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
97 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
98 _args[1] = (void *)NULL; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
99 _args[2] = (void *)&param1; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
100 _args[3] = (void *)&param2; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
101 _args[4] = (void *)&param3; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
102 _args[5] = (void *)&param4; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
103 _args[6] = (void *)&param5; \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
104 _args[7] = (void *)pthread_getspecific(_dw_fg_color_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
105 _args[8] = (void *)pthread_getspecific(_dw_bg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
106 #define DW_FUNCTION_ADD_PARAM6(param1, param2, param3, param4, param5, param6) \
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
107 void **_args = alloca(sizeof(void *)*10); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
108 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
109 _args[1] = (void *)NULL; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
110 _args[2] = (void *)&param1; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
111 _args[3] = (void *)&param2; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
112 _args[4] = (void *)&param3; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
113 _args[5] = (void *)&param4; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
114 _args[6] = (void *)&param5; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
115 _args[7] = (void *)&param6; \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
116 _args[8] = (void *)pthread_getspecific(_dw_fg_color_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
117 _args[9] = (void *)pthread_getspecific(_dw_bg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
118 #define DW_FUNCTION_ADD_PARAM7(param1, param2, param3, param4, param5, param6, param7) \
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
119 void **_args = alloca(sizeof(void *)*11); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
120 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
121 _args[1] = (void *)NULL; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
122 _args[2] = (void *)&param1; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
123 _args[3] = (void *)&param2; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
124 _args[4] = (void *)&param3; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
125 _args[5] = (void *)&param4; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
126 _args[6] = (void *)&param5; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
127 _args[7] = (void *)&param6; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
128 _args[8] = (void *)&param7; \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
129 _args[9] = (void *)pthread_getspecific(_dw_fg_color_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
130 _args[10] = (void *)pthread_getspecific(_dw_bg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
131 #define DW_FUNCTION_ADD_PARAM8(param1, param2, param3, param4, param5, param6, param7, param8) \
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
132 void **_args = alloca(sizeof(void *)*12); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
133 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
134 _args[1] = (void *)NULL; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
135 _args[2] = (void *)&param1; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
136 _args[3] = (void *)&param2; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
137 _args[4] = (void *)&param3; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
138 _args[5] = (void *)&param4; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
139 _args[6] = (void *)&param5; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
140 _args[7] = (void *)&param6; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
141 _args[8] = (void *)&param7; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
142 _args[9] = (void *)&param8; \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
143 _args[10] = (void *)pthread_getspecific(_dw_fg_color_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
144 _args[11] = (void *)pthread_getspecific(_dw_bg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
145 #define DW_FUNCTION_ADD_PARAM9(param1, param2, param3, param4, param5, param6, param7, param8, param9) \
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
146 void **_args = alloca(sizeof(void *)*13); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
147 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
148 _args[1] = (void *)NULL; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
149 _args[2] = (void *)&param1; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
150 _args[3] = (void *)&param2; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
151 _args[4] = (void *)&param3; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
152 _args[5] = (void *)&param4; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
153 _args[6] = (void *)&param5; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
154 _args[7] = (void *)&param6; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
155 _args[8] = (void *)&param7; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
156 _args[9] = (void *)&param8; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
157 _args[10] = (void *)&param9; \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
158 _args[11] = (void *)pthread_getspecific(_dw_fg_color_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
159 _args[12] = (void *)pthread_getspecific(_dw_bg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
160 #define DW_FUNCTION_ADD_PARAM10(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10) \
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
161 void **_args = alloca(sizeof(void *)*14); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
162 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
163 _args[1] = (void *)NULL; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
164 _args[2] = (void *)&param1; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
165 _args[3] = (void *)&param2; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
166 _args[4] = (void *)&param3; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
167 _args[5] = (void *)&param4; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
168 _args[6] = (void *)&param5; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
169 _args[7] = (void *)&param6; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
170 _args[8] = (void *)&param7; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
171 _args[9] = (void *)&param8; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
172 _args[10] = (void *)&param9; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
173 _args[11] = (void *)&param10; \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
174 _args[12] = (void *)pthread_getspecific(_dw_fg_color_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
175 _args[13] = (void *)pthread_getspecific(_dw_bg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
176 #define DW_FUNCTION_ADD_PARAM11(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11) \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
177 void **_args = alloca(sizeof(void *)*15); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
178 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
179 _args[1] = (void *)NULL; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
180 _args[2] = (void *)&param1; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
181 _args[3] = (void *)&param2; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
182 _args[4] = (void *)&param3; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
183 _args[5] = (void *)&param4; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
184 _args[6] = (void *)&param5; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
185 _args[7] = (void *)&param6; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
186 _args[8] = (void *)&param7; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
187 _args[9] = (void *)&param8; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
188 _args[10] = (void *)&param9; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
189 _args[11] = (void *)&param10; \
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
190 _args[12] = (void *)&param11; \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
191 _args[13] = (void *)pthread_getspecific(_dw_fg_color_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
192 _args[14] = (void *)pthread_getspecific(_dw_bg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
193 #define DW_FUNCTION_ADD_PARAM12(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12) \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
194 void **_args = alloca(sizeof(void *)*16); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
195 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
196 _args[1] = (void *)NULL; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
197 _args[2] = (void *)&param1; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
198 _args[3] = (void *)&param2; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
199 _args[4] = (void *)&param3; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
200 _args[5] = (void *)&param4; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
201 _args[6] = (void *)&param5; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
202 _args[7] = (void *)&param6; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
203 _args[8] = (void *)&param7; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
204 _args[9] = (void *)&param8; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
205 _args[10] = (void *)&param9; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
206 _args[11] = (void *)&param10; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
207 _args[12] = (void *)&param11; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
208 _args[13] = (void *)&param12; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
209 _args[14] = (void *)pthread_getspecific(_dw_fg_color_key); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
210 _args[15] = (void *)pthread_getspecific(_dw_bg_color_key);
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
211 #define DW_FUNCTION_RESTORE_PARAM1(param1, vartype1) \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
212 vartype1 param1 = *((vartype1 *)_args[2]); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
213 GdkRGBA * DW_UNUSED(_dw_fg_color) = (GdkRGBA *)_args[3]; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
214 GdkRGBA * DW_UNUSED(_dw_bg_color) = (GdkRGBA *)_args[4];
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
215 #define DW_FUNCTION_RESTORE_PARAM2(param1, vartype1, param2, vartype2) \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
216 vartype1 param1 = *((vartype1 *)_args[2]); \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
217 vartype2 param2 = *((vartype2 *)_args[3]); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
218 GdkRGBA * DW_UNUSED(_dw_fg_color) = (GdkRGBA *)_args[4]; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
219 GdkRGBA * DW_UNUSED(_dw_bg_color) = (GdkRGBA *)_args[5];
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
220 #define DW_FUNCTION_RESTORE_PARAM3(param1, vartype1, param2, vartype2, param3, vartype3) \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
221 vartype1 param1 = *((vartype1 *)_args[2]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
222 vartype2 param2 = *((vartype2 *)_args[3]); \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
223 vartype3 param3 = *((vartype3 *)_args[4]); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
224 GdkRGBA * DW_UNUSED(_dw_fg_color) = (GdkRGBA *)_args[5]; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
225 GdkRGBA * DW_UNUSED(_dw_bg_color) = (GdkRGBA *)_args[6];
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
226 #define DW_FUNCTION_RESTORE_PARAM4(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4) \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
227 vartype1 param1 = *((vartype1 *)_args[2]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
228 vartype2 param2 = *((vartype2 *)_args[3]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
229 vartype3 param3 = *((vartype3 *)_args[4]); \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
230 vartype4 param4 = *((vartype4 *)_args[5]); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
231 GdkRGBA * DW_UNUSED(_dw_fg_color) = (GdkRGBA *)_args[6]; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
232 GdkRGBA * DW_UNUSED(_dw_bg_color) = (GdkRGBA *)_args[7];
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
233 #define DW_FUNCTION_RESTORE_PARAM5(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5) \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
234 vartype1 param1 = *((vartype1 *)_args[2]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
235 vartype2 param2 = *((vartype2 *)_args[3]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
236 vartype3 param3 = *((vartype3 *)_args[4]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
237 vartype4 param4 = *((vartype4 *)_args[5]); \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
238 vartype5 param5 = *((vartype5 *)_args[6]); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
239 GdkRGBA * DW_UNUSED(_dw_fg_color) = (GdkRGBA *)_args[7]; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
240 GdkRGBA * DW_UNUSED(_dw_bg_color) = (GdkRGBA *)_args[8];
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
241 #define DW_FUNCTION_RESTORE_PARAM6(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6) \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
242 vartype1 param1 = *((vartype1 *)_args[2]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
243 vartype2 param2 = *((vartype2 *)_args[3]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
244 vartype3 param3 = *((vartype3 *)_args[4]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
245 vartype4 param4 = *((vartype4 *)_args[5]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
246 vartype5 param5 = *((vartype5 *)_args[6]); \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
247 vartype6 param6 = *((vartype6 *)_args[7]); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
248 GdkRGBA * DW_UNUSED(_dw_fg_color) = (GdkRGBA *)_args[8]; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
249 GdkRGBA * DW_UNUSED(_dw_bg_color) = (GdkRGBA *)_args[9];
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
250 #define DW_FUNCTION_RESTORE_PARAM7(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7) \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
251 vartype1 param1 = *((vartype1 *)_args[2]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
252 vartype2 param2 = *((vartype2 *)_args[3]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
253 vartype3 param3 = *((vartype3 *)_args[4]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
254 vartype4 param4 = *((vartype4 *)_args[5]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
255 vartype5 param5 = *((vartype5 *)_args[6]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
256 vartype6 param6 = *((vartype6 *)_args[7]); \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
257 vartype7 param7 = *((vartype7 *)_args[8]); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
258 GdkRGBA * DW_UNUSED(_dw_fg_color) = (GdkRGBA *)_args[9]; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
259 GdkRGBA * DW_UNUSED(_dw_bg_color) = (GdkRGBA *)_args[10];
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
260 #define DW_FUNCTION_RESTORE_PARAM8(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8) \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
261 vartype1 param1 = *((vartype1 *)_args[2]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
262 vartype2 param2 = *((vartype2 *)_args[3]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
263 vartype3 param3 = *((vartype3 *)_args[4]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
264 vartype4 param4 = *((vartype4 *)_args[5]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
265 vartype5 param5 = *((vartype5 *)_args[6]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
266 vartype6 param6 = *((vartype6 *)_args[7]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
267 vartype7 param7 = *((vartype7 *)_args[8]); \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
268 vartype8 param8 = *((vartype8 *)_args[9]); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
269 GdkRGBA * DW_UNUSED(_dw_fg_color) = (GdkRGBA *)_args[10]; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
270 GdkRGBA * DW_UNUSED(_dw_bg_color) = (GdkRGBA *)_args[11];
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
271 #define DW_FUNCTION_RESTORE_PARAM9(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8, param9, vartype9) \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
272 vartype1 param1 = *((vartype1 *)_args[2]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
273 vartype2 param2 = *((vartype2 *)_args[3]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
274 vartype3 param3 = *((vartype3 *)_args[4]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
275 vartype4 param4 = *((vartype4 *)_args[5]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
276 vartype5 param5 = *((vartype5 *)_args[6]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
277 vartype6 param6 = *((vartype6 *)_args[7]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
278 vartype7 param7 = *((vartype7 *)_args[8]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
279 vartype8 param8 = *((vartype8 *)_args[9]); \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
280 vartype9 param9 = *((vartype9 *)_args[10]); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
281 GdkRGBA * DW_UNUSED(_dw_fg_color) = (GdkRGBA *)_args[11]; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
282 GdkRGBA * DW_UNUSED(_dw_bg_color) = (GdkRGBA *)_args[12];
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
283 #define DW_FUNCTION_RESTORE_PARAM10(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8, param9, vartype9, param10, vartype10) \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
284 vartype1 param1 = *((vartype1 *)_args[2]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
285 vartype2 param2 = *((vartype2 *)_args[3]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
286 vartype3 param3 = *((vartype3 *)_args[4]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
287 vartype4 param4 = *((vartype4 *)_args[5]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
288 vartype5 param5 = *((vartype5 *)_args[6]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
289 vartype6 param6 = *((vartype6 *)_args[7]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
290 vartype7 param7 = *((vartype7 *)_args[8]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
291 vartype8 param8 = *((vartype8 *)_args[9]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
292 vartype9 param9 = *((vartype9 *)_args[10]); \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
293 vartype10 param10 = *((vartype10 *)_args[11]); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
294 GdkRGBA * DW_UNUSED(_dw_fg_color) = (GdkRGBA *)_args[12]; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
295 GdkRGBA * DW_UNUSED(_dw_bg_color) = (GdkRGBA *)_args[13];
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
296 #define DW_FUNCTION_RESTORE_PARAM11(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8, param9, vartype9, param10, vartype10, param11, vartype11) \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
297 vartype1 param1 = *((vartype1 *)_args[2]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
298 vartype2 param2 = *((vartype2 *)_args[3]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
299 vartype3 param3 = *((vartype3 *)_args[4]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
300 vartype4 param4 = *((vartype4 *)_args[5]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
301 vartype5 param5 = *((vartype5 *)_args[6]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
302 vartype6 param6 = *((vartype6 *)_args[7]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
303 vartype7 param7 = *((vartype7 *)_args[8]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
304 vartype8 param8 = *((vartype8 *)_args[9]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
305 vartype9 param9 = *((vartype9 *)_args[10]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
306 vartype10 param10 = *((vartype10 *)_args[11]); \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
307 vartype11 param11 = *((vartype11 *)_args[12]); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
308 GdkRGBA * DW_UNUSED(_dw_fg_color) = (GdkRGBA *)_args[13]; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
309 GdkRGBA * DW_UNUSED(_dw_bg_color) = (GdkRGBA *)_args[14];
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
310 #define DW_FUNCTION_RESTORE_PARAM12(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8, param9, vartype9, param10, vartype10, param11, vartype11, param12, vartype12) \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
311 vartype1 param1 = *((vartype1 *)_args[2]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
312 vartype2 param2 = *((vartype2 *)_args[3]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
313 vartype3 param3 = *((vartype3 *)_args[4]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
314 vartype4 param4 = *((vartype4 *)_args[5]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
315 vartype5 param5 = *((vartype5 *)_args[6]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
316 vartype6 param6 = *((vartype6 *)_args[7]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
317 vartype7 param7 = *((vartype7 *)_args[8]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
318 vartype8 param8 = *((vartype8 *)_args[9]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
319 vartype9 param9 = *((vartype9 *)_args[10]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
320 vartype10 param10 = *((vartype10 *)_args[11]); \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
321 vartype11 param11 = *((vartype11 *)_args[12]); \
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
322 vartype12 param12 = *((vartype12 *)_args[13]); \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
323 GdkRGBA * DW_UNUSED(_dw_fg_color) = (GdkRGBA *)_args[14]; \
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
324 GdkRGBA * DW_UNUSED(_dw_bg_color) = (GdkRGBA *)_args[15];
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
325 #define DW_FUNCTION_END }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
326 #define DW_FUNCTION_NO_RETURN(func) dw_event_reset((HEV)_args[0]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
327 if(_dw_thread == (pthread_t)-1 || pthread_self() == _dw_thread) \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
328 _##func(_args); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
329 else { \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
330 g_idle_add_full(G_PRIORITY_HIGH_IDLE, G_SOURCE_FUNC(_##func), (gpointer)_args, NULL); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
331 dw_event_wait((HEV)_args[0], DW_TIMEOUT_INFINITE); } \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
332 }\
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
333 gboolean _##func(void **_args) {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
334 #define DW_FUNCTION_RETURN(func, rettype) dw_event_reset((HEV)_args[0]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
335 if(_dw_thread == (pthread_t)-1 || pthread_self() == _dw_thread) \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
336 _##func(_args); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
337 else { \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
338 g_idle_add_full(G_PRIORITY_HIGH_IDLE, G_SOURCE_FUNC(_##func), (gpointer)_args, NULL); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
339 dw_event_wait((HEV)_args[0], DW_TIMEOUT_INFINITE); } { \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
340 void *tmp = _args[1]; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
341 rettype myreturn = *((rettype *)tmp); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
342 free(tmp); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
343 return myreturn; } \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
344 } \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
345 gboolean _##func(void **_args) {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
346 #define DW_FUNCTION_RETURN_THIS(_retvar) { void *_myreturn = malloc(sizeof(_retvar)); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
347 memcpy(_myreturn, (void *)&_retvar, sizeof(_retvar)); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
348 _args[1] = _myreturn; } \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
349 dw_event_post((HEV)_args[0]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
350 return FALSE; }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
351 #define DW_FUNCTION_RETURN_NOTHING dw_event_post((HEV)_args[0]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
352 return FALSE; }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
353 #else
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
354 #define DW_FUNCTION_DEFINITION(func, rettype, ...) rettype API func(__VA_ARGS__)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
355 #define DW_FUNCTION_ADD_PARAM1(param1)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
356 #define DW_FUNCTION_ADD_PARAM2(param1, param2)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
357 #define DW_FUNCTION_ADD_PARAM3(param1, param2, param3)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
358 #define DW_FUNCTION_ADD_PARAM4(param1, param2, param3, param4)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
359 #define DW_FUNCTION_ADD_PARAM5(param1, param2, param3, param4, param5)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
360 #define DW_FUNCTION_ADD_PARAM6(param1, param2, param3, param4, param5, param6)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
361 #define DW_FUNCTION_ADD_PARAM7(param1, param2, param3, param4, param5, param6, param7)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
362 #define DW_FUNCTION_ADD_PARAM8(param1, param2, param3, param4, param5, param6, param7, param8)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
363 #define DW_FUNCTION_ADD_PARAM9(param1, param2, param3, param4, param5, param6, param7, param8, param9)
2312
ada8f7610df0 GTK4: Fix building with -D_DW_SINGLE_THREADED and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2311
diff changeset
364 #define DW_FUNCTION_ADD_PARAM10(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10)
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
365 #define DW_FUNCTION_ADD_PARAM11(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
366 #define DW_FUNCTION_ADD_PARAM12(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12)
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
367 #define DW_FUNCTION_RESTORE_PARAM1(param1, vartype1)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
368 #define DW_FUNCTION_RESTORE_PARAM2(param1, vartype1, param2, vartype2)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
369 #define DW_FUNCTION_RESTORE_PARAM3(param1, vartype1, param2, vartype2, param3, vartype3)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
370 #define DW_FUNCTION_RESTORE_PARAM4(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
371 #define DW_FUNCTION_RESTORE_PARAM5(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
372 #define DW_FUNCTION_RESTORE_PARAM6(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
373 #define DW_FUNCTION_RESTORE_PARAM7(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
374 #define DW_FUNCTION_RESTORE_PARAM8(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
375 #define DW_FUNCTION_RESTORE_PARAM9(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8, param9, vartype9)
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
376 #define DW_FUNCTION_RESTORE_PARAM10(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8, param9, vartype9, param10, vartype10)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
377 #define DW_FUNCTION_RESTORE_PARAM11(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8, param9, vartype9, param10, vartype10, param11, vartype11)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
378 #define DW_FUNCTION_RESTORE_PARAM12(param1, vartype1, param2, vartype2, param3, vartype3, param4, vartype4, param5, vartype5, param6, vartype6, param7, vartype7, param8, vartype8, param9, vartype9, param10, vartype10, param11, vartype11, param12, vartype12)
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
379 #define DW_FUNCTION_END
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
380 #define DW_FUNCTION_NO_RETURN(func)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
381 #define DW_FUNCTION_RETURN(func, rettype)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
382 #define DW_FUNCTION_RETURN_THIS(retvar) return retvar;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
383 #define DW_FUNCTION_RETURN_NOTHING
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
384 #endif
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
385
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
386 /* ff = 255 = 1.0000
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
387 * ee = 238 = 0.9333
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
388 * cc = 204 = 0.8000
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
389 * bb = 187 = 0.7333
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
390 * aa = 170 = 0.6667
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
391 * 77 = 119 = 0.4667
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
392 * 00 = 0 = 0.0000
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
393 */
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
394 GdkRGBA _dw_colors[] =
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
395 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
396 { 0.0000, 0.0000, 0.0000, 1.0 }, /* 0 black */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
397 { 0.7333, 0.0000, 0.0000, 1.0 }, /* 1 red */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
398 { 0.0000, 0.7333, 0.0000, 1.0 }, /* 2 green */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
399 { 0.6667, 0.6667, 0.0000, 1.0 }, /* 3 yellow */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
400 { 0.0000, 0.0000, 0.8000, 1.0 }, /* 4 blue */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
401 { 0.7333, 0.0000, 0.7333, 1.0 }, /* 5 magenta */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
402 { 0.0000, 0.7333, 0.7333, 1.0 }, /* 6 cyan */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
403 { 0.7333, 0.7333, 0.7333, 1.0 }, /* 7 white */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
404 { 0.4667, 0.4667, 0.4667, 1.0 }, /* 8 grey */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
405 { 1.0000, 0.0000, 0.0000, 1.0 }, /* 9 bright red */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
406 { 0.0000, 1.0000, 0.0000, 1.0 }, /* 10 bright green */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
407 { 0.9333, 0.9333, 0.0000, 1.0 }, /* 11 bright yellow */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
408 { 0.0000, 0.0000, 1.0000, 1.0 }, /* 12 bright blue */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
409 { 1.0000, 0.0000, 1.0000, 1.0 }, /* 13 bright magenta */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
410 { 0.0000, 0.9333, 0.9333, 1.0 }, /* 14 bright cyan */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
411 { 1.0000, 1.0000, 1.0000, 1.0 }, /* 15 bright white */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
412 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
413
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
414 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
415 * List those icons that have transparency first
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
416 */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
417 static char *_dw_image_exts[] =
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
418 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
419 ".xpm",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
420 ".png",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
421 ".ico",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
422 ".icns",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
423 ".gif",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
424 ".jpg",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
425 ".jpeg",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
426 ".tiff",
2312
ada8f7610df0 GTK4: Fix building with -D_DW_SINGLE_THREADED and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2311
diff changeset
427 ".bmp",
ada8f7610df0 GTK4: Fix building with -D_DW_SINGLE_THREADED and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2311
diff changeset
428 NULL
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
429 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
430
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
431 #ifndef max
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
432 # define max(a,b) (((a) > (b)) ? (a) : (b))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
433 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
434
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
435 #ifndef min
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
436 # define min(a,b) (((a) < (b)) ? (a) : (b))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
437 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
438
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
439 static pthread_key_t _dw_fg_color_key;
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
440 static pthread_key_t _dw_bg_color_key;
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
441 static pthread_key_t _dw_event_key;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
442
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
443 static pthread_t _dw_thread = (pthread_t)-1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
444
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
445 static GList *_dw_dirty_list = NULL;
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
446
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
447 #define _DW_TREE_TYPE_CONTAINER 1
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
448 #define _DW_TREE_TYPE_TREE 2
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
449 #define _DW_TREE_TYPE_LISTBOX 3
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
450 #define _DW_TREE_TYPE_COMBOBOX 4
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
451
2319
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
452 #define _DW_RESOURCE_PATH "/org/dbsoft/dwindows/resources/"
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
453
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
454 /* Signal forwarder prototypes */
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
455 static gint _dw_button_press_event(GtkGestureSingle *gesture, int n_press, double x, double y, gpointer data);
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
456 static gint _dw_button_release_event(GtkGestureSingle *gesture, int n_press, double x, double y, gpointer data);
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
457 static gint _dw_motion_notify_event(GtkEventControllerMotion *controller, double x, double y, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
458 static gboolean _dw_delete_event(GtkWidget *window, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
459 static gint _dw_key_press_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
460 static gint _dw_generic_event(GtkWidget *widget, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
461 static gint _dw_configure_event(GtkWidget *widget, int width, int height, gpointer data);
2309
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
462 static gint _dw_container_enter_event(GtkEventController *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data);
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
463 static gint _dw_combobox_select_event(GtkWidget *widget, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
464 static gint _dw_expose_event(GtkWidget *widget, cairo_t *cr, int width, int height, gpointer data);
2371
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
465 static void _dw_set_focus_event(GObject *window, GParamSpec *pspec, gpointer data);
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
466 static gint _dw_tree_context_event(GtkGestureSingle *gesture, int n_press, double x, double y, gpointer data);
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
467 static gint _dw_value_changed_event(GtkWidget *widget, gpointer user_data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
468 static gint _dw_tree_select_event(GtkTreeSelection *sel, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
469 static gint _dw_tree_expand_event(GtkTreeView *treeview, GtkTreeIter *arg1, GtkTreePath *arg2, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
470 static gint _dw_switch_page_event(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
471 static gint _dw_column_click_event(GtkWidget *widget, gpointer data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
472 #ifdef USE_WEBKIT
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
473 static void _dw_html_result_event(GObject *object, GAsyncResult *result, gpointer script_data);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
474 static void _dw_html_changed_event(WebKitWebView *web_view, WebKitLoadEvent load_event, gpointer data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
475 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
476 static void _dw_signal_disconnect(gpointer data, GClosure *closure);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
477
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
478 GObject *_DWObject = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
479 GApplication *_DWApp = NULL;
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
480 GMainLoop *_DWMainLoop = NULL;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
481 static char _dw_app_id[_DW_APP_ID_SIZE+1] = { 0 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
482 char *_DWDefaultFont = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
483 static char _dw_share_path[PATH_MAX+1] = { 0 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
484
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
485 typedef struct _dw_signal_list
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
486 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
487 void *func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
488 char name[30];
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
489 char gname[30];
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
490 GObject *(*setup)(struct _dw_signal_list *, GObject *, void *, void *, void *);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
491
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
492 } DWSignalList;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
493
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
494 /* Signal setup function prototypes */
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
495 GObject *_dw_key_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data);
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
496 GObject *_dw_button_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data);
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
497 GObject *_dw_mouse_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data);
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
498 GObject *_dw_motion_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data);
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
499 GObject *_dw_draw_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data);
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
500 GObject *_dw_value_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data);
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
501 GObject *_dw_tree_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data);
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
502 GObject *_dw_focus_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data);
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
503 #ifdef USE_WEBKIT
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
504 GObject *_dw_html_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data);
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
505 #endif
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
506
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
507 typedef struct
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
508 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
509 HWND window;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
510 void *func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
511 gpointer data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
512 gint cid;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
513 void *intfunc;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
514
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
515 } DWSignalHandler;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
516
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
517 /* A list of signal forwarders, to account for paramater differences. */
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
518 static DWSignalList DWSignalTranslate[] = {
2371
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
519 { _dw_configure_event, DW_SIGNAL_CONFIGURE, "resize", NULL },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
520 { _dw_key_press_event, DW_SIGNAL_KEY_PRESS, "key-pressed", _dw_key_setup },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
521 { _dw_button_press_event, DW_SIGNAL_BUTTON_PRESS, "pressed", _dw_mouse_setup },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
522 { _dw_button_release_event, DW_SIGNAL_BUTTON_RELEASE, "released", _dw_mouse_setup },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
523 { _dw_motion_notify_event, DW_SIGNAL_MOTION_NOTIFY, "motion", _dw_motion_setup },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
524 { _dw_delete_event, DW_SIGNAL_DELETE, "close-request", NULL },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
525 { _dw_expose_event, DW_SIGNAL_EXPOSE, "draw", _dw_draw_setup },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
526 { _dw_generic_event, DW_SIGNAL_CLICKED, "clicked", _dw_button_setup },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
527 { _dw_container_enter_event, DW_SIGNAL_ITEM_ENTER, "key-pressed", _dw_key_setup },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
528 { _dw_tree_context_event, DW_SIGNAL_ITEM_CONTEXT, "pressed", _dw_tree_setup },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
529 { _dw_combobox_select_event, DW_SIGNAL_LIST_SELECT, "changed", NULL },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
530 { _dw_tree_select_event, DW_SIGNAL_ITEM_SELECT, "changed", _dw_tree_setup },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
531 { _dw_set_focus_event, DW_SIGNAL_SET_FOCUS, "notify::is-active", _dw_focus_setup },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
532 { _dw_value_changed_event, DW_SIGNAL_VALUE_CHANGED, "value-changed", _dw_value_setup },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
533 { _dw_switch_page_event, DW_SIGNAL_SWITCH_PAGE, "switch-page", NULL },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
534 { _dw_column_click_event, DW_SIGNAL_COLUMN_CLICK, "activate", _dw_tree_setup },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
535 { _dw_tree_expand_event, DW_SIGNAL_TREE_EXPAND, "row-expanded", NULL },
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
536 #ifdef USE_WEBKIT
2371
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
537 { _dw_html_changed_event, DW_SIGNAL_HTML_CHANGED, "load-changed", NULL },
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
538 { _dw_html_result_event, DW_SIGNAL_HTML_RESULT, "", _dw_html_setup },
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
539 #endif
2371
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
540 { NULL, "", "", NULL }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
541 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
542
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
543 /* Alignment flags */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
544 #define DW_CENTER 0.5f
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
545 #define DW_LEFT 0.0f
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
546 #define DW_RIGHT 1.0f
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
547 #define DW_TOP 0.0f
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
548 #define DW_BOTTOM 1.0f
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
549
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
550 static void _dw_msleep(long period)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
551 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
552 #ifdef __sun__
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
553 /* usleep() isn't threadsafe on Solaris */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
554 struct timespec req;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
555
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
556 req.tv_sec = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
557 if(period >= 1000)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
558 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
559 req.tv_sec = (int)(period / 1000);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
560 period -= (req.tv_sec * 1000);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
561 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
562 req.tv_nsec = period * 10000000;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
563
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
564 nanosleep(&req, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
565 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
566 usleep(period * 1000);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
567 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
568 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
569
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
570 /* Finds the translation function for a given signal name */
2628
d3d8a93124f1 GTK4: Fix compilation after style standarization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2626
diff changeset
571 static DWSignalList _dw_findsignal(const char *signame)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
572 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
573 int z=0;
2628
d3d8a93124f1 GTK4: Fix compilation after style standarization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2626
diff changeset
574 static DWSignalList empty = {0};
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
575
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
576 while(DWSignalTranslate[z].func)
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
577 {
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
578 if(strcasecmp(signame, DWSignalTranslate[z].name) == 0)
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
579 return DWSignalTranslate[z];
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
580 z++;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
581 }
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
582 return empty;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
583 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
584
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
585 static DWSignalHandler _dw_get_signal_handler(gpointer data)
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
586 {
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
587 DWSignalHandler sh = {0};
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
588
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
589 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
590 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
591 void **params = (void **)data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
592 int counter = GPOINTER_TO_INT(params[0]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
593 GtkWidget *widget = (GtkWidget *)params[2];
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
594 char text[101] = {0};
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
595
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
596 snprintf(text, 100, "_dw_sigwindow%d", counter);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
597 sh.window = (HWND)g_object_get_data(G_OBJECT(widget), text);
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
598 snprintf(text, 100, "_dw_sigfunc%d", counter);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
599 sh.func = (void *)g_object_get_data(G_OBJECT(widget), text);
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
600 snprintf(text, 100, "_dw_intfunc%d", counter);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
601 sh.intfunc = (void *)g_object_get_data(G_OBJECT(widget), text);
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
602 snprintf(text, 100, "_dw_sigdata%d", counter);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
603 sh.data = g_object_get_data(G_OBJECT(widget), text);
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
604 snprintf(text, 100, "_dw_sigcid%d", counter);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
605 sh.cid = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), text));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
606 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
607 return sh;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
608 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
609
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
610 static void _dw_remove_signal_handler(GtkWidget *widget, int counter)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
611 {
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
612 char text[101] = {0};
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
613 gint cid;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
614
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
615 snprintf(text, 100, "_dw_sigcid%d", counter);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
616 cid = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), text));
2660
650f8b062317 GTK: Check the Connection ID is positive non-zero before removing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2628
diff changeset
617 if(cid > 0)
650f8b062317 GTK: Check the Connection ID is positive non-zero before removing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2628
diff changeset
618 g_signal_handler_disconnect(G_OBJECT(widget), cid);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
619 g_object_set_data(G_OBJECT(widget), text, NULL);
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
620 snprintf(text, 100, "_dw_sigwindow%d", counter);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
621 g_object_set_data(G_OBJECT(widget), text, NULL);
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
622 snprintf(text, 100, "_dw_sigfunc%d", counter);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
623 g_object_set_data(G_OBJECT(widget), text, NULL);
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
624 snprintf(text, 100, "_dw_intfunc%d", counter);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
625 g_object_set_data(G_OBJECT(widget), text, NULL);
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
626 snprintf(text, 100, "_dw_sigdata%d", counter);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
627 g_object_set_data(G_OBJECT(widget), text, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
628 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
629
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
630 static int _dw_set_signal_handler(GObject *object, HWND window, void *func, gpointer data, void *intfunc, void *discfunc)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
631 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
632 int counter = GPOINTER_TO_INT(g_object_get_data(object, "_dw_sigcounter"));
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
633 char text[101] = {0};
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
634
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
635 snprintf(text, 100, "_dw_sigwindow%d", counter);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
636 g_object_set_data(object, text, (gpointer)window);
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
637 snprintf(text, 100, "_dw_sigfunc%d", counter);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
638 g_object_set_data(object, text, (gpointer)func);
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
639 snprintf(text, 100, "_dw_intfunc%d", counter);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
640 g_object_set_data(object, text, (gpointer)intfunc);
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
641 snprintf(text, 100, "_dw_discfunc%d", counter);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
642 g_object_set_data(object, text, (gpointer)discfunc);
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
643 snprintf(text, 100, "_dw_sigdata%d", counter);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
644 g_object_set_data(object, text, (gpointer)data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
645
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
646 counter++;
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
647 g_object_set_data(object, "_dw_sigcounter", GINT_TO_POINTER(counter));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
648
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
649 return counter - 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
650 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
651
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
652 static void _dw_set_signal_handler_id(GObject *object, int counter, gint cid)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
653 {
2660
650f8b062317 GTK: Check the Connection ID is positive non-zero before removing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2628
diff changeset
654 if(cid > 0)
650f8b062317 GTK: Check the Connection ID is positive non-zero before removing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2628
diff changeset
655 {
2663
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
656 char text[101] = {0};
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
657
3b3be9f7f452 GTK3/4: Add some memory safety checks that were in GTK2 but missing from GTK 3/4.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2660
diff changeset
658 snprintf(text, 100, "_dw_sigcid%d", counter);
2660
650f8b062317 GTK: Check the Connection ID is positive non-zero before removing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2628
diff changeset
659 g_object_set_data(object, text, GINT_TO_POINTER(cid));
650f8b062317 GTK: Check the Connection ID is positive non-zero before removing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2628
diff changeset
660 }
650f8b062317 GTK: Check the Connection ID is positive non-zero before removing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2628
diff changeset
661 else
650f8b062317 GTK: Check the Connection ID is positive non-zero before removing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2628
diff changeset
662 dw_debug("WARNING: Dynamic Windows failed to connect signal.\n");
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
663 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
664
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
665 #ifdef USE_WEBKIT
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
666 static void _dw_html_result_event(GObject *object, GAsyncResult *result, gpointer script_data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
667 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
668 pthread_t saved_thread = _dw_thread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
669 WebKitJavascriptResult *js_result;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
670 JSCValue *value;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
671 GError *error = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
672 int (*htmlresultfunc)(HWND, int, char *, void *, void *) = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
673 gint handlerdata = GPOINTER_TO_INT(g_object_get_data(object, "_dw_html_result_id"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
674 void *user_data = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
675
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
676 _dw_thread = (pthread_t)-1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
677 if(handlerdata)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
678 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
679 DWSignalHandler work;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
680 void *params[3] = { GINT_TO_POINTER(handlerdata-1), 0, object };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
681
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
682 work = _dw_get_signal_handler(params);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
683
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
684 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
685 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
686 htmlresultfunc = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
687 user_data = work.data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
688 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
689 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
690
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
691 if(!(js_result = webkit_web_view_run_javascript_finish(WEBKIT_WEB_VIEW(object), result, &error)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
692 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
693 if(htmlresultfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
694 htmlresultfunc((HWND)object, DW_ERROR_UNKNOWN, error->message, script_data, user_data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
695 g_error_free (error);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
696 _dw_thread = saved_thread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
697 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
698 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
699
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
700 value = webkit_javascript_result_get_js_value(js_result);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
701 if(jsc_value_is_string(value))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
702 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
703 gchar *str_value = jsc_value_to_string(value);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
704 JSCException *exception = jsc_context_get_exception(jsc_value_get_context(value));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
705
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
706 if(htmlresultfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
707 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
708 if(exception)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
709 htmlresultfunc((HWND)object, DW_ERROR_UNKNOWN, (char *)jsc_exception_get_message(exception), script_data, user_data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
710 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
711 htmlresultfunc((HWND)object, DW_ERROR_NONE, str_value, script_data, user_data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
712 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
713 g_free (str_value);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
714 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
715 else if(htmlresultfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
716 htmlresultfunc((HWND)object, DW_ERROR_UNKNOWN, NULL, script_data, user_data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
717 webkit_javascript_result_unref (js_result);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
718 _dw_thread = saved_thread;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
719 }
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
720
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
721 static void _dw_html_changed_event(WebKitWebView *web_view, WebKitLoadEvent load_event, gpointer data)
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
722 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
723 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
724 char *location = (char *)webkit_web_view_get_uri(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
725 int status = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
726
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
727 switch (load_event) {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
728 case WEBKIT_LOAD_STARTED:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
729 status = DW_HTML_CHANGE_STARTED;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
730 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
731 case WEBKIT_LOAD_REDIRECTED:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
732 status = DW_HTML_CHANGE_REDIRECT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
733 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
734 case WEBKIT_LOAD_COMMITTED:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
735 status = DW_HTML_CHANGE_LOADING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
736 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
737 case WEBKIT_LOAD_FINISHED:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
738 status = DW_HTML_CHANGE_COMPLETE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
739 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
740 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
741 if(status && location && work.window && work.func)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
742 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
743 int (*htmlchangedfunc)(HWND, int, char *, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
744
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
745 htmlchangedfunc(work.window, status, location, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
746 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
747 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
748 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
749
2371
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
750 static void _dw_set_focus_event(GObject *window, GParamSpec *pspec, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
751 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
752 DWSignalHandler work = _dw_get_signal_handler(data);
2371
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
753 gboolean active;
2370
b18ef6c5b77a GTK4: The GtkWidget paramater to the activate-focus signal was removed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2369
diff changeset
754
2371
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
755 g_object_get(window, "is-active", &active, NULL);
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
756
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
757 if(active && work.window)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
758 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
759 int (*setfocusfunc)(HWND, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
760
2371
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
761 setfocusfunc(work.window, work.data);
67f98f3e47f4 GTK4: Switch from "activate-focus" to "notify::is-active" for DW_SIGNAL_SET_FOCUS.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2370
diff changeset
762 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
763 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
764
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
765 static gint _dw_button_press_event(GtkGestureSingle *gesture, int n_press, double x, double y, gpointer data)
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
766 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
767 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
768 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
769
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
770 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
771 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
772 int (*buttonfunc)(HWND, int, int, int, void *) = work.func;
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
773 int mybutton = gtk_gesture_single_get_current_button(gesture);
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
774
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
775 if(mybutton == 3)
2618
156ad91481eb WARNING: Standardize button press and release button parameter values.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2584
diff changeset
776 mybutton = DW_BUTTON2_MASK;
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
777 else if(mybutton == 2)
2618
156ad91481eb WARNING: Standardize button press and release button parameter values.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2584
diff changeset
778 mybutton = DW_BUTTON3_MASK;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
779
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
780 retval = buttonfunc(work.window, (int)x, (int)y, mybutton, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
781 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
782 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
783 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
784
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
785 static gint _dw_button_release_event(GtkGestureSingle *gesture, int n_press, double x, double y, gpointer data)
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
786 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
787 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
788 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
789
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
790 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
791 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
792 int (*buttonfunc)(HWND, int, int, int, void *) = work.func;
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
793 int mybutton = gtk_gesture_single_get_current_button(gesture);
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
794
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
795 if(mybutton == 3)
2618
156ad91481eb WARNING: Standardize button press and release button parameter values.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2584
diff changeset
796 mybutton = DW_BUTTON2_MASK;
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
797 else if(mybutton == 2)
2618
156ad91481eb WARNING: Standardize button press and release button parameter values.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2584
diff changeset
798 mybutton = DW_BUTTON3_MASK;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
799
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
800 retval = buttonfunc(work.window, (int)x, (int)y, mybutton, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
801 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
802 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
803 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
804
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
805 static gint _dw_motion_notify_event(GtkEventControllerMotion *controller, double x, double y, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
806 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
807 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
808 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
809
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
810 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
811 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
812 int (*motionfunc)(HWND, int, int, int, void *) = work.func;
2278
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
813 GdkEvent *event = gtk_event_controller_get_current_event(GTK_EVENT_CONTROLLER(controller));
2277
ba81894924cb GTK4: Changes to handle the now opaque GdkEvent structure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2276
diff changeset
814 GdkModifierType state = gdk_event_get_modifier_state(event);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
815 int keys = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
816
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
817 if (state & GDK_BUTTON1_MASK)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
818 keys = DW_BUTTON1_MASK;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
819 if (state & GDK_BUTTON3_MASK)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
820 keys |= DW_BUTTON2_MASK;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
821 if (state & GDK_BUTTON2_MASK)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
822 keys |= DW_BUTTON3_MASK;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
823
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
824 retval = motionfunc(work.window, (int)x, (int)y, keys, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
825 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
826 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
827 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
828
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
829 static gboolean _dw_delete_event(GtkWidget *window, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
830 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
831 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
832 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
833
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
834 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
835 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
836 int (*closefunc)(HWND, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
837
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
838 retval = closefunc(work.window, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
839 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
840 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
841 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
842
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
843 static gint _dw_key_press_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
844 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
845 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
846 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
847
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
848 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
849 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
850 int (*keypressfunc)(HWND, char, int, int, void *, char *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
851 guint32 unichar = gdk_keyval_to_unicode(keyval);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
852 char utf8[7] = { 0 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
853
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
854 g_unichar_to_utf8(unichar, utf8);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
855
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
856 retval = keypressfunc(work.window, (char)keycode, keyval,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
857 state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_ALT_MASK), work.data, utf8);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
858 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
859 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
860 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
861
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
862 static gint _dw_generic_event(GtkWidget *widget, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
863 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
864 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
865 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
866
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
867 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
868 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
869 int (*genericfunc)(HWND, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
870
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
871 retval = genericfunc(work.window, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
872 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
873 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
874 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
875
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
876 static gint _dw_configure_event(GtkWidget *widget, int width, int height, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
877 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
878 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
879 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
880
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
881 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
882 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
883 int (*sizefunc)(HWND, int, int, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
884
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
885 retval = sizefunc(work.window, width, height, work.data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
886 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
887 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
888 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
889
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
890 cairo_t *_dw_cairo_update(GtkWidget *widget, int width, int height)
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
891 {
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
892 cairo_t *wincr = g_object_get_data(G_OBJECT(widget), "_dw_cr");
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
893 cairo_surface_t *surface = g_object_get_data(G_OBJECT(widget), "_dw_cr_surface");
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
894
2365
77686ad495ba GTK3/4: Optimizing dirty list management. Keep list as short as possible.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2363
diff changeset
895 if(width == -1 && height == -1 && !wincr && g_list_find(_dw_dirty_list, widget) == NULL)
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
896 _dw_dirty_list = g_list_append(_dw_dirty_list, widget);
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
897
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
898 if(width == -1)
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
899 width = gtk_widget_get_width(widget);
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
900 if(height == -1)
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
901 height = gtk_widget_get_height(widget);
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
902
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
903 if(!surface || GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "_dw_width")) != width ||
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
904 GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "_dw_height")) != height)
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
905 {
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
906 if(surface)
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
907 cairo_surface_destroy(surface);
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
908 surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
909 /* Save the cairo context for use in the drawing functions */
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
910 g_object_set_data(G_OBJECT(widget), "_dw_cr_surface", (gpointer)surface);
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
911 g_object_set_data(G_OBJECT(widget), "_dw_width", GINT_TO_POINTER(width));
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
912 g_object_set_data(G_OBJECT(widget), "_dw_height", GINT_TO_POINTER(height));
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
913 }
2365
77686ad495ba GTK3/4: Optimizing dirty list management. Keep list as short as possible.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2363
diff changeset
914 #ifdef DW_USE_CACHED_CR
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
915 return wincr;
2365
77686ad495ba GTK3/4: Optimizing dirty list management. Keep list as short as possible.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2363
diff changeset
916 #else
77686ad495ba GTK3/4: Optimizing dirty list management. Keep list as short as possible.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2363
diff changeset
917 return NULL;
77686ad495ba GTK3/4: Optimizing dirty list management. Keep list as short as possible.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2363
diff changeset
918 #endif
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
919 }
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
920
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
921 static gint _dw_expose_event(GtkWidget *widget, cairo_t *cr, int width, int height, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
922 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
923 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
924
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
925 if(widget && GTK_IS_DRAWING_AREA(widget))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
926 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
927 DWExpose exp;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
928 int (*exposefunc)(HWND, DWExpose *, void *) = g_object_get_data(G_OBJECT(widget), "_dw_expose_func");
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
929
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
930 _dw_cairo_update(widget, width, height);
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
931
2365
77686ad495ba GTK3/4: Optimizing dirty list management. Keep list as short as possible.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2363
diff changeset
932 /* Remove the currently drawn widget from the dirty list */
77686ad495ba GTK3/4: Optimizing dirty list management. Keep list as short as possible.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2363
diff changeset
933 _dw_dirty_list = g_list_remove(_dw_dirty_list, widget);
77686ad495ba GTK3/4: Optimizing dirty list management. Keep list as short as possible.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2363
diff changeset
934
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
935 exp.x = exp.y = 0;
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
936 exp.width = width;
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
937 exp.height = height;
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
938 g_object_set_data(G_OBJECT(widget), "_dw_cr", (gpointer)cr);
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
939 retval = exposefunc((HWND)widget, &exp, data);
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
940 g_object_set_data(G_OBJECT(widget), "_dw_cr", NULL);
2363
d7688c3ec43f GTK4: Remove widget from dirty list during expose event.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2362
diff changeset
941
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
942 /* Copy the cached image to the output surface */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
943 cairo_set_source_surface(cr, g_object_get_data(G_OBJECT(widget), "_dw_cr_surface"), 0, 0);
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
944 cairo_rectangle(cr, 0, 0, width, height);
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
945 cairo_fill(cr);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
946 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
947 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
948 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
949
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
950 static gint _dw_combobox_select_event(GtkWidget *widget, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
951 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
952 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
953 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
954
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
955 if(g_object_get_data(G_OBJECT(widget), "_dw_recursing"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
956 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
957
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
958 if(work.window && GTK_IS_COMBO_BOX(widget))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
959 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
960 GtkTreeModel *store = gtk_combo_box_get_model(GTK_COMBO_BOX(widget));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
961
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
962 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
963 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
964 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
965 GtkTreePath *path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
966
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
967 g_object_set_data(G_OBJECT(widget), "_dw_recursing", GINT_TO_POINTER(1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
968
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
969 if(gtk_combo_box_get_active_iter(GTK_COMBO_BOX(widget), &iter))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
970 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
971 path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
972
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
973 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
974 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
975 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
976
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
977 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
978 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
979 int (*selectfunc)(HWND, int, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
980
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
981 retval = selectfunc(work.window, indices[0], work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
982 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
983 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
984 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
985 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
986
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
987 g_object_set_data(G_OBJECT(widget), "_dw_recursing", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
988 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
989 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
990 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
991 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
992
2757
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
993 /* Convert coordinate system from the widget to the window */
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
994 void _dw_event_coordinates_to_window(GtkWidget *widget, double *x, double *y)
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
995 {
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
996 GtkRoot *root = (widget && GTK_IS_WIDGET(widget)) ? gtk_widget_get_root(widget) : NULL;
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
997
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
998 if(root && GTK_IS_WIDGET(root))
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
999 {
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1000 GtkWidget *parent = GTK_WIDGET(root);
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1001
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1002 /* If the parent is a window, try to use the box attached to it... */
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1003 if(GTK_IS_WINDOW(parent))
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1004 {
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1005 GtkWidget *box = g_object_get_data(G_OBJECT(parent), "_dw_grid");
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1006
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1007 if(box && GTK_IS_GRID(box))
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1008 parent = box;
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1009 }
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1010
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1011 graphene_point_t *treepoint = graphene_point_init(graphene_point_alloc(), (float)*x, (float)*y);
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1012 graphene_point_t *windowpoint = graphene_point_alloc();
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1013
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1014 if(gtk_widget_compute_point(widget, GTK_WIDGET(root), treepoint, windowpoint))
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1015 {
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1016 *x = (double)windowpoint->x;
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1017 *y = (double)windowpoint->y;
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1018 }
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1019
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1020 graphene_point_free(treepoint);
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1021 graphene_point_free(windowpoint);
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1022 }
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1023 }
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1024
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1025 #define _DW_DATA_TYPE_STRING 0
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1026 #define _DW_DATA_TYPE_POINTER 1
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1027
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
1028 static gint _dw_tree_context_event(GtkGestureSingle *gesture, int n_press, double x, double y, gpointer data)
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
1029 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1030 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1031 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1032
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1033 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1034 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
1035 int button = gtk_gesture_single_get_current_button(gesture);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1036
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1037 if(button == 3)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1038 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1039 int (*contextfunc)(HWND, char *, int, int, void *, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1040 char *text = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1041 void *itemdata = NULL;
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
1042 GtkWidget *widget = work.window;
2757
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1043
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1044 _dw_event_coordinates_to_window(widget, &x, &y);
b91bc30d0e4a GTK4: dw_menu_popup() coordinates are relative to the parent window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2751
diff changeset
1045
2335
1d413d869fa2 GTK4: Trees/Containers were not passing correct data due to missing scrolled
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2334
diff changeset
1046 /* Containers and trees are inside scrolled window widgets */
1d413d869fa2 GTK4: Trees/Containers were not passing correct data due to missing scrolled
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2334
diff changeset
1047 if(GTK_IS_SCROLLED_WINDOW(widget))
1d413d869fa2 GTK4: Trees/Containers were not passing correct data due to missing scrolled
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2334
diff changeset
1048 widget = GTK_WIDGET(g_object_get_data(G_OBJECT(widget), "_dw_user"));
1d413d869fa2 GTK4: Trees/Containers were not passing correct data due to missing scrolled
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2334
diff changeset
1049
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1050 if(widget && GTK_IS_TREE_VIEW(widget))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1051 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1052 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1053 GtkTreeModel *store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1054 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1055
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1056 if(sel && gtk_tree_selection_get_mode(sel) != GTK_SELECTION_MULTIPLE &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1057 gtk_tree_selection_get_selected(sel, NULL, &iter))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1058 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1059 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1060 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1061 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, 2, &itemdata, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1062 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1063 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1064 {
2470
8f7c2f20c7c0 GTK4: Fill in the row data for contatiner context.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2441
diff changeset
1065 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, _DW_DATA_TYPE_POINTER, &itemdata, -1);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1066 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1067 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1068 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1069 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1070 GtkTreePath *path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1071
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1072 gtk_tree_view_get_cursor(GTK_TREE_VIEW(widget), &path, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1073 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1074 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1075 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1076
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1077 if(gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1078 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1079 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1080 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1081 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, 2, &itemdata, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1082 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1083 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1084 {
2470
8f7c2f20c7c0 GTK4: Fill in the row data for contatiner context.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2441
diff changeset
1085 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, _DW_DATA_TYPE_POINTER, &itemdata, -1);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1086 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1087 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1088 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1089 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1090 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1091 }
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
1092 retval = contextfunc(work.window, text, (int)x, (int)y, work.data, itemdata);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1093 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1094 g_free(text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1095 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1096 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1097 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1098 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1099
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1100 static gint _dw_tree_select_event(GtkTreeSelection *sel, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1101 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1102 GtkWidget *item = NULL, *widget = (GtkWidget *)gtk_tree_selection_get_tree_view(sel);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1103 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1104
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1105 if(widget)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1106 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1107 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1108
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1109 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1110 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1111 int (*treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1112 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1113 char *text = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1114 void *itemdata = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1115 GtkTreeModel *store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1116
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1117 if(g_object_get_data(G_OBJECT(widget), "_dw_double_click"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1118 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1119 g_object_set_data(G_OBJECT(widget), "_dw_double_click", GINT_TO_POINTER(0));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1120 return TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1121 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1122
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1123 if(gtk_tree_selection_get_mode(sel) != GTK_SELECTION_MULTIPLE &&
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1124 gtk_tree_selection_get_selected(sel, NULL, &iter))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1125 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1126 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1127 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1128 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, 2, &itemdata, 3, &item, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1129 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1130 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1131 else if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1132 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1133 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, _DW_DATA_TYPE_POINTER, &itemdata, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1134 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1135 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1136 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1137 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1138 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1139
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1140 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1141 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1142 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1143
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1144 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1145 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1146 int (*selectfunc)(HWND, int, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1147
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1148 retval = selectfunc(work.window, indices[0], work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1149 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1150 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1151 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1152 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1153 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1154 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1155 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1156 GtkTreePath *path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1157
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1158 gtk_tree_view_get_cursor(GTK_TREE_VIEW(widget), &path, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1159 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1160 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1161 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1162
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1163 if(gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1164 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1165 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1166 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1167 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, 2, &itemdata, 3, &item, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1168 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1169 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1170 else if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1171 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1172 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, _DW_DATA_TYPE_POINTER, &itemdata, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1173 retval = treeselectfunc(work.window, (HTREEITEM)item, text, work.data, itemdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1174 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1175 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1176 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1177 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1178
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1179 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1180 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1181 int (*selectfunc)(HWND, int, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1182
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1183 retval = selectfunc(work.window, indices[0], work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1184 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1185 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1186 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1187 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1188 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1189 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1190 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1191 g_free(text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1192 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1193 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1194 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1195 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1196
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1197 static gint _dw_tree_expand_event(GtkTreeView *widget, GtkTreeIter *iter, GtkTreePath *path, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1198 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1199 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1200 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1201
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1202 if(work.window)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1203 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1204 int (*treeexpandfunc)(HWND, HTREEITEM, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1205 retval = treeexpandfunc(work.window, (HTREEITEM)iter, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1206 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1207 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1208 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1209
2309
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
1210 static gint _dw_container_enter_event(GtkEventController *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1211 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1212 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1213 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1214
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1215 if(work.window && GTK_IS_WIDGET(work.window))
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1216 {
2309
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
1217 GtkWidget *user = GTK_WIDGET(g_object_get_data(G_OBJECT(work.window), "_dw_user"));
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
1218 GtkWidget *widget = user ? user : work.window;
2278
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
1219 GdkEvent *event = gtk_event_controller_get_current_event(GTK_EVENT_CONTROLLER(controller));
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
1220 GdkEventType type = gdk_event_get_event_type(event);
2308
a9018bd91d04 GTK4: Fix DW_SIGNAL_ITEM_ENTER callbacks via the keyboard. Remove mouse
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2306
diff changeset
1221 gint button = (type == GDK_BUTTON_PRESS) ? gdk_button_event_get_button(event) : -1;
a9018bd91d04 GTK4: Fix DW_SIGNAL_ITEM_ENTER callbacks via the keyboard. Remove mouse
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2306
diff changeset
1222
2309
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
1223 /* Handle both key and button events together */
2277
ba81894924cb GTK4: Changes to handle the now opaque GdkEvent structure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2276
diff changeset
1224 if((type == GDK_BUTTON_PRESS && button == 1) || keyval == VK_RETURN)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1225 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1226 int (*contextfunc)(HWND, char *, void *, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1227 char *text = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1228 void *data = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1229
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1230 /* Sanity check */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1231 if(GTK_IS_TREE_VIEW(widget))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1232 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1233 GtkTreePath *path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1234 GtkTreeModel *store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1235
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1236 gtk_tree_view_get_cursor(GTK_TREE_VIEW(widget), &path, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1237 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1238 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1239 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1240
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1241 if(gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1242 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1243 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1244 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1245 gtk_tree_model_get(store, &iter, _DW_DATA_TYPE_STRING, &text, _DW_DATA_TYPE_POINTER, &data, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1246 retval = contextfunc(work.window, text, work.data, data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1247 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1248 g_free(text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1249 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1250 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1251 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1252 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1253 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1254 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1255 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1256 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1257 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1258
2309
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
1259 /* Just forward to the other handler, with bogus key info */
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
1260 void _dw_container_enter_mouse(GtkEventController *controller, int n_press, double x, double y, gpointer data)
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
1261 {
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
1262 if(n_press == 2)
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
1263 _dw_container_enter_event(GTK_EVENT_CONTROLLER(controller), 0, 0, 0, data);
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
1264 }
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
1265
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1266 /* Return the logical page id from the physical page id */
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1267 int _dw_get_logical_page(HWND handle, unsigned long pageid)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1268 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1269 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1270 GtkWidget **pagearray = g_object_get_data(G_OBJECT(handle), "_dw_pagearray");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1271 GtkWidget *thispage = gtk_notebook_get_nth_page(GTK_NOTEBOOK(handle), pageid);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1272
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1273 if(pagearray && thispage)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1274 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1275 for(z=0;z<256;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1276 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1277 if(thispage == pagearray[z])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1278 return z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1279 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1280 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1281 return 256;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1282 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1283
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1284
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1285 static gint _dw_switch_page_event(GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1286 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1287 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1288 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1289
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1290 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1291 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1292 int (*switchpagefunc)(HWND, unsigned long, void *) = work.func;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1293 retval = switchpagefunc(work.window, _dw_get_logical_page(GTK_WIDGET(notebook), page_num), work.data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1294 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1295 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1296 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1297
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1298 static gint _dw_column_click_event(GtkWidget *widget, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1299 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1300 void **params = data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1301 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1302
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1303 if(params && params[2])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1304 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1305 GtkWidget *tree = (GtkWidget *)params[2];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1306 gint handlerdata = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(tree), "_dw_column_click_id"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1307
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1308 if(handlerdata)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1309 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1310 DWSignalHandler work;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1311
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1312 params[0] = GINT_TO_POINTER(handlerdata-1);
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
1313 work = _dw_get_signal_handler(params);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1314
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1315 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1316 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1317 int column_num = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "_dw_column"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1318 int (*clickcolumnfunc)(HWND, int, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1319 retval = clickcolumnfunc(work.window, column_num, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1320 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1321 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1322 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1323 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1324 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1325
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1326 static int _dw_round_value(gfloat val)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1327 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1328 int newval = (int)val;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1329
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1330 if(val >= 0.5 + (gfloat)newval)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1331 newval++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1332
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1333 return newval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1334 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1335
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1336 static gint _dw_value_changed_event(GtkWidget *widget, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1337 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1338 GtkWidget *slider, *spinbutton, *scrollbar;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1339 GtkAdjustment *adjustment = (GtkAdjustment *)widget;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1340 int max, val;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1341
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1342 if(!GTK_IS_ADJUSTMENT(adjustment))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1343 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(widget), "_dw_adjustment");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1344
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1345 slider = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_slider");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1346 spinbutton = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_spinbutton");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1347 scrollbar = (GtkWidget *)g_object_get_data(G_OBJECT(adjustment), "_dw_scrollbar");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1348
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1349 max = _dw_round_value(gtk_adjustment_get_upper(adjustment));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1350 val = _dw_round_value(gtk_adjustment_get_value(adjustment));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1351
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1352 if(g_object_get_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1353 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1354
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1355 if(slider || spinbutton || scrollbar)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1356 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1357 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1358
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1359 if (work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1360 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1361 int (*valuechangedfunc)(HWND, int, void *) = work.func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1362
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1363 if(slider && gtk_orientable_get_orientation(GTK_ORIENTABLE(slider)) == GTK_ORIENTATION_VERTICAL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1364 valuechangedfunc(work.window, (max - val) - 1, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1365 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1366 valuechangedfunc(work.window, val, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1367 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1368 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1369 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1370 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1371
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1372 static gint _dw_default_key_press_event(GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1373 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1374 GtkWidget *next = (GtkWidget *)data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1375
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1376 if(next)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1377 {
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1378 if(keyval == GDK_KEY_Return)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1379 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1380 if(GTK_IS_BUTTON(next))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1381 g_signal_emit_by_name(G_OBJECT(next), "clicked");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1382 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1383 gtk_widget_grab_focus(next);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1384 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1385 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1386 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1387 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1388
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1389 static void _dw_dialog_response(GtkDialog *dialog, int response_id, gpointer data)
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1390 {
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1391 DWDialog *dwdialog = (DWDialog *)data;
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1392
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1393 if(dwdialog)
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1394 dw_dialog_dismiss(dwdialog, DW_INT_TO_POINTER(response_id));
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1395 }
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1396
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1397 static GdkPixbuf *_dw_pixbuf_from_resource(unsigned int rid)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1398 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1399 char resource_path[201] = {0};
2319
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
1400
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
1401 snprintf(resource_path, 200, "%s%u.png", _DW_RESOURCE_PATH, rid);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1402 return gdk_pixbuf_new_from_resource(resource_path, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1403 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1404
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1405 static GdkPixbuf *_dw_find_pixbuf(HICN icon, unsigned long *userwidth, unsigned long *userheight)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1406 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1407 unsigned int id = GPOINTER_TO_INT(icon);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1408 GdkPixbuf *icon_pixbuf = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1409
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1410 /* Quick dropout for non-handle */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1411 if(!icon)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1412 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1413
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1414 if(id > 65535)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1415 icon_pixbuf = icon;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1416 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1417 icon_pixbuf = _dw_pixbuf_from_resource(id);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1418
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1419 if(userwidth)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1420 *userwidth = icon_pixbuf ? gdk_pixbuf_get_width(icon_pixbuf) : 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1421 if(userheight)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1422 *userheight = icon_pixbuf ? gdk_pixbuf_get_height(icon_pixbuf) : 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1423
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1424 return icon_pixbuf;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1425 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1426
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1427 /* Handle system notification click callbacks */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1428 static void _dw_notification_handler(GSimpleAction *action, GVariant *param, gpointer user_data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1429 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1430 char textbuf[101] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1431 int (*func)(HWND, void *);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1432 void *data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1433
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1434 snprintf(textbuf, 100, "dw-notification-%llu-func", DW_POINTER_TO_ULONGLONG(g_variant_get_uint64(param)));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1435 func = g_object_get_data(G_OBJECT(_DWApp), textbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1436 g_object_set_data(G_OBJECT(_DWApp), textbuf, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1437 snprintf(textbuf, 100, "dw-notification-%llu-data", DW_POINTER_TO_ULONGLONG(g_variant_get_uint64(param)));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1438 data = g_object_get_data(G_OBJECT(_DWApp), textbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1439 g_object_set_data(G_OBJECT(_DWApp), textbuf, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1440
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1441 if(func)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1442 func((HWND)DW_ULONGLONG_TO_POINTER(g_variant_get_uint64(param)), data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1443 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1444
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1445 /* Handle menu click callbacks */
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1446 static void _dw_menu_handler(GSimpleAction *action, GVariant *param, gpointer data)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1447 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1448 DWSignalHandler work = _dw_get_signal_handler(data);
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1449 GVariant *action_state = g_action_get_state(G_ACTION(action));
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1450
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1451 /* Handle toggling checkable menu items automatically, before the callback */
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1452 if(action_state)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1453 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1454 gboolean active = g_variant_get_boolean(action_state);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1455 GVariant *new_state = g_variant_new_boolean(!active);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1456 g_simple_action_set_state(action, new_state);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1457 }
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1458
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1459 if(work.window)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1460 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1461 int (*genericfunc)(HWND, void *) = work.func;
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1462
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1463 genericfunc(work.window, work.data);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1464 }
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1465 }
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1466
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1467 /* Internal function to add padding to boxes or other widgets */
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1468 static void _dw_widget_set_pad(GtkWidget *widget, int pad)
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1469 {
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1470 /* Set pad for each margin direction on the widget */
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1471 gtk_widget_set_margin_start(widget, pad);
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1472 gtk_widget_set_margin_end(widget, pad);
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1473 gtk_widget_set_margin_top(widget, pad);
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1474 gtk_widget_set_margin_bottom(widget, pad);
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1475 }
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1476
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1477 static void _dw_app_activate(GApplication *app, gpointer user_data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1478 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1479 /* Not sure why this signal is required, but GLib gives warnings
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1480 * when this signal is not connected, so putting this here to
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1481 * quell the warning and can be used at a later point if needed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1482 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1483 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1484
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1485 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1486 * Initializes the Dynamic Windows engine.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1487 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1488 * newthread: True if this is the only thread.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1489 * False if there is already a message loop running.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1490 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
1491 int API dw_init(int newthread, int argc, char *argv[])
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1492 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1493 /* Setup the private data directory */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1494 if(argc > 0 && argv[0])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1495 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1496 char *pathcopy = strdup(argv[0]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1497 char *pos = strrchr(pathcopy, '/');
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1498 char *binname = pathcopy;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1499
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1500 /* If we have a / then...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1501 * the binary name should be at the end.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1502 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1503 if(pos)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1504 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1505 binname = pos + 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1506 *pos = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1507 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1508
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1509 if(*binname)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1510 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1511 char *binpos = strstr(pathcopy, "/bin");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1512
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1513 if(binpos)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1514 strncpy(_dw_share_path, pathcopy, (size_t)(binpos - pathcopy));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1515 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1516 strcpy(_dw_share_path, "/usr/local");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1517 strcat(_dw_share_path, "/share/");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1518 strcat(_dw_share_path, binname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1519 if(!_dw_app_id[0])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1520 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1521 /* If we have a binary name, use that for the Application ID instead. */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1522 snprintf(_dw_app_id, _DW_APP_ID_SIZE, "%s.%s", DW_APP_DOMAIN_DEFAULT, binname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1523 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1524 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1525 if(pathcopy)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1526 free(pathcopy);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1527 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1528 /* If that failed... just get the current directory */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1529 if(!_dw_share_path[0] && !getcwd(_dw_share_path, PATH_MAX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1530 _dw_share_path[0] = '/';
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1531
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1532 gtk_init();
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1533
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1534 _DWMainLoop = g_main_loop_new(NULL, FALSE);
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1535 g_main_loop_ref(_DWMainLoop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1536
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1537 pthread_key_create(&_dw_fg_color_key, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1538 pthread_key_create(&_dw_bg_color_key, NULL);
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
1539 pthread_key_create(&_dw_event_key, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1540
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1541 _dw_init_thread();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1542
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1543 /* Create a global object for glib activities */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1544 _DWObject = g_object_new(G_TYPE_OBJECT, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1545
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1546 if(!_dw_app_id[0])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1547 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1548 /* Generate an Application ID based on the PID if all else fails. */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1549 snprintf(_dw_app_id, _DW_APP_ID_SIZE, "%s.pid.%d", DW_APP_DOMAIN_DEFAULT, (int)getpid());
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1550 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1551
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1552 /* Initialize the application subsystem on supported versions...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1553 * we generate an application ID based on the binary name or PID
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1554 * instead of passing NULL to enable full application support.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1555 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1556 _DWApp = g_application_new(_dw_app_id, G_APPLICATION_FLAGS_NONE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1557 if(_DWApp && g_application_register(_DWApp, NULL, NULL))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1558 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1559 /* Creat our notification handler for any notifications */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1560 GSimpleAction *action = g_simple_action_new("notification", G_VARIANT_TYPE_UINT64);
2330
58700e9fcba3 GTK3/4: Add call to g_set_prgname() with the Application ID.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2329
diff changeset
1561
58700e9fcba3 GTK3/4: Add call to g_set_prgname() with the Application ID.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2329
diff changeset
1562 g_set_prgname(_dw_app_id);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1563 g_signal_connect(G_OBJECT(action), "activate", G_CALLBACK(_dw_notification_handler), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1564 g_action_map_add_action(G_ACTION_MAP(_DWApp), G_ACTION(action));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1565 g_signal_connect(_DWApp, "activate", G_CALLBACK(_dw_app_activate), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1566 g_application_activate(_DWApp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1567 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1568 return TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1569 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1570
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1571 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1572 * Runs a message loop for Dynamic Windows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1573 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1574 void API dw_main(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1575 {
2306
558959a64772 GTK4: Fix thread safety while using dw_main() and fix an status text issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2305
diff changeset
1576 pthread_t orig = _dw_thread;
558959a64772 GTK4: Fix thread safety while using dw_main() and fix an status text issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2305
diff changeset
1577
558959a64772 GTK4: Fix thread safety while using dw_main() and fix an status text issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2305
diff changeset
1578 _dw_thread = pthread_self();
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1579 g_main_loop_run(_DWMainLoop);
2306
558959a64772 GTK4: Fix thread safety while using dw_main() and fix an status text issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2305
diff changeset
1580 _dw_thread = orig;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1581 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1582
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1583 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1584 * Causes running dw_main() to return.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1585 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1586 void API dw_main_quit(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1587 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1588 g_main_loop_quit(_DWMainLoop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1589 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1590
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1591 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1592 * Runs a message loop for Dynamic Windows, for a period of milliseconds.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1593 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1594 * milliseconds: Number of milliseconds to run the loop for.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1595 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1596 void API dw_main_sleep(int milliseconds)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1597 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1598 struct timeval tv, start;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1599 pthread_t curr = pthread_self();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1600
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1601 gettimeofday(&start, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1602
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1603 if(_dw_thread == (pthread_t)-1 || _dw_thread == curr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1604 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1605 pthread_t orig = _dw_thread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1606
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1607 gettimeofday(&tv, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1608
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1609 while(((tv.tv_sec - start.tv_sec)*1000) + ((tv.tv_usec - start.tv_usec)/1000) <= milliseconds)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1610 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1611 if(orig == (pthread_t)-1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1612 _dw_thread = curr;
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1613 if(curr == _dw_thread && g_main_context_pending(NULL))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1614 g_main_context_iteration(NULL, FALSE);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1615 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1616 _dw_msleep(1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1617 if(orig == (pthread_t)-1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1618 _dw_thread = orig;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1619 gettimeofday(&tv, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1620 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1621 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1622 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1623 _dw_msleep(milliseconds);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1624 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1625
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1626 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1627 * Processes a single message iteration and returns.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1628 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1629 void API dw_main_iteration(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1630 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1631 pthread_t orig = _dw_thread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1632 pthread_t curr = pthread_self();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1633
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1634 if(_dw_thread == (pthread_t)-1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1635 _dw_thread = curr;
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1636 if(curr == _dw_thread && g_main_context_pending(NULL))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1637 g_main_context_iteration(NULL, FALSE);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1638 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1639 sched_yield();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1640 if(orig == (pthread_t)-1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1641 _dw_thread = orig;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1642 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1643
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1644 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1645 * Free's memory allocated by dynamic windows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1646 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1647 * ptr: Pointer to dynamic windows allocated
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1648 * memory to be free()'d.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1649 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
1650 void API dw_free(void *ptr)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1651 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1652 free(ptr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1653 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1654
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1655 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1656 * Allocates and initializes a dialog struct.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1657 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1658 * data: User defined data to be passed to functions.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1659 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
1660 DWDialog * API dw_dialog_new(void *data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1661 {
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1662 DWDialog *tmp = calloc(sizeof(DWDialog), 1);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1663
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1664 if(tmp)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1665 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1666 tmp->eve = dw_event_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1667 dw_event_reset(tmp->eve);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1668 tmp->data = data;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1669 tmp->mainloop = g_main_loop_new(NULL, FALSE);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1670 g_main_loop_ref(tmp->mainloop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1671 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1672 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1673 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1674
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1675 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1676 * Accepts a dialog struct and returns the given data to the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1677 * initial called of dw_dialog_wait().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1678 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1679 * dialog: Pointer to a dialog struct aquired by dw_dialog_new).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1680 * result: Data to be returned by dw_dialog_wait().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1681 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
1682 int API dw_dialog_dismiss(DWDialog *dialog, void *result)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1683 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1684 dialog->result = result;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1685 if(dialog->method)
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1686 g_main_loop_quit(dialog->mainloop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1687 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1688 dw_event_post(dialog->eve);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1689 dialog->done = TRUE;
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1690 return DW_ERROR_NONE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1691 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1692
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1693 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1694 * Accepts a dialog struct waits for dw_dialog_dismiss() to be
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1695 * called by a signal handler with the given dialog struct.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1696 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1697 * dialog: Pointer to a dialog struct aquired by dw_dialog_new).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1698 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
1699 void * API dw_dialog_wait(DWDialog *dialog)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1700 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1701 void *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1702
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1703 if(!dialog)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1704 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1705
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1706 if(_dw_thread == (pthread_t)-1 || pthread_self() == _dw_thread)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1707 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1708 dialog->method = TRUE;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1709 g_main_loop_run(dialog->mainloop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1710 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1711 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1712 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1713 dialog->method = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1714 dw_event_wait(dialog->eve, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1715 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1716
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1717 dw_event_close(&dialog->eve);
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1718 g_main_loop_unref(dialog->mainloop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1719 tmp = dialog->result;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1720 free(dialog);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1721 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1722 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1723
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1724 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1725 * Displays a debug message on the console...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1726 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1727 * format: printf style format string.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1728 * ...: Additional variables for use in the format.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1729 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1730 void API dw_debug(const char *format, ...)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1731 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1732 va_list args;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1733 char outbuf[1025] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1734
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1735 va_start(args, format);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1736 vsnprintf(outbuf, 1024, format, args);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1737 va_end(args);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1738
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1739 fprintf(stderr, "%s", outbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1740 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1741
2327
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1742 /* Internal version that does not use variable arguments */
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1743 DW_FUNCTION_DEFINITION(dw_messagebox_int, int, const char *title, int flags, char *outbuf)
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1744 DW_FUNCTION_ADD_PARAM3(title, flags, outbuf)
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1745 DW_FUNCTION_RETURN(dw_messagebox_int, int)
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1746 DW_FUNCTION_RESTORE_PARAM3(title, const char *, flags, int, outbuf, char *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1747 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1748 GtkMessageType gtkicon = GTK_MESSAGE_OTHER;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1749 GtkButtonsType gtkbuttons = GTK_BUTTONS_OK;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1750 GtkWidget *dialog;
2327
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1751 int response, retval = DW_MB_RETURN_OK;
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
1752 DWDialog *tmp = dw_dialog_new(NULL);
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
1753 ULONG width, height;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1754
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1755 if(flags & DW_MB_ERROR)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1756 gtkicon = GTK_MESSAGE_ERROR;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1757 else if(flags & DW_MB_WARNING)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1758 gtkicon = GTK_MESSAGE_WARNING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1759 else if(flags & DW_MB_INFORMATION)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1760 gtkicon = GTK_MESSAGE_INFO;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1761 else if(flags & DW_MB_QUESTION)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1762 gtkicon = GTK_MESSAGE_QUESTION;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1763
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1764 if(flags & DW_MB_OKCANCEL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1765 gtkbuttons = GTK_BUTTONS_OK_CANCEL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1766 else if(flags & (DW_MB_YESNO | DW_MB_YESNOCANCEL))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1767 gtkbuttons = GTK_BUTTONS_YES_NO;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1768
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1769 dialog = gtk_message_dialog_new(NULL,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1770 GTK_DIALOG_USE_HEADER_BAR |
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1771 GTK_DIALOG_MODAL, gtkicon, gtkbuttons, "%s", title);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1772 gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s", outbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1773 if(flags & DW_MB_YESNOCANCEL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1774 gtk_dialog_add_button(GTK_DIALOG(dialog), "Cancel", GTK_RESPONSE_CANCEL);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
1775 gtk_widget_show(GTK_WIDGET(dialog));
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
1776 g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(_dw_dialog_response), (gpointer)tmp);
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
1777 /* Center the dialog on the screen since there is no parent */
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
1778 dw_window_get_pos_size((HWND)dialog, NULL, NULL, &width, &height);
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
1779 dw_window_set_pos((HWND)dialog, (dw_screen_width() - width)/2, (dw_screen_height() - height)/2);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
1780 response = DW_POINTER_TO_INT(dw_dialog_wait(tmp));
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1781 if(GTK_IS_WINDOW(dialog))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1782 gtk_window_destroy(GTK_WINDOW(dialog));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1783 switch(response)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1784 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1785 case GTK_RESPONSE_OK:
2327
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1786 retval = DW_MB_RETURN_OK;
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1787 break;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1788 case GTK_RESPONSE_CANCEL:
2327
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1789 retval = DW_MB_RETURN_CANCEL;
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1790 break;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1791 case GTK_RESPONSE_YES:
2327
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1792 retval = DW_MB_RETURN_YES;
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1793 break;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1794 case GTK_RESPONSE_NO:
2327
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1795 retval = DW_MB_RETURN_NO;
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1796 break;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1797 default:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1798 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1799 /* Handle the destruction of the dialog result */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1800 if(flags & (DW_MB_OKCANCEL | DW_MB_YESNOCANCEL))
2327
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1801 retval = DW_MB_RETURN_CANCEL;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1802 else if(flags & DW_MB_YESNO)
2327
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1803 retval = DW_MB_RETURN_NO;
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1804 }
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1805 }
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1806 DW_FUNCTION_RETURN_THIS(retval);
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1807 }
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1808
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1809 /*
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1810 * Displays a Message Box with given text and title..
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1811 * Parameters:
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1812 * title: The title of the message box.
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1813 * flags: Defines buttons and icons to display
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1814 * format: printf style format string.
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1815 * ...: Additional variables for use in the format.
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1816 */
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1817 int API dw_messagebox(const char *title, int flags, const char *format, ...)
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1818 {
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1819 va_list args;
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1820 char outbuf[1025] = {0};
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1821
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1822 va_start(args, format);
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1823 vsnprintf(outbuf, 1024, format, args);
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1824 va_end(args);
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1825
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1826 return dw_messagebox_int(title, flags, outbuf);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1827 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1828
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1829 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1830 * Minimizes or Iconifies a top-level window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1831 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1832 * handle: The window handle to minimize.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1833 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1834 DW_FUNCTION_DEFINITION(dw_window_minimize, int, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1835 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1836 DW_FUNCTION_RETURN(dw_window_minimize, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1837 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1838 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1839 int retval = DW_ERROR_NONE;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1840
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
1841 if(handle && GTK_IS_WINDOW(handle))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
1842 gtk_window_minimize(GTK_WINDOW(handle));
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1843 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1844 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1845
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1846 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1847 * Makes the window topmost.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1848 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1849 * handle: The window handle to make topmost.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1850 */
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1851 #ifndef GDK_WINDOWING_X11
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
1852 int API dw_window_raise(HWND handle)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1853 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1854 return DW_ERROR_UNKNOWN;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1855 }
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1856 #else
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1857 DW_FUNCTION_DEFINITION(dw_window_raise, int, HWND handle)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1858 DW_FUNCTION_ADD_PARAM1(handle)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1859 DW_FUNCTION_RETURN(dw_window_raise, int)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1860 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1861 {
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1862 int retval = DW_ERROR_UNKNOWN;
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
1863 GdkDisplay *display = gdk_display_get_default();
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
1864
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
1865 if(handle && GTK_IS_WINDOW(handle) && display && GDK_IS_X11_DISPLAY(display))
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1866 {
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1867 GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle));
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1868
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1869 if(surface)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1870 {
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1871 XRaiseWindow(GDK_SURFACE_XDISPLAY(surface), GDK_SURFACE_XID(surface));
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1872 retval = DW_ERROR_NONE;
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1873 }
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1874 }
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1875 DW_FUNCTION_RETURN_THIS(retval);
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1876 }
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1877 #endif
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1878
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1879 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1880 * Makes the window bottommost.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1881 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1882 * handle: The window handle to make bottommost.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1883 */
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1884 #ifndef GDK_WINDOWING_X11
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
1885 int API dw_window_lower(HWND handle)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1886 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1887 return DW_ERROR_UNKNOWN;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1888 }
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1889 #else
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1890 DW_FUNCTION_DEFINITION(dw_window_lower, int, HWND handle)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1891 DW_FUNCTION_ADD_PARAM1(handle)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1892 DW_FUNCTION_RETURN(dw_window_lower, int)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1893 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1894 {
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1895 int retval = DW_ERROR_UNKNOWN;
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
1896 GdkDisplay *display = gdk_display_get_default();
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
1897
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
1898 if(handle && GTK_IS_WINDOW(handle) && display && GDK_IS_X11_DISPLAY(display))
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1899 {
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1900 GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle));
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1901
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1902 if(surface)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1903 {
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1904 XLowerWindow(GDK_SURFACE_XDISPLAY(surface), GDK_SURFACE_XID(surface));
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1905 retval = DW_ERROR_NONE;
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1906 }
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1907 }
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1908 DW_FUNCTION_RETURN_THIS(retval);
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1909 }
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
1910 #endif
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1911
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1912 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1913 * Makes the window visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1914 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1915 * handle: The window handle to make visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1916 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1917 DW_FUNCTION_DEFINITION(dw_window_show, int, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1918 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1919 DW_FUNCTION_RETURN(dw_window_show, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1920 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1921 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1922 int retval = DW_ERROR_NONE;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1923
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1924 if(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1925 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1926 if(GTK_IS_WINDOW(handle))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1927 {
2369
5b3b51ba5239 GTK4: Minor code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2368
diff changeset
1928 GtkWidget *defaultitem = GTK_WIDGET(g_object_get_data(G_OBJECT(handle), "_dw_defaultitem"));
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1929
2368
ec90b552b266 GTK4: Switch to using gtk_window_present() in dw_window_show().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2367
diff changeset
1930 gtk_window_present(GTK_WINDOW(handle));
2369
5b3b51ba5239 GTK4: Minor code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2368
diff changeset
1931
5b3b51ba5239 GTK4: Minor code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2368
diff changeset
1932 if(defaultitem)
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1933 gtk_widget_grab_focus(defaultitem);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1934 }
2368
ec90b552b266 GTK4: Switch to using gtk_window_present() in dw_window_show().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2367
diff changeset
1935 else if(GTK_IS_WIDGET(handle))
ec90b552b266 GTK4: Switch to using gtk_window_present() in dw_window_show().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2367
diff changeset
1936 gtk_widget_show(handle);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1937 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1938 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1939 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1940
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1941 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1942 * Makes the window invisible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1943 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1944 * handle: The window handle to make visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1945 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1946 DW_FUNCTION_DEFINITION(dw_window_hide, int, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1947 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1948 DW_FUNCTION_RETURN(dw_window_hide, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1949 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1950 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1951 int retval = DW_ERROR_NONE;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1952
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1953 if(handle && GTK_IS_WIDGET(handle))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1954 gtk_widget_hide(handle);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1955 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1956 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1957
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1958 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1959 * Destroys a window and all of it's children.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1960 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1961 * handle: The window handle to destroy.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1962 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1963 DW_FUNCTION_DEFINITION(dw_window_destroy, int, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1964 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1965 DW_FUNCTION_RETURN(dw_window_destroy, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1966 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1967 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1968 int retval = DW_ERROR_NONE;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1969
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1970 if(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1971 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1972 if(GTK_IS_WINDOW(handle))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1973 gtk_window_destroy(GTK_WINDOW(handle));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1974 else if(GTK_IS_WIDGET(handle))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1975 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1976 GtkWidget *box, *handle2 = handle;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1977
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1978 /* Check if we are removing a widget from a box */
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1979 if((box = gtk_widget_get_parent(handle2)) && GTK_IS_GRID(box))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1980 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1981 /* Get the number of items in the box... */
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1982 int boxcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxcount"));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1983 int boxtype = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxtype"));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1984 int z;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1985
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1986 /* Figure out where in the grid this widget is and remove that row/column */
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1987 if(boxtype == DW_VERT)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1988 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1989 for(z=0;z<boxcount;z++)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1990 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1991 if(gtk_grid_get_child_at(GTK_GRID(box), 0, z) == handle2)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1992 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1993 gtk_grid_remove_row(GTK_GRID(box), z);
2329
47f8f950f377 GTK4: Fix crash by stopping processing after removing widget from the box.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2328
diff changeset
1994 handle2 = NULL;
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1995 break;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1996 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1997 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1998 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1999 else
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2000 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2001 for(z=0;z<boxcount;z++)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2002 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2003 if(gtk_grid_get_child_at(GTK_GRID(box), z, 0) == handle2)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2004 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2005 gtk_grid_remove_column(GTK_GRID(box), z);
2329
47f8f950f377 GTK4: Fix crash by stopping processing after removing widget from the box.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2328
diff changeset
2006 handle2 = NULL;
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2007 break;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2008 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2009 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2010 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2011
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2012 if(boxcount > 0)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2013 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2014 /* Decrease the count by 1 */
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2015 boxcount--;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2016 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2017 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2018 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2019 /* Finally destroy the widget, make sure it is still
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2020 * a valid widget if it got removed from the grid.
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2021 */
2329
47f8f950f377 GTK4: Fix crash by stopping processing after removing widget from the box.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2328
diff changeset
2022 if(handle2 && GTK_IS_WIDGET(handle2))
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2023 g_object_unref(G_OBJECT(handle2));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2024 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2025 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2026 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2027 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2028
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2029 /* Causes entire window to be invalidated and redrawn.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2030 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2031 * handle: Toplevel window handle to be redrawn.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2032 */
2328
5363f953b22a GTK4: Implement dw_window_redraw() for render/drawing area widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2327
diff changeset
2033 DW_FUNCTION_DEFINITION(dw_window_redraw, void, HWND handle)
5363f953b22a GTK4: Implement dw_window_redraw() for render/drawing area widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2327
diff changeset
2034 DW_FUNCTION_ADD_PARAM1(handle)
5363f953b22a GTK4: Implement dw_window_redraw() for render/drawing area widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2327
diff changeset
2035 DW_FUNCTION_NO_RETURN(dw_window_redraw)
5363f953b22a GTK4: Implement dw_window_redraw() for render/drawing area widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2327
diff changeset
2036 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
5363f953b22a GTK4: Implement dw_window_redraw() for render/drawing area widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2327
diff changeset
2037 {
5363f953b22a GTK4: Implement dw_window_redraw() for render/drawing area widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2327
diff changeset
2038 if(handle && GTK_IS_DRAWING_AREA(handle))
5363f953b22a GTK4: Implement dw_window_redraw() for render/drawing area widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2327
diff changeset
2039 gtk_widget_queue_draw(GTK_WIDGET(handle));
5363f953b22a GTK4: Implement dw_window_redraw() for render/drawing area widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2327
diff changeset
2040 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2041 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2042
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2043 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2044 * Changes a window's parent to newparent.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2045 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2046 * handle: The window handle to destroy.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2047 * newparent: The window's new parent window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2048 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2049 DW_FUNCTION_DEFINITION(dw_window_reparent, void, HWND handle, HWND newparent)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2050 DW_FUNCTION_ADD_PARAM2(handle, newparent)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2051 DW_FUNCTION_NO_RETURN(dw_window_reparent)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2052 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, newparent, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2053 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2054 if(handle && GTK_IS_WIDGET(handle) && newparent && GTK_IS_WIDGET(newparent))
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2055 gtk_widget_set_parent(GTK_WIDGET(handle), GTK_WIDGET(newparent));
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2056 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2057 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2058
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2059 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2060 * Sets the default font used on text based widgets.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2061 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2062 * fontname: Font name in Dynamic Windows format.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2063 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2064 void API dw_font_set_default(const char *fontname)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2065 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2066 char *oldfont = _DWDefaultFont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2067
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2068 _DWDefaultFont = strdup(fontname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2069
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2070 if(oldfont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2071 free(oldfont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2072 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2073
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2074 /* Convert DW style font to CSS syntax (or Pango for older versions):
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2075 * font: font-style font-variant font-weight font-size/line-height font-family
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2076 */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
2077 char *_dw_convert_font(const char *font)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2078 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2079 char *newfont = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2080
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2081 if(font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2082 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2083 char *name = strchr(font, '.');
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2084 char *Italic = strstr(font, " Italic");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2085 char *Bold = strstr(font, " Bold");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2086
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2087 /* Detect Dynamic Windows style font name...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2088 * Format: ##.Fontname
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2089 * and convert to CSS or Pango syntax
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2090 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2091 if(name && (name++) && isdigit(*font))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2092 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2093 int size = atoi(font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2094 int len = (Italic ? (Bold ? (Italic > Bold ? (Bold - name) : (Italic - name)) : (Italic - name)) : (Bold ? (Bold - name) : strlen(name)));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2095 char *newname = alloca(len+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2096
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2097 memset(newname, 0, len+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2098 strncpy(newname, name, len);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2099
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2100 newfont = g_strdup_printf("%s normal %s %dpx \"%s\"", Italic ? "italic" : "normal",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2101 Bold ? "bold" : "normal", size, newname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2102 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2103 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2104 return newfont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2105 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2106
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2107 /* Internal functions to convert to GTK3 style CSS */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2108 static void _dw_override_color(GtkWidget *widget, const char *element, GdkRGBA *color)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2109 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2110 gchar *dataname = g_strdup_printf ("_dw_color_%s", element);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2111 GtkCssProvider *provider = g_object_get_data(G_OBJECT(widget), dataname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2112 GtkStyleContext *scontext = gtk_widget_get_style_context(widget);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2113
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2114 /* If we have an old context from a previous override remove it */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2115 if(provider)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2116 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2117 gtk_style_context_remove_provider(scontext, GTK_STYLE_PROVIDER(provider));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2118 g_object_unref(provider);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2119 provider = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2120 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2121
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2122 /* If we have a new color, create a new provider and add it */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2123 if(color)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2124 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2125 gchar *scolor = gdk_rgba_to_string(color);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2126 gchar *css = g_strdup_printf ("* { %s: %s; }", element, scolor);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2127
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2128 provider = gtk_css_provider_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2129 g_free(scolor);
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2130 gtk_css_provider_load_from_data(provider, css, -1);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2131 g_free(css);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2132 gtk_style_context_add_provider(scontext, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2133 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2134 g_object_set_data(G_OBJECT(widget), dataname, (gpointer)provider);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2135 g_free(dataname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2136 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2137
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2138 static void _dw_override_font(GtkWidget *widget, const char *font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2139 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2140 GtkCssProvider *provider = g_object_get_data(G_OBJECT(widget), "_dw_font");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2141 GtkStyleContext *scontext = gtk_widget_get_style_context(widget);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2142
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2143 /* If we have an old context from a previous override remove it */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2144 if(provider)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2145 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2146 gtk_style_context_remove_provider(scontext, GTK_STYLE_PROVIDER(provider));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2147 g_object_unref(provider);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2148 provider = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2149 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2150
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2151 /* If we have a new font, create a new provider and add it */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2152 if(font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2153 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2154 gchar *css = g_strdup_printf ("* { font: %s; }", font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2155
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2156 provider = gtk_css_provider_new();
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2157 gtk_css_provider_load_from_data(provider, css, -1);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2158 g_free(css);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2159 gtk_style_context_add_provider(scontext, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2160 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2161 g_object_set_data(G_OBJECT(widget), "_dw_font", (gpointer)provider);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2162 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2163
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2164 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2165 * Sets the font used by a specified window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2166 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2167 * handle: The window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2168 * fontname: Name and size of the font in the form "size.fontname"
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2169 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2170 DW_FUNCTION_DEFINITION(dw_window_set_font, int, HWND handle, const char *fontname)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2171 DW_FUNCTION_ADD_PARAM2(handle, fontname)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2172 DW_FUNCTION_RETURN(dw_window_set_font, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2173 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, fontname, const char *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2174 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2175 GtkWidget *handle2 = handle;
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
2176 char *font = _dw_convert_font(fontname);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2177 gpointer data;
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2178 int retval = DW_ERROR_NONE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2179
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2180 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2181 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2182 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2183 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2184 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2185 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2186 /* If it is a groupox we want to operate on the frame label */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2187 else if(GTK_IS_FRAME(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2188 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2189 GtkWidget *tmp = gtk_frame_get_label_widget(GTK_FRAME(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2190 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2191 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2192 }
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2193 else if(GTK_IS_COMBO_BOX(handle))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2194 {
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2195 GtkWidget *tmp = gtk_combo_box_get_child(GTK_COMBO_BOX(handle));
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2196 if(tmp)
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2197 handle2 = tmp;
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2198 }
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2199 else if(GTK_IS_BUTTON(handle))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2200 {
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2201 GtkWidget *tmp = gtk_button_get_child(GTK_BUTTON(handle));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2202 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2203 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2204 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2205
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2206 /* Free old font name if one is allocated */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2207 data = g_object_get_data(G_OBJECT(handle2), "_dw_fontname");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2208 g_object_set_data(G_OBJECT(handle2), "_dw_fontname", (gpointer)font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2209 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2210 free(data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2211
2325
55524dbe6a54 GTK4: The font crash seems to affect GtkDrawingArea. So reenable the widget
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2324
diff changeset
2212 if(!GTK_IS_DRAWING_AREA(handle2))
55524dbe6a54 GTK4: The font crash seems to affect GtkDrawingArea. So reenable the widget
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2324
diff changeset
2213 _dw_override_font(handle2, font);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2214
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2215 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2216 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2217
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2218 /* Allows the user to choose a font using the system's font chooser dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2219 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2220 * currfont: current font
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2221 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2222 * A malloced buffer with the selected font or NULL on error.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2223 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2224 DW_FUNCTION_DEFINITION(dw_font_choose, char *, const char *currfont)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2225 DW_FUNCTION_ADD_PARAM1(currfont)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2226 DW_FUNCTION_RETURN(dw_font_choose, char *)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2227 DW_FUNCTION_RESTORE_PARAM1(currfont, const char *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2228 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2229 GtkFontChooser *fd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2230 char *font = currfont ? strdup(currfont) : NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2231 char *name = font ? strchr(font, '.') : NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2232 char *retfont = NULL;
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2233 DWDialog *tmp = dw_dialog_new(NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2234
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2235 /* Detect Dynamic Windows style font name...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2236 * Format: ##.Fontname
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2237 * and convert to a Pango name
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2238 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2239 if(name && isdigit(*font))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2240 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2241 int size = atoi(font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2242 *name = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2243 name++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2244 sprintf(font, "%s %d", name, size);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2245 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2246
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2247 fd = (GtkFontChooser *)gtk_font_chooser_dialog_new("Choose font", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2248 if(font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2249 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2250 gtk_font_chooser_set_font(fd, font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2251 free(font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2252 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2253
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2254 gtk_widget_show(GTK_WIDGET(fd));
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
2255 g_signal_connect(G_OBJECT(fd), "response", G_CALLBACK(_dw_dialog_response), (gpointer)tmp);
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
2256
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2257 if(DW_POINTER_TO_INT(dw_dialog_wait(tmp)) == GTK_RESPONSE_OK)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2258 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2259 char *fontname = gtk_font_chooser_get_font(fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2260 if(fontname && (retfont = strdup(fontname)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2261 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2262 int len = strlen(fontname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2263 /* Convert to Dynamic Windows format if we can... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2264 if(len > 0 && isdigit(fontname[len-1]))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2265 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2266 int size, x=len-1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2267
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2268 while(x > 0 && fontname[x] != ' ')
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2269 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2270 x--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2271 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2272 size = atoi(&fontname[x]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2273 /* If we were able to find a valid size... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2274 if(size > 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2275 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2276 /* Null terminate after the name...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2277 * and create the Dynamic Windows style font.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2278 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2279 fontname[x] = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2280 snprintf(retfont, len+1, "%d.%s", size, fontname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2281 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2282 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2283 g_free(fontname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2284 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2285 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2286 if(GTK_IS_WINDOW(fd))
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2287 gtk_window_destroy(GTK_WINDOW(fd));
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2288 DW_FUNCTION_RETURN_THIS(retfont);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2289 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2290
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2291 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2292 * Gets the font used by a specified window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2293 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2294 * handle: The window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2295 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2296 DW_FUNCTION_DEFINITION(dw_window_get_font, char *, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2297 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2298 DW_FUNCTION_RETURN(dw_window_get_font, char *)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2299 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2300 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2301 PangoFontDescription *pfont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2302 PangoContext *pcontext;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2303 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2304 char *font;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2305 char *retfont=NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2306
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2307 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2308 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2309 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2310 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2311 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2312 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2313 /* If it is a groupox we want to operate on the frame label */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2314 else if(GTK_IS_FRAME(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2315 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2316 GtkWidget *tmp = gtk_frame_get_label_widget(GTK_FRAME(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2317 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2318 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2319 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2320
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
2321 pcontext = gtk_widget_get_pango_context(handle2);
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
2322 if(pcontext)
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
2323 {
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
2324 pfont = pango_context_get_font_description(pcontext);
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
2325 if(pfont)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2326 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2327 int len, x;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2328
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
2329 font = pango_font_description_to_string(pfont);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2330 retfont = strdup(font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2331 len = strlen(font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2332 /* Convert to Dynamic Windows format if we can... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2333 if(len > 0 && isdigit(font[len-1]))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2334 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2335 int size;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2336
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2337 x=len-1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2338 while(x > 0 && font[x] != ' ')
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2339 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2340 x--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2341 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2342 size = atoi(&font[x]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2343 /* If we were able to find a valid size... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2344 if(size > 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2345 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2346 /* Null terminate after the name...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2347 * and create the Dynamic Windows style font.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2348 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2349 font[x] = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2350 snprintf(retfont, len+1, "%d.%s", size, font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2351 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2352 }
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
2353 g_free(font);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2354 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2355 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2356 DW_FUNCTION_RETURN_THIS(retfont);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2357 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2358
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2359 void _dw_free_gdk_colors(HWND handle)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2360 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2361 GdkRGBA *old = (GdkRGBA *)g_object_get_data(G_OBJECT(handle), "_dw_foregdk");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2362
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2363 if(old)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2364 free(old);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2365
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2366 old = (GdkRGBA *)g_object_get_data(G_OBJECT(handle), "_dw_backgdk");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2367
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2368 if(old)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2369 free(old);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2370 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2371
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2372 /* Free old color pointers and allocate new ones */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2373 static void _dw_save_gdk_colors(HWND handle, GdkRGBA fore, GdkRGBA back)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2374 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2375 GdkRGBA *foregdk = malloc(sizeof(GdkRGBA));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2376 GdkRGBA *backgdk = malloc(sizeof(GdkRGBA));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2377
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2378 _dw_free_gdk_colors(handle);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2379
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2380 *foregdk = fore;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2381 *backgdk = back;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2382
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2383 g_object_set_data(G_OBJECT(handle), "_dw_foregdk", (gpointer)foregdk);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2384 g_object_set_data(G_OBJECT(handle), "_dw_backgdk", (gpointer)backgdk);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2385 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2386
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2387 static int _dw_set_color(HWND handle, unsigned long fore, unsigned long back)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2388 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2389 /* Remember that each color component in X11 use 16 bit no matter
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2390 * what the destination display supports. (and thus GDK)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2391 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2392 GdkRGBA forecolor = {0}, backcolor = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2393
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2394 if(fore & DW_RGB_COLOR)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2395 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2396 forecolor.alpha = 1.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2397 forecolor.red = (gdouble)DW_RED_VALUE(fore) / 255.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2398 forecolor.green = (gdouble)DW_GREEN_VALUE(fore) / 255.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2399 forecolor.blue = (gdouble)DW_BLUE_VALUE(fore) / 255.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2400 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2401 else if(fore != DW_CLR_DEFAULT)
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
2402 forecolor = _dw_colors[fore];
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2403
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2404 _dw_override_color(handle, "color", fore != DW_CLR_DEFAULT ? &forecolor : NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2405
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2406 if(back & DW_RGB_COLOR)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2407 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2408 backcolor.alpha = 1.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2409 backcolor.red = (gdouble)DW_RED_VALUE(back) / 255.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2410 backcolor.green = (gdouble)DW_GREEN_VALUE(back) / 255.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2411 backcolor.blue = (gdouble)DW_BLUE_VALUE(back) / 255.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2412 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2413 else if(back != DW_CLR_DEFAULT)
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
2414 backcolor = _dw_colors[back];
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2415
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2416 _dw_override_color(handle, "background-color", back != DW_CLR_DEFAULT ? &backcolor : NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2417
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2418 _dw_save_gdk_colors(handle, forecolor, backcolor);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2419
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2420 return TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2421 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2422 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2423 * Sets the colors used by a specified window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2424 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2425 * handle: The window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2426 * fore: Foreground color in RGB format.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2427 * back: Background color in RGB format.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2428 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2429 DW_FUNCTION_DEFINITION(dw_window_set_color, int, HWND handle, unsigned long fore, unsigned long back)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2430 DW_FUNCTION_ADD_PARAM3(handle, fore, back)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2431 DW_FUNCTION_RETURN(dw_window_set_color, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2432 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, fore, unsigned long, back, unsigned long)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2433 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2434 GtkWidget *handle2 = handle;
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2435 int retval = DW_ERROR_NONE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2436
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2437 if(GTK_IS_SCROLLED_WINDOW(handle) || GTK_IS_BOX(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2438 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2439 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2440 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2441 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2442 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2443
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2444 _dw_set_color(handle2, fore, back);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2445
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2446 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2447 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2448
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2449 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2450 * Sets the font used by a specified window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2451 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2452 * handle: The window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2453 * border: Size of the window border in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2454 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
2455 int API dw_window_set_border(HWND handle, int border)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2456 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2457 /* TODO */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2458 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2459 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2460
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2461 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2462 * Changes the appearance of the mouse pointer.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2463 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2464 * handle: Handle to widget for which to change.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2465 * cursortype: ID of the pointer you want.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2466 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2467 DW_FUNCTION_DEFINITION(dw_window_set_pointer, void, HWND handle, int pointertype)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2468 DW_FUNCTION_ADD_PARAM2(handle, pointertype)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2469 DW_FUNCTION_NO_RETURN(dw_window_set_pointer)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2470 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, pointertype, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2471 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2472 if(pointertype > 65535)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2473 {
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2474 GdkPixbuf *pixbuf = _dw_find_pixbuf(GINT_TO_POINTER(pointertype), NULL, NULL);
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2475 GdkCursor *cursor = gdk_cursor_new_from_texture(gdk_texture_new_for_pixbuf(pixbuf), 0, 0, NULL);
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2476 if(cursor)
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2477 gtk_widget_set_cursor(GTK_WIDGET(handle), cursor);
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2478 }
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2479 if(pointertype == DW_POINTER_ARROW)
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2480 gtk_widget_set_cursor_from_name(GTK_WIDGET(handle), "default");
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2481 else if(pointertype == DW_POINTER_CLOCK)
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2482 gtk_widget_set_cursor_from_name(GTK_WIDGET(handle), "wait");
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2483 else if(pointertype == DW_POINTER_QUESTION)
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2484 gtk_widget_set_cursor_from_name(GTK_WIDGET(handle), "help");
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2485 else
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2486 gtk_widget_set_cursor(GTK_WIDGET(handle), NULL);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2487 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2488 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2489
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2490 /*
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2491 * Captures the mouse input to this window.
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2492 * Parameters:
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2493 * handle: Handle to receive mouse input.
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2494 */
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2495 #ifndef GDK_WINDOWING_X11
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
2496 void API dw_window_capture(HWND handle)
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2497 {
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2498 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2499 #else
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2500 static Display *_DWXGrabbedDisplay = NULL;
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2501
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2502 DW_FUNCTION_DEFINITION(dw_window_capture, void, HWND handle)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2503 DW_FUNCTION_ADD_PARAM1(handle)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2504 DW_FUNCTION_NO_RETURN(dw_window_capture)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2505 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2506 {
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
2507 GdkDisplay *display = gdk_display_get_default();
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
2508
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
2509 if(_DWXGrabbedDisplay == NULL && handle && GTK_IS_WINDOW(handle) && display && GDK_IS_X11_DISPLAY(display))
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2510 {
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2511 GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle));
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2512
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2513 if(surface)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2514 {
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2515 if(XGrabPointer(GDK_SURFACE_XDISPLAY(surface), GDK_SURFACE_XID(surface), FALSE,
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2516 ButtonPressMask | ButtonReleaseMask | PointerMotionMask | EnterWindowMask | LeaveWindowMask,
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2517 GrabModeAsync, GrabModeAsync, None, None, CurrentTime) == GrabSuccess)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2518 _DWXGrabbedDisplay = GDK_SURFACE_XDISPLAY(surface);
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2519
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2520 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2521 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2522 DW_FUNCTION_RETURN_NOTHING;
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2523 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2524 #endif
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2525
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2526 /*
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2527 * Releases previous mouse capture.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2528 */
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2529 #ifndef GDK_WINDOWING_X11
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
2530 void API dw_window_release(void)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2531 {
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2532 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2533 #else
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2534 DW_FUNCTION_DEFINITION(dw_window_release, void)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2535 DW_FUNCTION_ADD_PARAM
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2536 DW_FUNCTION_NO_RETURN(dw_window_release)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2537 {
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
2538 /* Don't need X11 test, _DWXGrabbedDisplay won't get set unless X11 */
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2539 if(_DWXGrabbedDisplay)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2540 {
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2541 XUngrabPointer(_DWXGrabbedDisplay, CurrentTime);
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2542 _DWXGrabbedDisplay = NULL;
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2543 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2544 DW_FUNCTION_RETURN_NOTHING;
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2545 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2546 #endif
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2547
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2548 /* Window creation flags that will cause the window to have decorations */
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2549 #define _DW_DECORATION_FLAGS (DW_FCF_CLOSEBUTTON|DW_FCF_SYSMENU|DW_FCF_TITLEBAR|DW_FCF_MINMAX|DW_FCF_SIZEBORDER|DW_FCF_BORDER|DW_FCF_DLGBORDER)
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2550
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2551 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2552 * Create a new Window Frame.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2553 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2554 * owner: The Owner's window handle or HWND_DESKTOP.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2555 * title: The Window title.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2556 * flStyle: Style flags, see the PM reference.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2557 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2558 DW_FUNCTION_DEFINITION(dw_window_new, HWND, DW_UNUSED(HWND hwndOwner), const char *title, ULONG flStyle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2559 DW_FUNCTION_ADD_PARAM3(hwndOwner, title, flStyle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2560 DW_FUNCTION_RETURN(dw_window_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2561 DW_FUNCTION_RESTORE_PARAM3(DW_UNUSED(hwndOwner), HWND, title, char *, flStyle, ULONG)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2562 {
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2563 GtkWidget *box = dw_box_new(DW_VERT, 0);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2564 GtkWidget *grid = gtk_grid_new();
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2565 GtkWidget *tmp = gtk_window_new();
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2566
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2567 gtk_widget_show(grid);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2568
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2569 /* Handle the window style flags */
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2570 gtk_window_set_title(GTK_WINDOW(tmp), title);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2571 gtk_window_set_resizable(GTK_WINDOW(tmp), (flStyle & DW_FCF_SIZEBORDER) ? TRUE : FALSE);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2572 /* Either the CLOSEBUTTON or SYSMENU flags should make it deletable */
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2573 gtk_window_set_deletable(GTK_WINDOW(tmp), (flStyle & (DW_FCF_CLOSEBUTTON | DW_FCF_SYSMENU)) ? TRUE : FALSE);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2574 gtk_window_set_decorated(GTK_WINDOW(tmp), (flStyle & _DW_DECORATION_FLAGS) ? TRUE : FALSE);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2575
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2576 gtk_widget_realize(tmp);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2577
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2578 if(flStyle & DW_FCF_FULLSCREEN)
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2579 gtk_window_fullscreen(GTK_WINDOW(tmp));
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2580 else
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2581 {
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2582 if(flStyle & DW_FCF_MAXIMIZE)
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2583 gtk_window_maximize(GTK_WINDOW(tmp));
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2584
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2585 if(flStyle & DW_FCF_MINIMIZE)
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2586 gtk_window_minimize(GTK_WINDOW(tmp));
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2587 }
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2588
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2589 gtk_grid_attach(GTK_GRID(grid), box, 0, 1, 1, 1);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2590 gtk_window_set_child(GTK_WINDOW(tmp), grid);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2591 g_object_set_data(G_OBJECT(tmp), "_dw_boxhandle", (gpointer)box);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2592 g_object_set_data(G_OBJECT(tmp), "_dw_grid", (gpointer)grid);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2593 g_object_set_data(G_OBJECT(tmp), "_dw_style", GINT_TO_POINTER(flStyle));
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2594 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2595 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2596
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2597 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2598 * Create a new Box to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2599 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2600 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2601 * pad: Number of pixels to pad around the box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2602 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
2603 DW_FUNCTION_DEFINITION(dw_box_new, HWND, int type, int pad)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
2604 DW_FUNCTION_ADD_PARAM2(type, pad)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
2605 DW_FUNCTION_RETURN(dw_box_new, HWND)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
2606 DW_FUNCTION_RESTORE_PARAM2(type, int, pad, int)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
2607 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
2608 GtkWidget *tmp = gtk_grid_new();
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2609 g_object_set_data(G_OBJECT(tmp), "_dw_boxtype", GINT_TO_POINTER(type));
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
2610 _dw_widget_set_pad(tmp, pad);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2611 gtk_widget_show(tmp);
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
2612 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2613 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2614
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2615 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2616 * Create a new scrollable Box to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2617 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2618 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2619 * pad: Number of pixels to pad around the box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2620 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2621 DW_FUNCTION_DEFINITION(dw_scrollbox_new, HWND, int type, int pad)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2622 DW_FUNCTION_ADD_PARAM2(type, pad)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2623 DW_FUNCTION_RETURN(dw_scrollbox_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2624 DW_FUNCTION_RESTORE_PARAM2(type, int, pad, int)
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2625 {
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2626 GtkWidget *tmp, *box;
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2627
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2628 tmp = gtk_scrolled_window_new();
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2629 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(tmp), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2630
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2631 box = gtk_grid_new();
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2632
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2633 g_object_set_data(G_OBJECT(box), "_dw_boxtype", GINT_TO_POINTER(type));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2634 g_object_set_data(G_OBJECT(tmp), "_dw_boxhandle", (gpointer)box);
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
2635 _dw_widget_set_pad(box, pad);
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
2636
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2637 gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(tmp), box);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2638 g_object_set_data(G_OBJECT(tmp), "_dw_user", box);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2639 gtk_widget_show(box);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2640 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2641
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2642 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2643 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2644
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2645 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2646 * Returns the position of the scrollbar in the scrollbox
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2647 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2648 * handle: Handle to the scrollbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2649 * orient: The vertical or horizontal scrollbar.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2650 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2651 DW_FUNCTION_DEFINITION(dw_scrollbox_get_pos, int, HWND handle, int orient)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2652 DW_FUNCTION_ADD_PARAM2(handle, orient)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2653 DW_FUNCTION_RETURN(dw_scrollbox_get_pos, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2654 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, orient, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2655 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2656 int val = DW_ERROR_UNKNOWN;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2657 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2658
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2659 if(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2660 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2661 if(orient == DW_HORZ)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2662 adjustment = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(handle));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2663 else
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2664 adjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(handle));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2665 if(adjustment)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2666 val = _dw_round_value(gtk_adjustment_get_value(adjustment));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2667 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2668 DW_FUNCTION_RETURN_THIS(val);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2669 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2670
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2671 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2672 * Gets the range for the scrollbar in the scrollbox.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2673 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2674 * handle: Handle to the scrollbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2675 * orient: The vertical or horizontal scrollbar.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2676 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2677 DW_FUNCTION_DEFINITION(dw_scrollbox_get_range, int, HWND handle, int orient)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2678 DW_FUNCTION_ADD_PARAM2(handle, orient)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2679 DW_FUNCTION_RETURN(dw_scrollbox_get_range, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2680 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, orient, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2681 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2682 int range = DW_ERROR_UNKNOWN;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2683 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2684
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2685 if(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2686 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2687 if(orient == DW_HORZ)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2688 adjustment = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(handle));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2689 else
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2690 adjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(handle));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2691 if(adjustment)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2692 range = _dw_round_value(gtk_adjustment_get_upper(adjustment));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2693 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2694 DW_FUNCTION_RETURN_THIS(range);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2695 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2696
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2697 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2698 * Create a new Group Box to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2699 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2700 * type: Either DW_VERT (vertical) or DW_HORZ (horizontal).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2701 * pad: Number of pixels to pad around the box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2702 * title: Text to be displayined in the group outline.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2703 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2704 DW_FUNCTION_DEFINITION(dw_groupbox_new, HWND, int type, int pad, const char *title)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2705 DW_FUNCTION_ADD_PARAM3(type, pad, title)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2706 DW_FUNCTION_RETURN(dw_groupbox_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2707 DW_FUNCTION_RESTORE_PARAM3(type, int, pad, int, title, const char *)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2708 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2709 GtkWidget *tmp, *frame = gtk_frame_new(NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2710 gtk_frame_set_label(GTK_FRAME(frame), title && *title ? title : NULL);
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
2711
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2712 tmp = gtk_grid_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2713 g_object_set_data(G_OBJECT(tmp), "_dw_boxtype", GINT_TO_POINTER(type));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2714 g_object_set_data(G_OBJECT(frame), "_dw_boxhandle", (gpointer)tmp);
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
2715 _dw_widget_set_pad(tmp, pad);
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2716 gtk_frame_set_child(GTK_FRAME(frame), tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2717 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2718 gtk_widget_show(frame);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2719 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2720 dw_window_set_font(frame, _DWDefaultFont);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2721 DW_FUNCTION_RETURN_THIS(frame);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2722 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2723
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2724 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2725 * Create a bitmap object to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2726 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2727 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2728 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2729 DW_FUNCTION_DEFINITION(dw_bitmap_new, HWND, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2730 DW_FUNCTION_ADD_PARAM1(cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2731 DW_FUNCTION_RETURN(dw_bitmap_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2732 DW_FUNCTION_RESTORE_PARAM1(cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2733 {
2366
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
2734 GtkWidget *tmp = gtk_picture_new();
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
2735 gtk_picture_set_can_shrink(GTK_PICTURE(tmp), TRUE);
2367
0f340646a2ca GTK4: GtkPictures should be centered, not filled... don't clobber the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2366
diff changeset
2736 gtk_picture_set_keep_aspect_ratio(GTK_PICTURE(tmp), TRUE);
0f340646a2ca GTK4: GtkPictures should be centered, not filled... don't clobber the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2366
diff changeset
2737 gtk_widget_set_halign(GTK_WIDGET(tmp), GTK_ALIGN_CENTER);
0f340646a2ca GTK4: GtkPictures should be centered, not filled... don't clobber the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2366
diff changeset
2738 gtk_widget_set_valign(GTK_WIDGET(tmp), GTK_ALIGN_CENTER);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2739 gtk_widget_show(tmp);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2740 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2741 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2742 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2743
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2744 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2745 * Create a notebook object to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2746 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2747 * id: An ID to be used for getting the resource from the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2748 * resource file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2749 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2750 DW_FUNCTION_DEFINITION(dw_notebook_new, HWND, ULONG cid, int top)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2751 DW_FUNCTION_ADD_PARAM2(cid, top)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2752 DW_FUNCTION_RETURN(dw_notebook_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2753 DW_FUNCTION_RESTORE_PARAM2(cid, ULONG, top, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2754 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2755 GtkWidget *tmp, **pagearray = calloc(sizeof(GtkWidget *), 256);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2756
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2757 tmp = gtk_notebook_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2758 if(top)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2759 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(tmp), GTK_POS_TOP);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2760 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2761 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(tmp), GTK_POS_BOTTOM);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2762 gtk_notebook_set_scrollable(GTK_NOTEBOOK(tmp), TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2763 gtk_widget_show(tmp);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2764 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2765 g_object_set_data(G_OBJECT(tmp), "_dw_pagearray", (gpointer)pagearray);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2766 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2767 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2768
2290
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2769 static unsigned int _dw_menugroup = 0;
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2770
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2771 /* Recurse into a menu setting the action groups on the menuparent widget */
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2772 void _dw_menu_set_group_recursive(HMENUI start, GtkWidget *menuparent)
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2773 {
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2774 int z, submenucount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(start), "_dw_submenucount"));
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2775
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2776 for(z=0;z<submenucount;z++)
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2777 {
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2778 char tempbuf[101] = {0};
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2779 HMENUI submenu;
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2780
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2781 snprintf(tempbuf, 100, "_dw_submenu%d", z);
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2782
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2783 if((submenu = g_object_get_data(G_OBJECT(start), tempbuf)))
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2784 {
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2785 if(!g_object_get_data(G_OBJECT(submenu), "_dw_menuparent"))
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2786 {
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2787 int menugroup = DW_POINTER_TO_INT(g_object_get_data(G_OBJECT(submenu), "_dw_menugroup"));
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2788 GSimpleActionGroup *group = g_object_get_data(G_OBJECT(submenu), "_dw_group");
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2789 char tempbuf[25] = {0};
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2790
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2791 snprintf(tempbuf, 24, "menu%d", menugroup);
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2792
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2793 gtk_widget_insert_action_group(GTK_WIDGET(menuparent), tempbuf, G_ACTION_GROUP(group));
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2794 g_object_set_data(G_OBJECT(submenu), "_dw_menuparent", (gpointer)menuparent);
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2795 }
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2796 _dw_menu_set_group_recursive(submenu, menuparent);
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2797 }
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2798 }
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2799 }
2289
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
2800
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2801 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2802 * Create a menu object to be popped up.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2803 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2804 * id: An ID to be used for getting the resource from the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2805 * resource file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2806 */
2310
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
2807 DW_FUNCTION_DEFINITION(dw_menu_new, HMENUI, ULONG cid)
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
2808 DW_FUNCTION_ADD_PARAM1(cid)
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
2809 DW_FUNCTION_RETURN(dw_menu_new, HMENUI)
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
2810 DW_FUNCTION_RESTORE_PARAM1(cid, ULONG)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2811 {
2290
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2812 GMenu *tmp = g_menu_new();
2288
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2813 /* Create the initial section and add it to the menu */
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2814 GMenu *section = g_menu_new();
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2815 GMenuItem *item = g_menu_item_new_section(NULL, G_MENU_MODEL(section));
2289
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
2816 GSimpleActionGroup *group = g_simple_action_group_new();
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
2817
2290
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2818 g_menu_append_item(tmp, item);
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2819
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2820 g_object_set_data(G_OBJECT(tmp), "_dw_menugroup", GINT_TO_POINTER(++_dw_menugroup));
2289
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
2821 g_object_set_data(G_OBJECT(tmp), "_dw_group", (gpointer)group);
2310
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
2822 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2288
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2823 g_object_set_data(G_OBJECT(tmp), "_dw_section", (gpointer)section);
2310
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
2824 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2825 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2826
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2827 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2828 * Create a menubar on a window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2829 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2830 * location: Handle of a window frame to be attached to.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2831 * If there is no box already packed into the "location", the menu will not appear
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2832 * so tell the user.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2833 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2834 DW_FUNCTION_DEFINITION(dw_menubar_new, HMENUI, HWND location)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2835 DW_FUNCTION_ADD_PARAM1(location)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2836 DW_FUNCTION_RETURN(dw_menubar_new, HMENUI)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2837 DW_FUNCTION_RESTORE_PARAM1(location, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2838 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2839 HMENUI tmp = 0;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2840 GtkWidget *box;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2841
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2842 if(GTK_IS_WINDOW(location) &&
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2843 (box = GTK_WIDGET(g_object_get_data(G_OBJECT(location), "_dw_grid"))))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2844 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2845 /* If there is an existing menu bar, remove it */
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2846 GtkWidget *oldmenu = GTK_WIDGET(g_object_get_data(G_OBJECT(location), "_dw_menubar"));
2288
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2847 GMenu *menu = g_menu_new();
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2848 /* Create the initial section and add it to the menu */
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2849 GMenu *section = g_menu_new();
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2850 GMenuItem *item = g_menu_item_new_section(NULL, G_MENU_MODEL(section));
2289
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
2851 GSimpleActionGroup *group = g_simple_action_group_new();
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
2852 char tempbuf[25] = {0};
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
2853
2288
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2854 g_menu_append_item(menu, item);
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2855
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2856 if(oldmenu && GTK_IS_WIDGET(oldmenu))
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2857 gtk_grid_remove(GTK_GRID(box), tmp);
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2858
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2859 /* Create a new menu bar */
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2860 tmp = gtk_popover_menu_bar_new_from_model(G_MENU_MODEL(menu));
2289
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
2861 snprintf(tempbuf, 24, "menu%d", ++_dw_menugroup);
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
2862 gtk_widget_insert_action_group(GTK_WIDGET(tmp), tempbuf, G_ACTION_GROUP(group));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2863 gtk_widget_show(tmp);
2289
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
2864
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2865 /* Save pointers to each other */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2866 g_object_set_data(G_OBJECT(location), "_dw_menubar", (gpointer)tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2867 g_object_set_data(G_OBJECT(tmp), "_dw_window", (gpointer)location);
2289
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
2868 g_object_set_data(G_OBJECT(tmp), "_dw_menugroup", GINT_TO_POINTER(_dw_menugroup));
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
2869 g_object_set_data(G_OBJECT(tmp), "_dw_group", (gpointer)group);
2288
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2870 g_object_set_data(G_OBJECT(tmp), "_dw_section", (gpointer)section);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2871 gtk_grid_attach(GTK_GRID(box), tmp, 0, 0, 1, 1);
2290
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2872 _dw_menu_set_group_recursive(tmp, GTK_WIDGET(tmp));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2873 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2874 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2875 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2876
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2877 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2878 * Destroys a menu created with dw_menubar_new or dw_menu_new.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2879 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2880 * menu: Handle of a menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2881 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2882 DW_FUNCTION_DEFINITION(dw_menu_destroy, void, HMENUI *menu)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2883 DW_FUNCTION_ADD_PARAM1(menu)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2884 DW_FUNCTION_NO_RETURN(dw_menu_destroy)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2885 DW_FUNCTION_RESTORE_PARAM1(menu, HMENUI *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2886 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2887 if(menu && *menu)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2888 {
2284
3361ce6070ce Add DW_FEATURE_TASK_BAR to the feature tests, for taskbar icon support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2282
diff changeset
2889 GtkWidget *window = NULL;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2890
2332
594111e84e89 GTK4: Save pointer to the activate popup menu for a window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2331
diff changeset
2891 /* If it is attached to a window, try to delete the reference to it */
594111e84e89 GTK4: Save pointer to the activate popup menu for a window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2331
diff changeset
2892 if((GTK_IS_POPOVER_MENU_BAR(*menu) || GTK_IS_POPOVER_MENU(*menu)) &&
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2893 (window = GTK_WIDGET(g_object_get_data(G_OBJECT(*menu), "_dw_window"))))
2332
594111e84e89 GTK4: Save pointer to the activate popup menu for a window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2331
diff changeset
2894 {
594111e84e89 GTK4: Save pointer to the activate popup menu for a window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2331
diff changeset
2895 if(GTK_IS_POPOVER_MENU_BAR(*menu))
594111e84e89 GTK4: Save pointer to the activate popup menu for a window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2331
diff changeset
2896 g_object_set_data(G_OBJECT(window), "_dw_menubar", NULL);
594111e84e89 GTK4: Save pointer to the activate popup menu for a window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2331
diff changeset
2897 else
594111e84e89 GTK4: Save pointer to the activate popup menu for a window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2331
diff changeset
2898 g_object_set_data(G_OBJECT(window), "_dw_menu_popup", NULL);
594111e84e89 GTK4: Save pointer to the activate popup menu for a window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2331
diff changeset
2899 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2900 /* Actually destroy the menu */
2284
3361ce6070ce Add DW_FEATURE_TASK_BAR to the feature tests, for taskbar icon support.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2282
diff changeset
2901 if(GTK_IS_WIDGET(*menu) && window)
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2902 {
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2903 GtkWidget *box = GTK_WIDGET(g_object_get_data(G_OBJECT(window), "_dw_grid"));
2332
594111e84e89 GTK4: Save pointer to the activate popup menu for a window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2331
diff changeset
2904
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2905 if(box && GTK_IS_GRID(box))
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2906 gtk_grid_remove(GTK_GRID(box), GTK_WIDGET(*menu));
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2907 else
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2908 g_object_unref(G_OBJECT(*menu));
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2909 }
2290
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2910 else if(G_IS_MENU(*menu))
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2911 g_object_unref(G_OBJECT(*menu));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2912 *menu = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2913 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2914 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2915 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2916
2286
2d282d8fe911 GTK4: Change to how the action name is created, don't use the menu label...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2284
diff changeset
2917 char _dw_removetilde(char *dest, const char *src)
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2918 {
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2919 int z, cur=0;
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2920 char accel = '\0';
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2921
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2922 for(z=0;z<strlen(src);z++)
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2923 {
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2924 if(src[z] == '~')
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2925 {
2286
2d282d8fe911 GTK4: Change to how the action name is created, don't use the menu label...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2284
diff changeset
2926 dest[cur] = '_';
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2927 accel = src[z+1];
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2928 }
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2929 else
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2930 dest[cur] = src[z];
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2931 cur++;
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2932 }
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2933 dest[cur] = 0;
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2934 return accel;
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2935 }
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2936
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2937
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2938 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2939 * Adds a menuitem or submenu to an existing menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2940 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2941 * menu: The handle to the existing menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2942 * title: The title text on the menu item to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2943 * id: An ID to be used for message passing.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2944 * flags: Extended attributes to set on the menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2945 * end: If TRUE memu is positioned at the end of the menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2946 * check: If TRUE menu is "check"able.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2947 * submenu: Handle to an existing menu to be a submenu or NULL.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2948 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2949 DW_FUNCTION_DEFINITION(dw_menu_append_item, HWND, HMENUI menu, const char *title, unsigned long id, unsigned long flags, int end, DW_UNUSED(int check), HMENUI submenu)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2950 DW_FUNCTION_ADD_PARAM7(menu, title, id, flags, end, check, submenu)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2951 DW_FUNCTION_RETURN(dw_menu_append_item, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2952 DW_FUNCTION_RESTORE_PARAM7(menu, HMENUI, title, const char *, id, unsigned long, flags, unsigned long, end, int, DW_UNUSED(check), int, submenu, HMENUI)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2953 {
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2954 GSimpleAction *action = NULL;
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2955 HWND tmphandle = NULL;
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2956 GMenuModel *menumodel;
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2957 char *temptitle = alloca(strlen(title)+1);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2958
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2959 if(menu)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2960 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2961 /* By default we add to the menu's current section */
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2962 menumodel = g_object_get_data(G_OBJECT(menu), "_dw_section");
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2963 _dw_removetilde(temptitle, title);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2964
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2965 /* To add a separator we create a new section and add it */
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2966 if (strlen(temptitle) == 0)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2967 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2968 GMenu *section = g_menu_new();
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2969
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2970 /* If we are creating a new section, add it to the core menu... not the section */
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2971 if(GTK_IS_POPOVER_MENU_BAR(menu))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2972 menumodel = gtk_popover_menu_bar_get_menu_model(GTK_POPOVER_MENU_BAR(menu));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2973 else
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2974 menumodel = G_MENU_MODEL(menu);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2975
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2976 tmphandle = (HWND)g_menu_item_new_section(NULL, G_MENU_MODEL(section));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2977 g_object_set_data(G_OBJECT(menu), "_dw_section", (gpointer)section);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2978 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2979 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2980 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2981 char tempbuf[101] = {0};
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2982
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2983 if(submenu)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2984 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2985 if(G_IS_MENU(submenu))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2986 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2987 int submenucount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menu), "_dw_submenucount"));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2988 GtkWidget *menuparent = GTK_WIDGET(g_object_get_data(G_OBJECT(menu), "_dw_menuparent"));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2989
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2990 /* If the menu being added to is a menu bar, that is the menuparent for submenus */
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2991 if(GTK_IS_POPOVER_MENU_BAR(menu))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2992 menuparent = GTK_WIDGET(menu);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2993
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2994 snprintf(tempbuf, 100, "_dw_submenu%d", submenucount);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2995 submenucount++;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2996 tmphandle = (HWND)g_menu_item_new_submenu(temptitle, G_MENU_MODEL(submenu));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2997 g_object_set_data(G_OBJECT(menu), tempbuf, (gpointer)submenu);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2998 g_object_set_data(G_OBJECT(menu), "_dw_submenucount", GINT_TO_POINTER(submenucount));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2999
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3000 /* If we have a menu parent, use it to create the groups if needed */
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3001 if(menuparent && !g_object_get_data(G_OBJECT(submenu), "_dw_menuparent"))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3002 _dw_menu_set_group_recursive(menu, menuparent);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3003 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3004 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3005 else
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3006 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3007 char numbuf[25] = {0};
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3008 GSimpleActionGroup *group = g_object_get_data(G_OBJECT(menu), "_dw_group");
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3009 int menugroup = DW_POINTER_TO_INT(g_object_get_data(G_OBJECT(menu), "_dw_menugroup"));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3010 char *actionname;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3011
2326
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3012 /* Code to autogenerate a menu ID if not specified or invalid
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3013 * First pool is smaller for transient popup menus
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3014 */
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3015 if(id == (ULONG)-1)
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3016 {
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3017 static ULONG tempid = 60000;
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3018
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3019 tempid++;
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3020 id = tempid;
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3021
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3022 if(tempid > 65500)
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3023 tempid = 60000;
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3024 }
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3025 /* Second pool is larger for more static windows */
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3026 else if(!id || id >= 30000)
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3027 {
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3028 static ULONG menuid = 30000;
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3029
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3030 menuid++;
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3031 if(menuid > 60000)
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3032 menuid = 30000;
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3033 id = menuid;
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3034 }
258c1b9c29f4 GTK4: Implement DW_MENU_AUTO and DW_MENU_POPUP. These weren't necessary on
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2325
diff changeset
3035
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3036 snprintf(tempbuf, 100, "menu%d.action%lu", menugroup, id);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3037 actionname = strchr(tempbuf, '.');
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3038 if(check)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3039 action = g_simple_action_new_stateful(&actionname[1], NULL, g_variant_new_boolean (FALSE));
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3040 else
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3041 action = g_simple_action_new(&actionname[1], NULL);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3042 g_action_map_add_action(G_ACTION_MAP(group), G_ACTION(action));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3043 tmphandle=(HWND)g_menu_item_new(temptitle, tempbuf);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3044 snprintf(numbuf, 24, "%lu", id);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3045 g_object_set_data(G_OBJECT(menu), numbuf, (gpointer)tmphandle);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3046 g_object_set_data(G_OBJECT(tmphandle), "_dw_action", (gpointer)action);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3047 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3048 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3049
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3050 if(end)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3051 g_menu_append_item(G_MENU(menumodel), G_MENU_ITEM(tmphandle));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3052 else
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3053 g_menu_prepend_item(G_MENU(menumodel), G_MENU_ITEM(tmphandle));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3054
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3055 g_object_set_data(G_OBJECT(tmphandle), "_dw_id", GINT_TO_POINTER(id));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3056
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3057 if(action)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3058 g_simple_action_set_enabled(action, (flags & DW_MIS_DISABLED) ? FALSE : TRUE);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3059 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3060 DW_FUNCTION_RETURN_THIS(tmphandle);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3061 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3062
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
3063 GMenuItem *_dw_find_submenu_id(HMENUI start, const char *name)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
3064 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
3065 GMenuItem *tmp;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3066 int z, submenucount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(start), "_dw_submenucount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3067
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3068 if((tmp = g_object_get_data(G_OBJECT(start), name)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3069 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3070
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3071 for(z=0;z<submenucount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3072 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3073 char tempbuf[101] = {0};
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
3074 GMenuItem *menuitem;
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
3075 HMENUI submenu;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3076
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3077 snprintf(tempbuf, 100, "_dw_submenu%d", z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3078
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3079 if((submenu = g_object_get_data(G_OBJECT(start), tempbuf)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3080 {
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
3081 if((menuitem = _dw_find_submenu_id(submenu, name)))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3082 return menuitem;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3083 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3084 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3085 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3086 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3087
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3088 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3089 * Sets the state of a menu item check.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3090 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3091 * menu: The handle the the existing menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3092 * id: Menuitem id.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3093 * check: TRUE for checked FALSE for not checked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3094 * deprecated: use dw_menu_item_set_state()
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3095 */
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3096 DW_FUNCTION_DEFINITION(dw_menu_item_set_check, void, HMENUI menu, ULONG cid, int check)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3097 DW_FUNCTION_ADD_PARAM3(menu, cid, check)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3098 DW_FUNCTION_NO_RETURN(dw_menu_item_set_check)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3099 DW_FUNCTION_RESTORE_PARAM3(menu, HMENUI, cid, ULONG, check, int)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3100 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3101 if(menu)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3102 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3103 char numbuf[25] = {0};
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3104 GMenuItem *tmphandle;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3105
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3106 snprintf(numbuf, 24, "%lu", cid);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3107 tmphandle = _dw_find_submenu_id(menu, numbuf);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3108
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3109 if(tmphandle && G_IS_MENU_ITEM(tmphandle))
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3110 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3111 GSimpleAction *action = g_object_get_data(G_OBJECT(tmphandle), "_dw_action");
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3112
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3113 if(action)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3114 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3115 GVariant *action_state = g_action_get_state(G_ACTION(action));
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3116 gboolean thischeck = check;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3117
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3118 if(!action_state || (g_variant_get_boolean(action_state) != thischeck))
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3119 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3120 GVariant *new_state = g_variant_new_boolean(thischeck);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3121 g_simple_action_set_state(action, new_state);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3122 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3123 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3124 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3125 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3126 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3127 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3128
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3129 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3130 * Sets the state of a menu item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3131 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3132 * menu: The handle the the existing menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3133 * id: Menuitem id.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3134 * state: TRUE for checked FALSE for not checked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3135 */
2310
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3136 DW_FUNCTION_DEFINITION(dw_menu_item_set_state, void, HMENUI menu, ULONG cid, ULONG state)
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3137 DW_FUNCTION_ADD_PARAM3(menu, cid, state)
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3138 DW_FUNCTION_NO_RETURN(dw_menu_item_set_state)
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3139 DW_FUNCTION_RESTORE_PARAM3(menu, HMENUI, cid, ULONG, state, ULONG)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3140 {
2310
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3141 if(menu)
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3142 {
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3143 char numbuf[25] = {0};
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3144 GMenuItem *tmphandle;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3145
2310
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3146 snprintf(numbuf, 24, "%lu", cid);
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3147 tmphandle = _dw_find_submenu_id(menu, numbuf);
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3148
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3149 if(tmphandle && G_IS_MENU_ITEM(tmphandle))
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3150 {
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3151 GSimpleAction *action = g_object_get_data(G_OBJECT(tmphandle), "_dw_action");
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3152
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3153 if(action)
2310
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3154 {
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3155 if((state & DW_MIS_CHECKED) || (state & DW_MIS_UNCHECKED))
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3156 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3157 GVariant *action_state = g_action_get_state(G_ACTION(action));
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3158 gboolean check = false;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3159
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3160 if(state & DW_MIS_CHECKED)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3161 check = true;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3162
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3163 if(!action_state || (g_variant_get_boolean(action_state) != check))
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3164 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3165 GVariant *new_state = g_variant_new_boolean(check);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3166 g_simple_action_set_state(action, new_state);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3167 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3168 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3169 if((state & DW_MIS_ENABLED) || (state & DW_MIS_DISABLED))
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3170 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3171 if(state & DW_MIS_ENABLED)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3172 g_simple_action_set_enabled(action, TRUE);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3173 else
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3174 g_simple_action_set_enabled(action, FALSE);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3175 }
2310
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3176 }
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3177 }
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3178 }
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3179 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3180 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3181
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3182 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3183 * Deletes the menu item specified.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3184 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3185 * menu: The handle to the menu in which the item was appended.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3186 * id: Menuitem id.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3187 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3188 * DW_ERROR_NONE (0) on success or DW_ERROR_UNKNOWN on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3189 */
2310
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3190 DW_FUNCTION_DEFINITION(dw_menu_delete_item, int, HMENUI menu, ULONG cid)
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3191 DW_FUNCTION_ADD_PARAM2(menu, cid)
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3192 DW_FUNCTION_RETURN(dw_menu_delete_item, int)
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3193 DW_FUNCTION_RESTORE_PARAM2(menu, HMENUI, cid, ULONG)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3194 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3195 int ret = DW_ERROR_UNKNOWN;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3196 char numbuf[25] = {0};
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
3197 GMenuItem *tmphandle;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3198
2310
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3199 if(menu)
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3200 {
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3201 snprintf(numbuf, 24, "%lu", cid);
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3202 tmphandle = _dw_find_submenu_id(menu, numbuf);
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3203
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3204 if(tmphandle && G_IS_MENU_ITEM(tmphandle))
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3205 {
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3206 /* g_menu_remove(menu, position); */
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3207 g_object_unref(G_OBJECT(tmphandle));
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3208 g_object_set_data(G_OBJECT(menu), numbuf, NULL);
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3209 ret = DW_ERROR_NONE;
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3210 }
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3211 }
5df7b1431d1a GTK4: Moved the rest of the menu functions into thread safety to try to fix
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2309
diff changeset
3212 DW_FUNCTION_RETURN_THIS(ret);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3213 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3214
2300
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3215 /* Delayed unparent of the popup menu from the parent */
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3216 gboolean _dw_idle_popover_unparent(gpointer data)
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3217 {
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3218 GtkWidget *self = GTK_WIDGET(data);
2331
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3219 GtkWidget *box, *window = g_object_get_data(G_OBJECT(self), "_dw_window");
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3220
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3221 if(window && GTK_IS_WINDOW(window) &&
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3222 (box = g_object_get_data(G_OBJECT(window), "_dw_grid")) && GTK_IS_GRID(box))
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3223 gtk_grid_remove(GTK_GRID(box), self);
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3224 else
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3225 gtk_widget_unparent(self);
2300
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3226 return false;
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3227 }
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3228
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3229 void _dw_popover_menu_closed(GtkPopover *self, gpointer data)
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3230 {
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3231 GtkWidget *parent = GTK_WIDGET(data);
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3232
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3233 /* Can't unparent immediately, since the "activate" signal happens second...
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3234 * so we have to delay unparenting until the "activate" handler runs.
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3235 */
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3236 if(GTK_IS_WIDGET(parent) && GTK_IS_POPOVER(self))
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3237 g_idle_add(G_SOURCE_FUNC(_dw_idle_popover_unparent), (gpointer)self);
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3238 }
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3239
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3240 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3241 * Pops up a context menu at given x and y coordinates.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3242 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3243 * menu: The handle the the existing menu.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3244 * parent: Handle to the window initiating the popup.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3245 * x: X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3246 * y: Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3247 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3248 DW_FUNCTION_DEFINITION(dw_menu_popup, void, HMENUI *menu, HWND parent, int x, int y)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3249 DW_FUNCTION_ADD_PARAM4(menu, parent, x, y)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3250 DW_FUNCTION_NO_RETURN(dw_menu_popup)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3251 DW_FUNCTION_RESTORE_PARAM4(menu, HMENUI *, parent, HWND, x, int, y, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3252 {
2290
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
3253 if(menu && *menu && G_MENU(*menu))
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
3254 {
2290
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
3255 GtkWidget *tmp = gtk_popover_menu_new_from_model_full(G_MENU_MODEL(*menu), GTK_POPOVER_MENU_NESTED);
2302
785775b9002f GTK4: Use gtk_popover_set_pointing_to() to position the popover instead of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2301
diff changeset
3256 GdkRectangle rect = { x, y, 1, 1 };
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
3257
2331
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3258 if(GTK_IS_WINDOW(parent))
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3259 {
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3260 GtkWidget *box = g_object_get_data(G_OBJECT(parent), "_dw_grid");
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3261
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3262 if(box && GTK_IS_GRID(box))
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3263 {
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3264 gtk_grid_attach(GTK_GRID(box), tmp, 65535, 65535, 1, 1);
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3265 g_object_set_data(G_OBJECT(tmp), "_dw_window", (gpointer)parent);
2332
594111e84e89 GTK4: Save pointer to the activate popup menu for a window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2331
diff changeset
3266 g_object_set_data(G_OBJECT(parent), "_dw_menu_popup", (gpointer)tmp);
2331
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3267 }
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3268 }
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3269 else
addbd7db1e5c GTK4: If parent passed to dw_menu_popup() is a GtkWindow, add the popup to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2330
diff changeset
3270 gtk_widget_set_parent(tmp, GTK_WIDGET(parent));
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
3271
2303
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3272 if(!g_object_get_data(G_OBJECT(*menu), "_dw_menuparent"))
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3273 {
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3274 int menugroup = DW_POINTER_TO_INT(g_object_get_data(G_OBJECT(*menu), "_dw_menugroup"));
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3275 GSimpleActionGroup *group = g_object_get_data(G_OBJECT(*menu), "_dw_group");
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3276 char tempbuf[25] = {0};
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3277
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3278 snprintf(tempbuf, 24, "menu%d", menugroup);
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3279
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3280 gtk_widget_insert_action_group(GTK_WIDGET(tmp), tempbuf, G_ACTION_GROUP(group));
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3281 g_object_set_data(G_OBJECT(*menu), "_dw_menuparent", (gpointer)tmp);
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3282 }
2290
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
3283 _dw_menu_set_group_recursive(*menu, GTK_WIDGET(tmp));
2300
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3284 gtk_popover_set_autohide(GTK_POPOVER(tmp), TRUE);
2302
785775b9002f GTK4: Use gtk_popover_set_pointing_to() to position the popover instead of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2301
diff changeset
3285 gtk_popover_set_has_arrow (GTK_POPOVER(tmp), FALSE);
785775b9002f GTK4: Use gtk_popover_set_pointing_to() to position the popover instead of
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2301
diff changeset
3286 gtk_popover_set_pointing_to(GTK_POPOVER(tmp), &rect);
2300
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3287 g_signal_connect(G_OBJECT(tmp), "closed", G_CALLBACK(_dw_popover_menu_closed), (gpointer)parent);
2299
27c20fa1615e GTK4: Fix a crash while trying to create a popup menu...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2295
diff changeset
3288 gtk_popover_popup(GTK_POPOVER(tmp));
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
3289 *menu = NULL;
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
3290 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3291 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3292 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3293
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3294
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3295 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3296 * Returns the current X and Y coordinates of the mouse pointer.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3297 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3298 * x: Pointer to variable to store X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3299 * y: Pointer to variable to store Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3300 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3301 DW_FUNCTION_DEFINITION(dw_pointer_query_pos, void, long *x, long *y)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3302 DW_FUNCTION_ADD_PARAM2(x, y)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3303 DW_FUNCTION_NO_RETURN(dw_pointer_query_pos)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3304 DW_FUNCTION_RESTORE_PARAM2(x, long *, y, long *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3305 {
2278
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
3306 GdkSeat *seat = gdk_display_get_default_seat(gdk_display_get_default());
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
3307 GdkDevice *mouse = gdk_seat_get_pointer(seat);
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
3308 double dx, dy;
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
3309
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
3310 gdk_device_get_surface_at_position(mouse, &dx, &dy);
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
3311
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3312 if(x)
2278
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
3313 *x = (long)dx;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3314 if(y)
2278
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
3315 *y = (long)dy;
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3316 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3317 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3318
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3319 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3320 * Sets the X and Y coordinates of the mouse pointer.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3321 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3322 * x: X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3323 * y: Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3324 */
2322
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3325 #ifndef GDK_WINDOWING_X11
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
3326 void API dw_pointer_set_pos(long x, long y)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3327 {
2322
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3328 }
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3329 #else
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3330 DW_FUNCTION_DEFINITION(dw_pointer_set_pos, void, long x, long y)
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3331 DW_FUNCTION_ADD_PARAM2(x, y)
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3332 DW_FUNCTION_NO_RETURN(dw_pointer_set_pos)
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3333 DW_FUNCTION_RESTORE_PARAM2(x, long, y, long)
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3334 {
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3335 GdkDisplay *display = gdk_display_get_default();
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3336
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
3337 if(display && GDK_IS_X11_DISPLAY(display))
2322
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3338 {
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3339 Display *xdisplay = gdk_x11_display_get_xdisplay(display);
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3340 Window xrootwin = gdk_x11_display_get_xrootwindow(display);
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3341
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3342 if(xdisplay)
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3343 XWarpPointer(xdisplay, None, xrootwin, 0, 0, 0, 0, (int)x, (int)y);
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3344 }
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3345 DW_FUNCTION_RETURN_NOTHING;
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3346 }
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3347 #endif
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3348
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3349 #define _DW_TREE_CONTAINER 1
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3350 #define _DW_TREE_TREE 2
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3351 #define _DW_TREE_LISTBOX 3
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3352
2287
680212c356e3 GTK4: Refactor tree and fix DW_SIGNAL_ITEM_CONTEXT signals on tree view
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2286
diff changeset
3353 GtkWidget *_dw_tree_create(unsigned long id)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3354 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3355 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3356
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3357 tmp = gtk_scrolled_window_new();
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3358 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (tmp),
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3359 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3360
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3361 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3362 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3363 return tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3364 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3365
2287
680212c356e3 GTK4: Refactor tree and fix DW_SIGNAL_ITEM_CONTEXT signals on tree view
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2286
diff changeset
3366 GtkWidget *_dw_tree_view_setup(GtkWidget *tmp, GtkTreeModel *store)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3367 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3368 GtkWidget *tree = gtk_tree_view_new_with_model(store);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3369 gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tree), FALSE);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3370 gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(tmp), tree);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3371 g_object_set_data(G_OBJECT(tmp), "_dw_user", (gpointer)tree);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3372 return tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3373 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3374
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3375 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3376 * Create a container object to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3377 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3378 * id: An ID to be used for getting the resource from the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3379 * resource file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3380 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3381 DW_FUNCTION_DEFINITION(dw_container_new, HWND, ULONG cid, int multi)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3382 DW_FUNCTION_ADD_PARAM2(cid, multi)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3383 DW_FUNCTION_RETURN(dw_container_new, HWND)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3384 DW_FUNCTION_RESTORE_PARAM2(cid, ULONG, multi, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3385 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3386 GtkWidget *tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3387
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3388 if((tmp = _dw_tree_create(cid)))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3389 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3390 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3391 g_object_set_data(G_OBJECT(tmp), "_dw_multi_sel", GINT_TO_POINTER(multi));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3392 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3393 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3394 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3395
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3396 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3397 * Create a tree object to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3398 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3399 * id: An ID to be used for getting the resource from the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3400 * resource file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3401 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3402 DW_FUNCTION_DEFINITION(dw_tree_new, HWND, ULONG cid)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3403 DW_FUNCTION_ADD_PARAM1(cid)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3404 DW_FUNCTION_RETURN(dw_tree_new, HWND)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3405 DW_FUNCTION_RESTORE_PARAM1(cid, ULONG)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3406 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3407 GtkWidget *tmp, *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3408 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3409 GtkTreeViewColumn *col;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3410 GtkCellRenderer *rend;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3411 GtkTreeSelection *sel;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3412
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3413 if((tmp = _dw_tree_create(cid)))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3414 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3415 store = gtk_tree_store_new(4, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_POINTER, G_TYPE_POINTER);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3416 tree = _dw_tree_view_setup(tmp, GTK_TREE_MODEL(store));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3417 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_TREE));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3418 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_TREE));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3419 col = gtk_tree_view_column_new();
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3420
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3421 rend = gtk_cell_renderer_pixbuf_new();
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3422 gtk_tree_view_column_pack_start(col, rend, FALSE);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3423 gtk_tree_view_column_add_attribute(col, rend, "pixbuf", 1);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3424 rend = gtk_cell_renderer_text_new();
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3425 gtk_tree_view_column_pack_start(col, rend, TRUE);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3426 gtk_tree_view_column_add_attribute(col, rend, "text", 0);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3427
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3428 gtk_tree_view_append_column(GTK_TREE_VIEW (tree), col);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3429 gtk_tree_view_set_expander_column(GTK_TREE_VIEW(tree), col);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3430 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3431
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3432 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3433 gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3434 gtk_widget_show(tree);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3435
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3436 if(_DWDefaultFont)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3437 dw_window_set_font(tmp, _DWDefaultFont);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3438 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3439 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3440 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3441
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3442
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3443 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3444 * Create a new static text window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3445 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3446 * text: The text to be display by the static text widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3447 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3448 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3449 DW_FUNCTION_DEFINITION(dw_text_new, HWND, const char *text, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3450 DW_FUNCTION_ADD_PARAM2(text, cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3451 DW_FUNCTION_RETURN(dw_text_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3452 DW_FUNCTION_RESTORE_PARAM2(text, const char *, cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3453 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3454 GtkWidget *tmp = gtk_label_new(text);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3455
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3456 /* Left and centered */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3457 gtk_label_set_xalign(GTK_LABEL(tmp), 0.0f);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3458 gtk_label_set_yalign(GTK_LABEL(tmp), 0.5f);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3459 gtk_widget_show(tmp);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3460 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3461 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3462 dw_window_set_font(tmp, _DWDefaultFont);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3463 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3464 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3465
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3466 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3467 * Create a new status text window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3468 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3469 * text: The text to be display by the static text widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3470 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3471 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3472 DW_FUNCTION_DEFINITION(dw_status_text_new, HWND, const char *text, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3473 DW_FUNCTION_ADD_PARAM2(text, cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3474 DW_FUNCTION_RETURN(dw_status_text_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3475 DW_FUNCTION_RESTORE_PARAM2(text, const char *, cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3476 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3477 GtkWidget *tmp, *frame = gtk_frame_new(NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3478 tmp = gtk_label_new(text);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3479 gtk_frame_set_child(GTK_FRAME(frame), tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3480 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3481 gtk_widget_show(frame);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3482
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3483 /* Left and centered */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3484 gtk_label_set_xalign(GTK_LABEL(tmp), 0.0f);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3485 gtk_label_set_yalign(GTK_LABEL(tmp), 0.5f);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3486 g_object_set_data(G_OBJECT(frame), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3487 g_object_set_data(G_OBJECT(frame), "_dw_label", (gpointer)tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3488 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3489 dw_window_set_font(tmp, _DWDefaultFont);
2306
558959a64772 GTK4: Fix thread safety while using dw_main() and fix an status text issue.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2305
diff changeset
3490 DW_FUNCTION_RETURN_THIS(frame);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3491 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3492
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3493 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3494 * Create a new Multiline Editbox window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3495 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3496 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3497 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3498 DW_FUNCTION_DEFINITION(dw_mle_new, HWND, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3499 DW_FUNCTION_ADD_PARAM1(cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3500 DW_FUNCTION_RETURN(dw_mle_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3501 DW_FUNCTION_RESTORE_PARAM1(cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3502 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3503 GtkWidget *tmp, *tmpbox = gtk_scrolled_window_new();
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3504 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(tmpbox),
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3505 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3506 tmp = gtk_text_view_new();
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3507 gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(tmpbox), tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3508 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tmp), GTK_WRAP_WORD);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3509
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3510 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3511 g_object_set_data(G_OBJECT(tmpbox), "_dw_user", (gpointer)tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3512 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3513 gtk_widget_show(tmpbox);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3514 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3515 dw_window_set_font(tmpbox, _DWDefaultFont);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3516 DW_FUNCTION_RETURN_THIS(tmpbox);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3517 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3518
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3519 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3520 * Create a new Entryfield window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3521 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3522 * text: The default text to be in the entryfield widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3523 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3524 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3525 DW_FUNCTION_DEFINITION(dw_entryfield_new, HWND, const char *text, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3526 DW_FUNCTION_ADD_PARAM2(text, cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3527 DW_FUNCTION_RETURN(dw_entryfield_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3528 DW_FUNCTION_RESTORE_PARAM2(text, const char *, cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3529 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3530 GtkEntryBuffer *buffer = gtk_entry_buffer_new(text, -1);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3531 GtkWidget *tmp = gtk_entry_new_with_buffer(buffer);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3532
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3533 gtk_widget_show(tmp);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3534 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3535
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3536 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3537 dw_window_set_font(tmp, _DWDefaultFont);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3538 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3539 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3540
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3541 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3542 * Create a new Entryfield (password) window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3543 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3544 * text: The default text to be in the entryfield widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3545 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3546 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3547 DW_FUNCTION_DEFINITION(dw_entryfield_password_new, HWND, const char *text, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3548 DW_FUNCTION_ADD_PARAM2(text, cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3549 DW_FUNCTION_RETURN(dw_entryfield_password_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3550 DW_FUNCTION_RESTORE_PARAM2(text, const char *, cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3551 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3552 GtkEntryBuffer *buffer = gtk_entry_buffer_new(text, -1);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3553 GtkWidget *tmp = gtk_entry_new_with_buffer(buffer);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3554
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3555 gtk_entry_set_visibility(GTK_ENTRY(tmp), FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3556
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3557 gtk_widget_show(tmp);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3558 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3559
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3560 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3561 dw_window_set_font(tmp, _DWDefaultFont);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3562 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3563 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3564
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3565 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3566 * Create a new Combobox window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3567 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3568 * text: The default text to be in the combpbox widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3569 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3570 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3571 DW_FUNCTION_DEFINITION(dw_combobox_new, HWND, const char *text, ULONG cid)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3572 DW_FUNCTION_ADD_PARAM2(text, cid)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3573 DW_FUNCTION_RETURN(dw_combobox_new, HWND)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3574 DW_FUNCTION_RESTORE_PARAM2(text, const char *, cid, ULONG)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3575 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3576 GtkWidget *tmp;
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3577 GtkEntryBuffer *buffer;
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3578 GtkListStore *store = gtk_list_store_new(1, G_TYPE_STRING);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3579 tmp = gtk_combo_box_new_with_model_and_entry(GTK_TREE_MODEL(store));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3580 gtk_combo_box_set_entry_text_column(GTK_COMBO_BOX(tmp), 0);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3581 buffer = gtk_entry_get_buffer(GTK_ENTRY(gtk_combo_box_get_child(GTK_COMBO_BOX(tmp))));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3582 gtk_entry_buffer_set_max_length(buffer, 0);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3583 gtk_entry_buffer_set_text(buffer, text, -1);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3584 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3585 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_COMBOBOX));
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3586 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3587 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3588 dw_window_set_font(tmp, _DWDefaultFont);
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3589 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3590 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3591
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3592 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3593 * Create a new button window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3594 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3595 * text: The text to be display by the static text widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3596 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3597 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3598 DW_FUNCTION_DEFINITION(dw_button_new, HWND, const char *text, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3599 DW_FUNCTION_ADD_PARAM2(text, cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3600 DW_FUNCTION_RETURN(dw_button_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3601 DW_FUNCTION_RESTORE_PARAM2(text, const char *, cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3602 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3603 GtkWidget *tmp = gtk_button_new_with_label(text);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3604 gtk_widget_show(tmp);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3605 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3606 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3607 dw_window_set_font(tmp, _DWDefaultFont);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3608 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3609 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3610
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3611 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3612 * Create a new bitmap button window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3613 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3614 * text: Bubble help text to be displayed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3615 * id: An ID of a bitmap in the resource file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3616 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3617 DW_FUNCTION_DEFINITION(dw_bitmapbutton_new, HWND, const char *text, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3618 DW_FUNCTION_ADD_PARAM2(text, cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3619 DW_FUNCTION_RETURN(dw_bitmapbutton_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3620 DW_FUNCTION_RESTORE_PARAM2(text, const char *, cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3621 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3622 GtkWidget *tmp = gtk_button_new();
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3623 GtkWidget *bitmap = dw_bitmap_new(cid);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3624
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3625 if(bitmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3626 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3627 dw_window_set_bitmap(bitmap, cid, NULL);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3628 gtk_button_set_child(GTK_BUTTON(tmp), bitmap);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3629 g_object_set_data(G_OBJECT(tmp), "_dw_bitmap", bitmap);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3630 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3631 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3632 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3633 gtk_widget_set_tooltip_text(tmp, text);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3634 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3635 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3636 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3637
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3638 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3639 * Create a new bitmap button window (widget) to be packed from a file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3640 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3641 * label_text: Text to display on button. TBD when Windows works
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3642 * text: Bubble help text to be displayed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3643 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3644 * filename: Name of the file, omit extention to have
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3645 * DW pick the appropriate file extension.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3646 * (BMP on OS/2 or Windows, XPM on Unix)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3647 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3648 DW_FUNCTION_DEFINITION(dw_bitmapbutton_new_from_file, HWND, const char *text, ULONG cid, const char *filename)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3649 DW_FUNCTION_ADD_PARAM3(text, cid, filename)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3650 DW_FUNCTION_RETURN(dw_bitmapbutton_new_from_file, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3651 DW_FUNCTION_RESTORE_PARAM3(text, const char *, cid, ULONG, filename, const char *)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3652 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3653 GtkWidget *tmp = gtk_button_new();
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3654 GtkWidget *bitmap = dw_bitmap_new(cid);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3655
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3656 if(bitmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3657 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3658 dw_window_set_bitmap(bitmap, 0, filename);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3659 gtk_button_set_child(GTK_BUTTON(tmp), bitmap);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3660 g_object_set_data(G_OBJECT(tmp), "_dw_bitmap", bitmap);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3661 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3662 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3663 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3664 gtk_widget_set_tooltip_text(tmp, text);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3665 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3666 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3667 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3668
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3669 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3670 * Create a new bitmap button window (widget) to be packed from data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3671 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3672 * text: Bubble help text to be displayed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3673 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3674 * data: Raw data of image.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3675 * (BMP on OS/2 or Windows, XPM on Unix)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3676 * len: Length of raw data
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3677 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3678 DW_FUNCTION_DEFINITION(dw_bitmapbutton_new_from_data, HWND, const char *text, ULONG cid, const char *data, int len)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3679 DW_FUNCTION_ADD_PARAM4(text, cid, data, len)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3680 DW_FUNCTION_RETURN(dw_bitmapbutton_new_from_data, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3681 DW_FUNCTION_RESTORE_PARAM4(text, const char *, cid, ULONG, data, const char *, len, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3682 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3683 GtkWidget *tmp = gtk_button_new();
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3684 GtkWidget *bitmap = dw_bitmap_new(cid);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3685
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3686 if(bitmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3687 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3688 dw_window_set_bitmap_from_data(bitmap, 0, data, len);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3689 gtk_button_set_child(GTK_BUTTON(tmp), bitmap);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3690 g_object_set_data(G_OBJECT(tmp), "_dw_bitmap", bitmap);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3691 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3692 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3693 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3694 gtk_widget_set_tooltip_text(tmp, text);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3695 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3696 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3697 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3698
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3699 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3700 * Create a new spinbutton window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3701 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3702 * text: The text to be display by the static text widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3703 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3704 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3705 DW_FUNCTION_DEFINITION(dw_spinbutton_new, HWND, const char *text, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3706 DW_FUNCTION_ADD_PARAM2(text, cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3707 DW_FUNCTION_RETURN(dw_spinbutton_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3708 DW_FUNCTION_RESTORE_PARAM2(text, const char *, cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3709 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3710 GtkAdjustment *adj = (GtkAdjustment *)gtk_adjustment_new((float)atoi(text), -65536.0, 65536.0, 1.0, 5.0, 0.0);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3711 GtkWidget *tmp = gtk_spin_button_new(adj, 0, 0);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3712
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3713 gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(tmp), TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3714 gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(tmp), TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3715 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3716 g_object_set_data(G_OBJECT(tmp), "_dw_adjustment", (gpointer)adj);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3717 g_object_set_data(G_OBJECT(adj), "_dw_spinbutton", (gpointer)tmp);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3718 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3719 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3720 dw_window_set_font(tmp, _DWDefaultFont);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3721 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3722 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3723
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3724 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3725 * Create a new radiobutton window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3726 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3727 * text: The text to be display by the static text widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3728 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3729 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3730 DW_FUNCTION_DEFINITION(dw_radiobutton_new, HWND, const char *text, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3731 DW_FUNCTION_ADD_PARAM2(text, cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3732 DW_FUNCTION_RETURN(dw_radiobutton_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3733 DW_FUNCTION_RESTORE_PARAM2(text, const char *, cid, ULONG)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3734 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3735 GtkWidget *tmp = gtk_toggle_button_new_with_label(text);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3736 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3737 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3738
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3739 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3740 dw_window_set_font(tmp, _DWDefaultFont);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3741 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3742 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3743
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3744 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3745 * Create a new slider window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3746 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3747 * vertical: TRUE or FALSE if slider is vertical.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3748 * increments: Number of increments available.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3749 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3750 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3751 DW_FUNCTION_DEFINITION(dw_slider_new, HWND, int vertical, int increments, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3752 DW_FUNCTION_ADD_PARAM3(vertical, increments, cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3753 DW_FUNCTION_RETURN(dw_slider_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3754 DW_FUNCTION_RESTORE_PARAM3(vertical, int, increments, int, cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3755
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3756 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3757 GtkAdjustment *adjustment = (GtkAdjustment *)gtk_adjustment_new(0, 0, (gfloat)increments, 1, 1, 1);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3758 GtkWidget *tmp = gtk_scale_new(vertical ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL, adjustment);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3759
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3760 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3761 gtk_scale_set_draw_value(GTK_SCALE(tmp), 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3762 gtk_scale_set_digits(GTK_SCALE(tmp), 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3763 g_object_set_data(G_OBJECT(tmp), "_dw_adjustment", (gpointer)adjustment);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3764 g_object_set_data(G_OBJECT(adjustment), "_dw_slider", (gpointer)tmp);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3765 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3766 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3767 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3768
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3769 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3770 * Create a new scrollbar window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3771 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3772 * vertical: TRUE or FALSE if scrollbar is vertical.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3773 * increments: Number of increments available.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3774 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3775 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3776 DW_FUNCTION_DEFINITION(dw_scrollbar_new, HWND, int vertical, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3777 DW_FUNCTION_ADD_PARAM2(vertical, cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3778 DW_FUNCTION_RETURN(dw_scrollbar_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3779 DW_FUNCTION_RESTORE_PARAM2(vertical, int, cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3780 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3781 GtkAdjustment *adjustment = (GtkAdjustment *)gtk_adjustment_new(0, 0, 0, 1, 1, 1);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3782 GtkWidget *tmp = gtk_scrollbar_new(vertical ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL, adjustment);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3783
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3784 gtk_widget_set_can_focus(tmp, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3785 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3786 g_object_set_data(G_OBJECT(tmp), "_dw_adjustment", (gpointer)adjustment);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3787 g_object_set_data(G_OBJECT(adjustment), "_dw_scrollbar", (gpointer)tmp);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3788 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3789 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3790 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3791
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3792 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3793 * Create a new percent bar window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3794 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3795 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3796 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3797 DW_FUNCTION_DEFINITION(dw_percent_new, HWND, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3798 DW_FUNCTION_ADD_PARAM1(cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3799 DW_FUNCTION_RETURN(dw_percent_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3800 DW_FUNCTION_RESTORE_PARAM1(cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3801
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3802 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3803 GtkWidget *tmp = gtk_progress_bar_new();
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3804 gtk_widget_show(tmp);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3805 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3806 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3807 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3808
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3809 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3810 * Create a new checkbox window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3811 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3812 * text: The text to be display by the static text widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3813 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3814 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3815 DW_FUNCTION_DEFINITION(dw_checkbox_new, HWND, const char *text, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3816 DW_FUNCTION_ADD_PARAM2(text, cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3817 DW_FUNCTION_RETURN(dw_checkbox_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3818 DW_FUNCTION_RESTORE_PARAM2(text, const char *, cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3819 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3820 GtkWidget *tmp = gtk_check_button_new_with_label(text);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3821 gtk_widget_show(tmp);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3822 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3823 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3824 dw_window_set_font(tmp, _DWDefaultFont);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3825 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3826 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3827
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3828 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3829 * Create a new listbox window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3830 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3831 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3832 * multi: Multiple select TRUE or FALSE.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3833 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3834 DW_FUNCTION_DEFINITION(dw_listbox_new, HWND, ULONG cid, int multi)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3835 DW_FUNCTION_ADD_PARAM2(cid, multi)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3836 DW_FUNCTION_RETURN(dw_listbox_new, HWND)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3837 DW_FUNCTION_RESTORE_PARAM2(cid, ULONG, multi, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3838 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3839 GtkWidget *tmp, *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3840 GtkListStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3841 GtkTreeViewColumn *col;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3842 GtkCellRenderer *rend;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3843 GtkTreeSelection *sel;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3844
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3845 if((tmp = _dw_tree_create(cid)))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3846 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3847 store = gtk_list_store_new(1, G_TYPE_STRING);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3848 tree = _dw_tree_view_setup(tmp, GTK_TREE_MODEL(store));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3849 g_object_set_data(G_OBJECT(tmp), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3850 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3851
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3852 col = gtk_tree_view_column_new();
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3853 rend = gtk_cell_renderer_text_new();
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3854 gtk_tree_view_column_pack_start(col, rend, TRUE);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3855 gtk_tree_view_column_add_attribute(col, rend, "text", 0);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3856
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3857 gtk_tree_view_append_column(GTK_TREE_VIEW (tree), col);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3858 gtk_tree_view_set_expander_column(GTK_TREE_VIEW(tree), col);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3859 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3860
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3861 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3862 if(multi)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3863 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3864 else
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3865 gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3866 gtk_widget_show(tree);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3867 if(_DWDefaultFont)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3868 dw_window_set_font(tmp, _DWDefaultFont);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3869 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3870 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3871 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3872
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3873 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3874 * Sets the icon used for a given window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3875 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3876 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3877 * id: An ID to be used to specify the icon.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3878 */
2319
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3879 DW_FUNCTION_DEFINITION(dw_window_set_icon, void, HWND handle, HICN icon)
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3880 DW_FUNCTION_ADD_PARAM2(handle, icon)
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3881 DW_FUNCTION_NO_RETURN(dw_window_set_icon)
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3882 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, icon, HICN)
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3883 {
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3884 if(handle && GTK_IS_WINDOW(handle))
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3885 {
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3886 int rid = GPOINTER_TO_INT(icon);
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3887
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3888 if(rid < 65536)
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3889 {
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3890 GdkDisplay *display = gdk_display_get_default();
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3891 GtkIconTheme *theme = gtk_icon_theme_get_for_display(display);
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3892
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3893 if(theme)
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3894 {
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3895 char resource_path[201] = {0};
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3896 char window_icon[25] = {0};
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3897
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3898 snprintf(resource_path, 200, "%s%u.png", _DW_RESOURCE_PATH, rid);
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3899 gtk_icon_theme_add_resource_path(theme, _DW_RESOURCE_PATH);
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3900 snprintf(window_icon, 24, "%u", rid);
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3901 gtk_window_set_icon_name(GTK_WINDOW(handle), window_icon);
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3902 }
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3903 }
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3904 }
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
3905 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3906 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3907
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3908 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3909 * Sets the bitmap used for a given static window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3910 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3911 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3912 * id: An ID to be used to specify the icon,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3913 * (pass 0 if you use the filename param)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3914 * filename: a path to a file (Bitmap on OS/2 or
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3915 * Windows and a pixmap on Unix, pass
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3916 * NULL if you use the id param)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3917 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3918 DW_FUNCTION_DEFINITION(dw_window_set_bitmap, void, HWND handle, unsigned long id, const char *filename)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3919 DW_FUNCTION_ADD_PARAM3(handle, id, filename)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3920 DW_FUNCTION_NO_RETURN(dw_window_set_bitmap)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3921 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, id, ULONG, filename, const char *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3922 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3923 GdkPixbuf *tmp = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3924
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3925 if(id)
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
3926 tmp = _dw_find_pixbuf((HICN)id, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3927 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3928 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3929 char *file = alloca(strlen(filename) + 6);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3930
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3931 strcpy(file, filename);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3932
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3933 /* check if we can read from this file (it exists and read permission) */
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3934 if(access(file, 04) != 0)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3935 {
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
3936 int i = 0;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
3937
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3938 /* Try with various extentions */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
3939 while(_dw_image_exts[i] && !tmp)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3940 {
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3941 strcpy(file, filename);
2312
ada8f7610df0 GTK4: Fix building with -D_DW_SINGLE_THREADED and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2311
diff changeset
3942 strcat(file, _dw_image_exts[i]);
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3943 if(access(file, 04) == 0)
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
3944 tmp = gdk_pixbuf_new_from_file(file, NULL);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
3945 i++;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3946 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3947 }
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
3948 else
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3949 tmp = gdk_pixbuf_new_from_file(file, NULL);
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3950 }
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3951
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3952 if(tmp)
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3953 {
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3954 if(GTK_IS_BUTTON(handle))
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3955 {
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3956 GtkWidget *pixmap = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_bitmap");
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3957 if(pixmap)
2366
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
3958 gtk_picture_set_pixbuf(GTK_PICTURE(pixmap), tmp);
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
3959 }
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
3960 else if(GTK_IS_PICTURE(handle))
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
3961 gtk_picture_set_pixbuf(GTK_PICTURE(handle), tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3962 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3963 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3964 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3965
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3966 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3967 * Sets the bitmap used for a given static window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3968 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3969 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3970 * id: An ID to be used to specify the icon,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3971 * (pass 0 if you use the filename param)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3972 * data: the image data
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3973 * Bitmap on Windows and a pixmap on Unix, pass
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3974 * NULL if you use the id param)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3975 * len: length of data
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3976 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3977 DW_FUNCTION_DEFINITION(dw_window_set_bitmap_from_data, void, HWND handle, unsigned long id, const char *data, int len)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3978 DW_FUNCTION_ADD_PARAM4(handle, id, data, len)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3979 DW_FUNCTION_NO_RETURN(dw_window_set_bitmap_from_data)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3980 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, id, ULONG, data, const char *, len, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3981 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3982 GdkPixbuf *tmp = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3983
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3984 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3985 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3986 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3987 * A real hack; create a temporary file and write the contents
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3988 * of the data to the file
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3989 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3990 char template[] = "/tmp/dwpixmapXXXXXX";
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3991 int written = -1, fd = mkstemp(template);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3992
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3993 if(fd != -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3994 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3995 written = write(fd, data, len);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3996 close(fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3997 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3998 /* Bail if we couldn't write full file */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3999 if(fd != -1 && written == len)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4000 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4001 tmp = gdk_pixbuf_new_from_file(template, NULL);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4002 /* remove our temporary file */
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4003 unlink(template);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4004 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4005 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4006 else if (id)
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
4007 tmp = _dw_find_pixbuf((HICN)id, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4008
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4009 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4010 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4011 if(GTK_IS_BUTTON(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4012 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4013 GtkWidget *pixmap = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_bitmap");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4014
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4015 if(pixmap)
2366
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
4016 gtk_picture_set_pixbuf(GTK_PICTURE(pixmap), tmp);
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
4017 }
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
4018 else if(GTK_IS_PICTURE(handle))
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
4019 gtk_picture_set_pixbuf(GTK_PICTURE(handle), tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4020 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4021 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4022 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4023
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4024 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4025 * Sets the text used for a given window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4026 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4027 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4028 * text: The text associated with a given window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4029 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4030 DW_FUNCTION_DEFINITION(dw_window_set_text, void, HWND handle, const char *text)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4031 DW_FUNCTION_ADD_PARAM2(handle, text)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4032 DW_FUNCTION_NO_RETURN(dw_window_set_text)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4033 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, text, char *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4034 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4035 if(GTK_IS_ENTRY(handle))
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4036 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4037 GtkEntryBuffer *buffer = gtk_entry_get_buffer(GTK_ENTRY(handle));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4038 if(buffer)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4039 gtk_entry_buffer_set_text(buffer, text, -1);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4040 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4041 else if(GTK_IS_COMBO_BOX(handle))
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4042 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4043 GtkWidget *entry = gtk_combo_box_get_child(GTK_COMBO_BOX(handle));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4044 GtkEntryBuffer *buffer = gtk_entry_get_buffer(GTK_ENTRY(entry));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4045 if(buffer)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4046 gtk_entry_buffer_set_text(buffer, text, -1);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4047 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4048 else if(GTK_IS_LABEL(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4049 gtk_label_set_text(GTK_LABEL(handle), text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4050 else if(GTK_IS_BUTTON(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4051 gtk_button_set_label(GTK_BUTTON(handle), text);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4052 else if(GTK_IS_WINDOW(handle))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4053 gtk_window_set_title(GTK_WINDOW(handle), text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4054 else if (GTK_IS_FRAME(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4055 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4056 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4057 * This is a groupbox or status_text
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4058 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4059 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_label");
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4060 if (tmp && GTK_IS_LABEL(tmp))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4061 gtk_label_set_text(GTK_LABEL(tmp), text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4062 else /* assume groupbox */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4063 gtk_frame_set_label(GTK_FRAME(handle), text && *text ? text : NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4064 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4065 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4066 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4067
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4068 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4069 * Sets the text used for a given window's floating bubble help.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4070 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4071 * handle: Handle to the window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4072 * bubbletext: The text in the floating bubble tooltip.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4073 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4074 DW_FUNCTION_DEFINITION(dw_window_set_tooltip, void, HWND handle, const char *bubbletext)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4075 DW_FUNCTION_ADD_PARAM2(handle, bubbletext)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4076 DW_FUNCTION_NO_RETURN(dw_window_set_tooltip)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4077 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, bubbletext, char *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4078 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4079 if(bubbletext && *bubbletext)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4080 gtk_widget_set_tooltip_text(handle, bubbletext);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4081 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4082 gtk_widget_set_has_tooltip(handle, FALSE);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4083 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4084 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4085
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4086 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4087 * Gets the text used for a given window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4088 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4089 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4090 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4091 * text: The text associsated with a given window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4092 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4093 DW_FUNCTION_DEFINITION(dw_window_get_text, char *, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4094 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4095 DW_FUNCTION_RETURN(dw_window_get_text, char *)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4096 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4097 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4098 const char *possible = NULL;
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4099 char *retval = NULL;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4100
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4101 if(GTK_IS_ENTRY(handle))
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4102 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4103 GtkEntryBuffer *buffer = gtk_entry_get_buffer(GTK_ENTRY(handle));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4104 possible = gtk_entry_buffer_get_text(buffer);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4105 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4106 else if(GTK_IS_COMBO_BOX(handle))
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4107 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4108 GtkWidget *entry = gtk_combo_box_get_child(GTK_COMBO_BOX(handle));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4109 GtkEntryBuffer *buffer = gtk_entry_get_buffer(GTK_ENTRY(entry));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4110 possible = gtk_entry_buffer_get_text(buffer);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4111 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4112 else if(GTK_IS_LABEL(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4113 possible = gtk_label_get_text(GTK_LABEL(handle));
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4114 retval = strdup(possible ? possible : "");
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4115 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4116 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4117
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4118 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4119 * Disables given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4120 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4121 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4122 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4123 DW_FUNCTION_DEFINITION(dw_window_disable, void, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4124 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4125 DW_FUNCTION_NO_RETURN(dw_window_disable)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4126 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4127 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4128 gtk_widget_set_sensitive(handle, FALSE);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4129 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4130 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4131
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4132 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4133 * Enables given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4134 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4135 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4136 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4137 DW_FUNCTION_DEFINITION(dw_window_enable, void, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4138 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4139 DW_FUNCTION_NO_RETURN(dw_window_enable)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4140 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4141 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4142 gtk_widget_set_sensitive(handle, TRUE);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4143 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4144 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4145
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4146 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4147 * Gets the child window handle with specified ID.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4148 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4149 * handle: Handle to the parent window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4150 * id: Integer ID of the child.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4151 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4152 DW_FUNCTION_DEFINITION(dw_window_from_id, HWND, HWND handle, int id)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4153 DW_FUNCTION_ADD_PARAM2(handle, id)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4154 DW_FUNCTION_RETURN(dw_window_from_id, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4155 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, id, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4156 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4157 GtkWidget *retval = NULL;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4158
2275
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
4159 if(handle && GTK_WIDGET(handle) && id)
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
4160 {
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
4161 GtkWidget *widget = gtk_widget_get_first_child(GTK_WIDGET(handle));
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
4162
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
4163 while(widget)
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
4164 {
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
4165 if(id == GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "_dw_id")))
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4166 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4167 retval = widget;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4168 widget = NULL;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4169 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4170 else
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4171 widget = gtk_widget_get_next_sibling(GTK_WIDGET(widget));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4172 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4173 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4174 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4175 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4176
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4177 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4178 * Adds text to an MLE box and returns the current point.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4179 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4180 * handle: Handle to the MLE to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4181 * buffer: Text buffer to be imported.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4182 * startpoint: Point to start entering text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4183 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4184 DW_FUNCTION_DEFINITION(dw_mle_import, unsigned int, HWND handle, const char *buffer, int startpoint)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4185 DW_FUNCTION_ADD_PARAM3(handle, buffer, startpoint)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4186 DW_FUNCTION_RETURN(dw_mle_import, unsigned int)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4187 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, buffer, const char *, startpoint, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4188 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4189 unsigned int tmppoint = startpoint;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4190
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4191 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4192 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4193 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4194
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4195 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4196 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4197 GtkTextBuffer *tbuffer;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4198 GtkTextIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4199
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4200 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4201 gtk_text_buffer_get_iter_at_offset(tbuffer, &iter, startpoint);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4202 gtk_text_buffer_place_cursor(tbuffer, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4203 gtk_text_buffer_insert_at_cursor(tbuffer, buffer, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4204 tmppoint = (startpoint > -1 ? startpoint : 0) + strlen(buffer);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4205 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4206 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4207 DW_FUNCTION_RETURN_THIS(tmppoint);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4208 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4209
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4210 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4211 * Grabs text from an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4212 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4213 * handle: Handle to the MLE to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4214 * buffer: Text buffer to be exported. MUST allow for trailing nul character.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4215 * startpoint: Point to start grabbing text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4216 * length: Amount of text to be grabbed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4217 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4218 DW_FUNCTION_DEFINITION(dw_mle_export, void, HWND handle, char *buffer, int startpoint, int length)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4219 DW_FUNCTION_ADD_PARAM4(handle, buffer, startpoint, length)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4220 DW_FUNCTION_NO_RETURN(dw_mle_export)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4221 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, buffer, char *, startpoint, int, length, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4222 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4223 gchar *text;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4224
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4225 /* force the return value to nul in case the following tests fail */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4226 if(buffer)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4227 buffer[0] = '\0';
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4228 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4229 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4230 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4231
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4232 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4233 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4234 GtkTextBuffer *tbuffer;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4235 GtkTextIter start, end;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4236
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4237 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4238 gtk_text_buffer_get_iter_at_offset(tbuffer, &start, startpoint);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4239 gtk_text_buffer_get_iter_at_offset(tbuffer, &end, startpoint + length);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4240 text = gtk_text_iter_get_text(&start, &end);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4241 if(text) /* Should this get freed? */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4242 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4243 if(buffer)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4244 strcpy(buffer, text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4245 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4246 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4247 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4248 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4249 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4250
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4251 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4252 * Obtains information about an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4253 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4254 * handle: Handle to the MLE to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4255 * bytes: A pointer to a variable to return the total bytes.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4256 * lines: A pointer to a variable to return the number of lines.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4257 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4258 DW_FUNCTION_DEFINITION(dw_mle_get_size, void, HWND handle, unsigned long *bytes, unsigned long *lines)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4259 DW_FUNCTION_ADD_PARAM3(handle, bytes, lines)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4260 DW_FUNCTION_NO_RETURN(dw_mle_get_size)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4261 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, bytes, unsigned long *, lines, unsigned long *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4262 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4263 if(bytes)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4264 *bytes = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4265 if(lines)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4266 *lines = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4267
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4268 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4269 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4270 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4271
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4272 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4273 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4274 GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4275
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4276 if(bytes)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4277 *bytes = gtk_text_buffer_get_char_count(buffer);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4278 if(lines)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4279 *lines = gtk_text_buffer_get_line_count(buffer);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4280 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4281 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4282 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4283 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4284
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4285 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4286 * Deletes text from an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4287 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4288 * handle: Handle to the MLE to be deleted from.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4289 * startpoint: Point to start deleting text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4290 * length: Amount of text to be deleted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4291 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4292 DW_FUNCTION_DEFINITION(dw_mle_delete, void, HWND handle, int startpoint, int length)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4293 DW_FUNCTION_ADD_PARAM3(handle, startpoint, length)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4294 DW_FUNCTION_NO_RETURN(dw_mle_delete)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4295 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, startpoint, int, length, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4296 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4297 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4298 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4299 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4300
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4301 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4302 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4303 GtkTextBuffer *tbuffer;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4304 GtkTextIter start, end;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4305
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4306 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4307 gtk_text_buffer_get_iter_at_offset(tbuffer, &start, startpoint);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4308 gtk_text_buffer_get_iter_at_offset(tbuffer, &end, startpoint + length);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4309 gtk_text_buffer_delete(tbuffer, &start, &end);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4310 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4311 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4312 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4313 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4314
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4315 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4316 * Clears all text from an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4317 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4318 * handle: Handle to the MLE to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4319 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4320 DW_FUNCTION_DEFINITION(dw_mle_clear, void, HWND handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4321 DW_FUNCTION_ADD_PARAM1(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4322 DW_FUNCTION_NO_RETURN(dw_mle_clear)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4323 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4324 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4325 int length;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4326
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4327 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4328 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4329 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4330
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4331 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4332 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4333 GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4334
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4335 length = -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4336 gtk_text_buffer_set_text(buffer, "", length);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4337 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4338 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4339 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4340 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4341
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4342 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4343 * Sets the visible line of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4344 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4345 * handle: Handle to the MLE.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4346 * line: Line to be visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4347 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4348 DW_FUNCTION_DEFINITION(dw_mle_set_visible, void, HWND handle, int line)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4349 DW_FUNCTION_ADD_PARAM2(handle, line)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4350 DW_FUNCTION_NO_RETURN(dw_mle_set_visible)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4351 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, line, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4352 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4353 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4354 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4355 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4356
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4357 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4358 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4359 GtkTextBuffer *tbuffer;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4360 GtkTextIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4361 GtkTextMark *mark = (GtkTextMark *)g_object_get_data(G_OBJECT(handle), "_dw_mark");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4362
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4363 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4364 gtk_text_buffer_get_iter_at_offset(tbuffer, &iter, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4365 gtk_text_iter_set_line(&iter, line);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4366 if(!mark)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4367 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4368 mark = gtk_text_buffer_create_mark(tbuffer, NULL, &iter, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4369 g_object_set_data(G_OBJECT(handle), "_dw_mark", (gpointer)mark);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4370 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4371 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4372 gtk_text_buffer_move_mark(tbuffer, mark, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4373 gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(tmp), mark,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4374 0, FALSE, 0, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4375 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4376 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4377 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4378 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4379
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4380 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4381 * Sets the editablity of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4382 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4383 * handle: Handle to the MLE.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4384 * state: TRUE if it can be edited, FALSE for readonly.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4385 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4386 DW_FUNCTION_DEFINITION(dw_mle_set_editable, void, HWND handle, int state)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4387 DW_FUNCTION_ADD_PARAM2(handle, state)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4388 DW_FUNCTION_NO_RETURN(dw_mle_set_editable)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4389 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, state, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4390 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4391 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4392 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4393 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4394
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4395 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4396 gtk_text_view_set_editable(GTK_TEXT_VIEW(tmp), state);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4397 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4398 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4399 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4400
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4401 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4402 * Sets the word wrap state of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4403 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4404 * handle: Handle to the MLE.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4405 * state: TRUE if it wraps, FALSE if it doesn't.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4406 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4407 DW_FUNCTION_DEFINITION(dw_mle_set_word_wrap, void, HWND handle, int state)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4408 DW_FUNCTION_ADD_PARAM2(handle, state)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4409 DW_FUNCTION_NO_RETURN(dw_mle_set_word_wrap)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4410 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, state, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4411 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4412 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4413 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4414 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4415
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4416 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4417 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tmp), state ? GTK_WRAP_WORD : GTK_WRAP_NONE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4418 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4419 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4420 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4421
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4422 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4423 * Sets the word auto complete state of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4424 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4425 * handle: Handle to the MLE.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4426 * state: Bitwise combination of DW_MLE_COMPLETE_TEXT/DASH/QUOTE
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4427 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
4428 void API dw_mle_set_auto_complete(HWND handle, int state)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4429 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4430 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4431
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4432 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4433 * Sets the current cursor position of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4434 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4435 * handle: Handle to the MLE to be positioned.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4436 * point: Point to position cursor.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4437 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4438 DW_FUNCTION_DEFINITION(dw_mle_set_cursor, void, HWND handle, int point)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4439 DW_FUNCTION_ADD_PARAM2(handle, point)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4440 DW_FUNCTION_NO_RETURN(dw_mle_set_cursor)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4441 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, point, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4442 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4443 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4444 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4445 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4446
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4447 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4448 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4449 GtkTextBuffer *tbuffer;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4450 GtkTextIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4451 GtkTextMark *mark = (GtkTextMark *)g_object_get_data(G_OBJECT(handle), "_dw_mark");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4452
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4453 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4454 gtk_text_buffer_get_iter_at_offset(tbuffer, &iter, point);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4455 if(!mark)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4456 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4457 mark = gtk_text_buffer_create_mark(tbuffer, NULL, &iter, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4458 g_object_set_data(G_OBJECT(handle), "_dw_mark", (gpointer)mark);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4459 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4460 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4461 gtk_text_buffer_move_mark(tbuffer, mark, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4462 gtk_text_buffer_place_cursor(tbuffer, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4463 gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(tmp), mark,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4464 0, FALSE, 0, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4465 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4466 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4467 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4468 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4469
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4470 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4471 * Finds text in an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4472 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4473 * handle: Handle to the MLE to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4474 * text: Text to search for.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4475 * point: Start point of search.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4476 * flags: Search specific flags.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4477 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4478 DW_FUNCTION_DEFINITION(dw_mle_search, int, HWND handle, const char *text, int point, DW_UNUSED(unsigned long flags))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4479 DW_FUNCTION_ADD_PARAM4(handle, text, point, flags)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4480 DW_FUNCTION_RETURN(dw_mle_search, int)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4481 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, text, const char *, point, int, DW_UNUSED(flags), unsigned long)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4482 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4483 int retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4484
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4485 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4486 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4487 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4488
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4489 if(tmp && GTK_IS_TEXT_VIEW(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4490 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4491 GtkTextBuffer *tbuffer;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4492 GtkTextIter iter, found;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4493
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4494 tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (tmp));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4495 gtk_text_buffer_get_iter_at_offset(tbuffer, &iter, point);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4496 gtk_text_iter_forward_search(&iter, text, GTK_TEXT_SEARCH_TEXT_ONLY, &found, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4497 retval = gtk_text_iter_get_offset(&found);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4498 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4499 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4500 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4501 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4502
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4503 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4504 * Stops redrawing of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4505 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4506 * handle: Handle to the MLE to freeze.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4507 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
4508 void API dw_mle_freeze(HWND handle)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4509 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4510 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4511
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4512 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4513 * Resumes redrawing of an MLE box.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4514 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4515 * handle: Handle to the MLE to thaw.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4516 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
4517 void API dw_mle_thaw(HWND handle)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4518 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4519 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4520
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4521 /* Internal function to update the progress bar
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4522 * while in an indeterminate state.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4523 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4524 gboolean _dw_update_progress_bar(gpointer data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4525 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4526 if(g_object_get_data(G_OBJECT(data), "_dw_alive"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4527 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4528 gtk_progress_bar_pulse(GTK_PROGRESS_BAR(data));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4529 return TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4530 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4531 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4532 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4533
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4534 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4535 * Sets the percent bar position.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4536 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4537 * handle: Handle to the percent bar to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4538 * position: Position of the percent bar withing the range.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4539 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4540 DW_FUNCTION_DEFINITION(dw_percent_set_pos, void, HWND handle, unsigned int position)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4541 DW_FUNCTION_ADD_PARAM2(handle, position)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4542 DW_FUNCTION_NO_RETURN(dw_percent_set_pos)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4543 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, position, unsigned int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4544 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4545 if(position == DW_PERCENT_INDETERMINATE)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4546 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4547 /* Check if we are indeterminate already */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4548 if(!g_object_get_data(G_OBJECT(handle), "_dw_alive"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4549 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4550 /* If not become indeterminate... and start a timer to continue */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4551 gtk_progress_bar_pulse(GTK_PROGRESS_BAR(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4552 g_object_set_data(G_OBJECT(handle), "_dw_alive", GINT_TO_POINTER(1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4553 g_timeout_add(100, (GSourceFunc)_dw_update_progress_bar, (gpointer)handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4554 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4555 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4556 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4557 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4558 /* Cancel the existing timer if one is there */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4559 g_object_set_data(G_OBJECT(handle), "_dw_alive", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4560 /* Set the position like normal */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4561 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(handle), (gfloat)position/100);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4562 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4563 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4564 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4565
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4566 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4567 * Returns the position of the slider.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4568 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4569 * handle: Handle to the slider to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4570 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4571 DW_FUNCTION_DEFINITION(dw_slider_get_pos, unsigned int, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4572 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4573 DW_FUNCTION_RETURN(dw_slider_get_pos, unsigned int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4574 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4575 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4576 int val = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4577 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4578
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4579 if(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4580 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4581 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4582 if(adjustment)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4583 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4584 int max = _dw_round_value(gtk_adjustment_get_upper(adjustment)) - 1;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4585 int thisval = _dw_round_value(gtk_adjustment_get_value(adjustment));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4586
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4587 if(gtk_orientable_get_orientation(GTK_ORIENTABLE(handle)) == GTK_ORIENTATION_VERTICAL)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4588 val = max - thisval;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4589 else
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4590 val = thisval;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4591 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4592 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4593 DW_FUNCTION_RETURN_THIS(val);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4594 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4595
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4596 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4597 * Sets the slider position.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4598 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4599 * handle: Handle to the slider to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4600 * position: Position of the slider withing the range.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4601 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4602 DW_FUNCTION_DEFINITION(dw_slider_set_pos, void, HWND handle, unsigned int position)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4603 DW_FUNCTION_ADD_PARAM2(handle, position)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4604 DW_FUNCTION_NO_RETURN(dw_slider_set_pos)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4605 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, position, unsigned int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4606 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4607 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4608
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4609 if(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4610 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4611 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4612 if(adjustment)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4613 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4614 int max = _dw_round_value(gtk_adjustment_get_upper(adjustment)) - 1;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4615
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4616 if(gtk_orientable_get_orientation(GTK_ORIENTABLE(handle)) == GTK_ORIENTATION_VERTICAL)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4617 gtk_adjustment_set_value(adjustment, (gfloat)(max - position));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4618 else
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4619 gtk_adjustment_set_value(adjustment, (gfloat)position);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4620 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4621 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4622 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4623 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4624
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4625 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4626 * Returns the position of the scrollbar.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4627 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4628 * handle: Handle to the scrollbar to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4629 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4630 DW_FUNCTION_DEFINITION(dw_scrollbar_get_pos, unsigned int, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4631 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4632 DW_FUNCTION_RETURN(dw_scrollbar_get_pos, unsigned int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4633 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4634 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4635 int val = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4636 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4637
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4638 if(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4639 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4640 adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment");
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4641 if(adjustment)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4642 val = _dw_round_value(gtk_adjustment_get_value(adjustment));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4643 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4644 DW_FUNCTION_RETURN_THIS(val);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4645 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4646
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4647 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4648 * Sets the scrollbar position.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4649 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4650 * handle: Handle to the scrollbar to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4651 * position: Position of the scrollbar withing the range.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4652 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4653 DW_FUNCTION_DEFINITION(dw_scrollbar_set_pos, void, HWND handle, unsigned int position)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4654 DW_FUNCTION_ADD_PARAM2(handle, position)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4655 DW_FUNCTION_NO_RETURN(dw_scrollbar_set_pos)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4656 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, position, unsigned int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4657
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4658 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4659 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4660
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4661 if(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4662 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4663 if((adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment")))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4664 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4665 g_object_set_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event", GINT_TO_POINTER(1));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4666 gtk_adjustment_set_value(adjustment, (gfloat)position);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4667 g_object_set_data(G_OBJECT(adjustment), "_dw_suppress_value_changed_event", GINT_TO_POINTER(0));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4668 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4669 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4670 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4671 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4672
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4673 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4674 * Sets the scrollbar range.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4675 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4676 * handle: Handle to the scrollbar to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4677 * range: Maximum range value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4678 * visible: Visible area relative to the range.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4679 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4680 DW_FUNCTION_DEFINITION(dw_scrollbar_set_range, void, HWND handle, unsigned int range, unsigned int visible)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4681 DW_FUNCTION_ADD_PARAM3(handle, range, visible)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4682 DW_FUNCTION_NO_RETURN(dw_scrollbar_set_range)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4683 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, range, unsigned int, visible, unsigned int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4684 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4685 GtkAdjustment *adjustment;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4686
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4687 if(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4688 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4689 if((adjustment = (GtkAdjustment *)g_object_get_data(G_OBJECT(handle), "_dw_adjustment")))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4690 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4691 gtk_adjustment_set_upper(adjustment, (gdouble)range);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4692 gtk_adjustment_set_page_increment(adjustment,(gdouble)visible);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4693 gtk_adjustment_set_page_size(adjustment, (gdouble)visible);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4694 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4695 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4696 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4697 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4698
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4699 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4700 * Sets the spinbutton value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4701 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4702 * handle: Handle to the spinbutton to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4703 * position: Current value of the spinbutton.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4704 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4705 DW_FUNCTION_DEFINITION(dw_spinbutton_set_pos, void, HWND handle, long position)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4706 DW_FUNCTION_ADD_PARAM2(handle, position)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4707 DW_FUNCTION_NO_RETURN(dw_spinbutton_set_pos)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4708 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, position, long)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4709 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4710 gtk_spin_button_set_value(GTK_SPIN_BUTTON(handle), (gfloat)position);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4711 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4712 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4713
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4714 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4715 * Sets the spinbutton limits.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4716 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4717 * handle: Handle to the spinbutton to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4718 * position: Current value of the spinbutton.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4719 * position: Current value of the spinbutton.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4720 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4721 DW_FUNCTION_DEFINITION(dw_spinbutton_set_limits, void, HWND handle, long upper, long lower)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4722 DW_FUNCTION_ADD_PARAM3(handle, upper, lower)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4723 DW_FUNCTION_NO_RETURN(dw_spinbutton_set_limits)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4724 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, upper, long, lower, long)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4725 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4726 long curval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4727 GtkAdjustment *adj;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4728
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4729 curval = dw_spinbutton_get_pos(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4730 adj = (GtkAdjustment *)gtk_adjustment_new((gfloat)curval, (gfloat)lower, (gfloat)upper, 1.0, 5.0, 0.0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4731 gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(handle), adj);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4732 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4733 * Set our internal relationships between the adjustment and the spinbutton
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4734 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4735 g_object_set_data(G_OBJECT(handle), "_dw_adjustment", (gpointer)adj);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4736 g_object_set_data(G_OBJECT(adj), "_dw_spinbutton", (gpointer)handle);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4737 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4738 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4739
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4740 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4741 * Sets the entryfield character limit.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4742 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4743 * handle: Handle to the spinbutton to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4744 * limit: Number of characters the entryfield will take.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4745 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4746 DW_FUNCTION_DEFINITION(dw_entryfield_set_limit, void, HWND handle, ULONG limit)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4747 DW_FUNCTION_ADD_PARAM2(handle, limit)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4748 DW_FUNCTION_NO_RETURN(dw_entryfield_set_limit)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4749 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, limit, ULONG)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4750 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4751 gtk_entry_set_max_length(GTK_ENTRY(handle), limit);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4752 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4753 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4754
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4755 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4756 * Returns the current value of the spinbutton.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4757 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4758 * handle: Handle to the spinbutton to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4759 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4760 DW_FUNCTION_DEFINITION(dw_spinbutton_get_pos, long, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4761 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4762 DW_FUNCTION_RETURN(dw_spinbutton_get_pos, long)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4763 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4764 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4765 long retval = (long)gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(handle));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4766 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4767 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4768
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4769 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4770 * Returns the state of the checkbox.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4771 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4772 * handle: Handle to the checkbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4773 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4774 DW_FUNCTION_DEFINITION(dw_checkbox_get, int, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4775 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4776 DW_FUNCTION_RETURN(dw_checkbox_get, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4777 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4778 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4779 int retval = 0;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4780
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4781 if(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4782 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4783 if(GTK_IS_TOGGLE_BUTTON(handle))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4784 retval = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(handle));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4785 retval = gtk_check_button_get_active(GTK_CHECK_BUTTON(handle));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4786 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4787 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4788 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4789
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4790 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4791 * Sets the state of the checkbox.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4792 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4793 * handle: Handle to the checkbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4794 * value: TRUE for checked, FALSE for unchecked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4795 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4796 DW_FUNCTION_DEFINITION(dw_checkbox_set, void, HWND handle, int value)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4797 DW_FUNCTION_ADD_PARAM2(handle, value)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4798 DW_FUNCTION_NO_RETURN(dw_checkbox_set)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4799 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, value, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4800 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4801 if(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4802 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4803 if(GTK_IS_TOGGLE_BUTTON(handle))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4804 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(handle), value);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4805 else
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4806 gtk_check_button_set_active(GTK_CHECK_BUTTON(handle), value);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4807 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4808 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4809 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4810
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4811 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4812 * Inserts an item into a tree window (widget) after another item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4813 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4814 * handle: Handle to the tree to be inserted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4815 * item: Handle to the item to be positioned after.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4816 * title: The text title of the entry.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4817 * icon: Handle to coresponding icon.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4818 * parent: Parent handle or 0 if root.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4819 * itemdata: Item specific data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4820 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4821 DW_FUNCTION_DEFINITION(dw_tree_insert_after, HTREEITEM, HWND handle, HTREEITEM item, const char *title, HICN icon, HTREEITEM parent, void *itemdata)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4822 DW_FUNCTION_ADD_PARAM6(handle, item, title, icon, parent, itemdata)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4823 DW_FUNCTION_RETURN(dw_tree_insert_after, HTREEITEM)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4824 DW_FUNCTION_RESTORE_PARAM6(handle, HWND, item, HTREEITEM, title, char *, icon, HICN, parent, HTREEITEM, itemdata, void *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4825 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4826 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4827 GtkTreeIter *iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4828 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4829 GdkPixbuf *pixbuf;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4830 HTREEITEM retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4831
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4832 if(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4833 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4834 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4835 && GTK_IS_TREE_VIEW(tree) &&
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4836 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4837 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4838 iter = (GtkTreeIter *)malloc(sizeof(GtkTreeIter));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4839
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4840 pixbuf = _dw_find_pixbuf(icon, NULL, NULL);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4841
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4842 gtk_tree_store_insert_after(store, iter, (GtkTreeIter *)parent, (GtkTreeIter *)item);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4843 gtk_tree_store_set (store, iter, 0, title, 1, pixbuf, 2, itemdata, 3, iter, -1);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4844 retval = (HTREEITEM)iter;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4845 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4846 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4847 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4848 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4849
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4850 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4851 * Inserts an item into a tree window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4852 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4853 * handle: Handle to the tree to be inserted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4854 * title: The text title of the entry.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4855 * icon: Handle to coresponding icon.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4856 * parent: Parent handle or 0 if root.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4857 * itemdata: Item specific data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4858 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4859 DW_FUNCTION_DEFINITION(dw_tree_insert, HTREEITEM, HWND handle, const char *title, HICN icon, HTREEITEM parent, void *itemdata)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4860 DW_FUNCTION_ADD_PARAM5(handle, title, icon, parent, itemdata)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4861 DW_FUNCTION_RETURN(dw_tree_insert, HTREEITEM)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4862 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, title, char *, icon, HICN, parent, HTREEITEM, itemdata, void *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4863 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4864 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4865 GtkTreeIter *iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4866 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4867 GdkPixbuf *pixbuf;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4868 HTREEITEM retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4869
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4870 if(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4871 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4872 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4873 && GTK_IS_TREE_VIEW(tree) &&
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4874 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4875 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4876 iter = (GtkTreeIter *)malloc(sizeof(GtkTreeIter));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4877
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4878 pixbuf = _dw_find_pixbuf(icon, NULL, NULL);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4879
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4880 gtk_tree_store_append (store, iter, (GtkTreeIter *)parent);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4881 gtk_tree_store_set (store, iter, 0, title, 1, pixbuf, 2, itemdata, 3, iter, -1);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4882 retval = (HTREEITEM)iter;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4883 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4884 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4885 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4886 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4887
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4888 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4889 * Sets the text and icon of an item in a tree window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4890 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4891 * handle: Handle to the tree containing the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4892 * item: Handle of the item to be modified.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4893 * title: The text title of the entry.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4894 * icon: Handle to coresponding icon.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4895 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4896 DW_FUNCTION_DEFINITION(dw_tree_item_change, void, HWND handle, HTREEITEM item, const char *title, HICN icon)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4897 DW_FUNCTION_ADD_PARAM4(handle, item, title, icon)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4898 DW_FUNCTION_NO_RETURN(dw_tree_item_change)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4899 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, item, HTREEITEM, title, char *, icon, HICN)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4900 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4901 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4902 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4903 GdkPixbuf *pixbuf;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4904
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4905 if(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4906 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4907 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4908 && GTK_IS_TREE_VIEW(tree) &&
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4909 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4910 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4911 pixbuf = _dw_find_pixbuf(icon, NULL, NULL);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4912
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4913 gtk_tree_store_set(store, (GtkTreeIter *)item, 0, title, 1, pixbuf, -1);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4914 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4915 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4916 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4917 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4918
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4919 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4920 * Sets the item data of a tree item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4921 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4922 * handle: Handle to the tree containing the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4923 * item: Handle of the item to be modified.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4924 * itemdata: User defined data to be associated with item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4925 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4926 DW_FUNCTION_DEFINITION(dw_tree_item_set_data, void, HWND handle, HTREEITEM item, void *itemdata)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4927 DW_FUNCTION_ADD_PARAM3(handle, item, itemdata)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4928 DW_FUNCTION_NO_RETURN(dw_tree_item_set_data)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4929 DW_FUNCTION_RESTORE_PARAM3(DW_UNUSED(handle), HWND, item, HTREEITEM, itemdata, void *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4930 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4931 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4932 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4933
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4934 if(handle && item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4935 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4936 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4937 && GTK_IS_TREE_VIEW(tree) &&
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4938 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4939 gtk_tree_store_set(store, (GtkTreeIter *)item, 2, itemdata, -1);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4940 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4941 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4942 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4943
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4944 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4945 * Gets the text an item in a tree window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4946 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4947 * handle: Handle to the tree containing the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4948 * item: Handle of the item to be modified.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4949 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4950 DW_FUNCTION_DEFINITION(dw_tree_get_title, char *, HWND handle, HTREEITEM item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4951 DW_FUNCTION_ADD_PARAM2(handle, item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4952 DW_FUNCTION_RETURN(dw_tree_get_title, char *)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4953 DW_FUNCTION_RESTORE_PARAM2(DW_UNUSED(handle), HWND, item, HTREEITEM)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4954 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4955 char *text = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4956 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4957 GtkTreeModel *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4958
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4959 if(handle && item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4960 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4961 tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4962
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4963 if(tree && GTK_IS_TREE_VIEW(tree) &&
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4964 (store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4965 gtk_tree_model_get(store, (GtkTreeIter *)item, _DW_DATA_TYPE_STRING, &text, -1);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4966 if(text)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4967 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4968 char *temp = text;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4969 text = strdup(temp);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4970 g_free(temp);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4971 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4972 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4973 DW_FUNCTION_RETURN_THIS(text);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4974 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4975
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4976 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4977 * Gets the text an item in a tree window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4978 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4979 * handle: Handle to the tree containing the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4980 * item: Handle of the item to be modified.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4981 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4982 DW_FUNCTION_DEFINITION(dw_tree_get_parent, HTREEITEM, HWND handle, HTREEITEM item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4983 DW_FUNCTION_ADD_PARAM2(handle, item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4984 DW_FUNCTION_RETURN(dw_tree_get_parent, HTREEITEM)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4985 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, item, HTREEITEM)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4986 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4987 HTREEITEM parent = (HTREEITEM)0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4988 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4989 GtkTreeModel *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4990
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4991 if(handle && item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4992 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4993 tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4994
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4995 if(tree && GTK_IS_TREE_VIEW(tree) &&
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4996 (store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4997 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4998 GtkTreeIter iter;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4999
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5000 if(gtk_tree_model_iter_parent(store, &iter, (GtkTreeIter *)item))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5001 gtk_tree_model_get(store, &iter, 3, &parent, -1);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5002 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5003 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5004 DW_FUNCTION_RETURN_THIS(parent);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5005 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5006
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5007 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5008 * Gets the item data of a tree item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5009 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5010 * handle: Handle to the tree containing the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5011 * item: Handle of the item to be modified.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5012 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5013 DW_FUNCTION_DEFINITION(dw_tree_item_get_data, void *, HWND handle, HTREEITEM item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5014 DW_FUNCTION_ADD_PARAM2(handle, item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5015 DW_FUNCTION_RETURN(dw_tree_item_get_data, void *)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5016 DW_FUNCTION_RESTORE_PARAM2(DW_UNUSED(handle), HWND, item, HTREEITEM)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5017 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5018 void *ret = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5019 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5020 GtkTreeModel *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5021
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5022 if(handle && item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5023 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5024 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5025 && GTK_IS_TREE_VIEW(tree) &&
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5026 (store = (GtkTreeModel *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5027 gtk_tree_model_get(store, (GtkTreeIter *)item, 2, &ret, -1);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5028 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5029 DW_FUNCTION_RETURN_THIS(ret);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5030 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5031
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5032 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5033 * Sets this item as the active selection.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5034 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5035 * handle: Handle to the tree window (widget) to be selected.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5036 * item: Handle to the item to be selected.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5037 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5038 DW_FUNCTION_DEFINITION(dw_tree_item_select, void, HWND handle, HTREEITEM item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5039 DW_FUNCTION_ADD_PARAM2(handle, item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5040 DW_FUNCTION_NO_RETURN(dw_tree_item_select)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5041 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, item, HTREEITEM)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5042 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5043 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5044 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5045
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5046 if(handle && item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5047 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5048 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5049 && GTK_IS_TREE_VIEW(tree) &&
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5050 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5051 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5052 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5053 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5054
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5055 gtk_tree_view_set_cursor(GTK_TREE_VIEW(tree), path, NULL, FALSE);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5056 gtk_tree_selection_select_iter(sel, (GtkTreeIter *)item);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5057 gtk_tree_path_free(path);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5058 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5059 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5060 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5061 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5062
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5063 static void _dw_recursive_free(GtkTreeModel *store, GtkTreeIter parent)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5064 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5065 void *data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5066 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5067
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5068 gtk_tree_model_get(store, &parent, 3, &data, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5069 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5070 free(data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5071 gtk_tree_store_set(GTK_TREE_STORE(store), &parent, 3, NULL, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5072
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5073 if(gtk_tree_model_iter_children(store, &iter, &parent))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5074 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5075 do {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5076 _dw_recursive_free(GTK_TREE_MODEL(store), iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5077 } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5078 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5079 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5080
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5081 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5082 * Removes all nodes from a tree.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5083 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5084 * handle: Handle to the window (widget) to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5085 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5086 DW_FUNCTION_DEFINITION(dw_tree_clear, void, HWND handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5087 DW_FUNCTION_ADD_PARAM1(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5088 DW_FUNCTION_NO_RETURN(dw_tree_clear)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5089 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5090 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5091 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5092 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5093
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5094 if(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5095 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5096 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5097 && GTK_IS_TREE_VIEW(tree) &&
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5098 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5099 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5100 GtkTreeIter iter;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5101
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5102 if(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5103 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5104 do {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5105 _dw_recursive_free(GTK_TREE_MODEL(store), iter);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5106 } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5107 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5108 gtk_tree_store_clear(store);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5109 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5110 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5111 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5112 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5113
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5114 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5115 * Expands a node on a tree.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5116 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5117 * handle: Handle to the tree window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5118 * item: Handle to node to be expanded.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5119 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5120 DW_FUNCTION_DEFINITION(dw_tree_item_expand, void, HWND handle, HTREEITEM item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5121 DW_FUNCTION_ADD_PARAM2(handle, item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5122 DW_FUNCTION_NO_RETURN(dw_tree_item_expand)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5123 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, item, HTREEITEM)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5124 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5125 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5126 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5127
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5128 if(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5129 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5130 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5131 && GTK_IS_TREE_VIEW(tree) &&
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5132 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5133 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5134 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5135 gtk_tree_view_expand_row(GTK_TREE_VIEW(tree), path, FALSE);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5136 gtk_tree_path_free(path);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5137 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5138 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5139 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5140 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5141
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5142 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5143 * Collapses a node on a tree.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5144 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5145 * handle: Handle to the tree window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5146 * item: Handle to node to be collapsed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5147 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5148 DW_FUNCTION_DEFINITION(dw_tree_item_collapse, void, HWND handle, HTREEITEM item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5149 DW_FUNCTION_ADD_PARAM2(handle, item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5150 DW_FUNCTION_NO_RETURN(dw_tree_item_collapse)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5151 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, item, HTREEITEM)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5152 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5153 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5154 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5155
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5156 if(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5157 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5158 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5159 && GTK_IS_TREE_VIEW(tree) &&
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5160 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5161 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5162 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), (GtkTreeIter *)item);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5163 gtk_tree_view_collapse_row(GTK_TREE_VIEW(tree), path);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5164 gtk_tree_path_free(path);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5165 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5166 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5167 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5168 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5169
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5170 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5171 * Removes a node from a tree.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5172 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5173 * handle: Handle to the window (widget) to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5174 * item: Handle to node to be deleted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5175 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5176 DW_FUNCTION_DEFINITION(dw_tree_item_delete, void, HWND handle, HTREEITEM item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5177 DW_FUNCTION_ADD_PARAM2(handle, item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5178 DW_FUNCTION_NO_RETURN(dw_tree_item_delete)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5179 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, item, HTREEITEM)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5180 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5181 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5182 GtkTreeStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5183
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5184 if(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5185 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5186 if((tree = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5187 && GTK_IS_TREE_VIEW(tree) &&
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5188 (store = (GtkTreeStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(tree))))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5189 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5190 gtk_tree_store_remove(store, (GtkTreeIter *)item);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5191 free(item);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5192 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5193 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5194 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5195 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5196
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5197 #define _DW_CONTAINER_STORE_EXTRA 2
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5198
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5199 static int _dw_container_setup_int(HWND handle, unsigned long *flags, char **titles, int count, int separator, int extra)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5200 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5201 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5202 char numbuf[25] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5203 GtkWidget *tree;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5204 GtkListStore *store;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5205 GtkTreeViewColumn *col;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5206 GtkCellRenderer *rend;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5207 GtkTreeSelection *sel;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5208 GType *array = calloc(count + _DW_CONTAINER_STORE_EXTRA + 1, sizeof(GType));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5209
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5210 /* Save some of the info so it is easily accessible */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5211 g_object_set_data(G_OBJECT(handle), "_dw_cont_columns", GINT_TO_POINTER(count));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5212 g_object_set_data(G_OBJECT(handle), "_dw_cont_extra", GINT_TO_POINTER(extra));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5213
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5214 /* First param is row title */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5215 array[0] = G_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5216 /* Second param is row data */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5217 array[1] = G_TYPE_POINTER;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5218 array[2] = G_TYPE_POINTER;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5219 /* First loop... create array to create the store */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5220 for(z=0;z<count;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5221 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5222 if(z == 0 && flags[z] & DW_CFA_STRINGANDICON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5223 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5224 array[_DW_CONTAINER_STORE_EXTRA] = GDK_TYPE_PIXBUF;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5225 array[_DW_CONTAINER_STORE_EXTRA+1] = G_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5226 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5227 else if(flags[z] & DW_CFA_BITMAPORICON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5228 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5229 array[z+_DW_CONTAINER_STORE_EXTRA+1] = GDK_TYPE_PIXBUF;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5230 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5231 else if(flags[z] & DW_CFA_STRING)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5232 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5233 array[z+_DW_CONTAINER_STORE_EXTRA+1] = G_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5234 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5235 else if(flags[z] & DW_CFA_ULONG)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5236 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5237 array[z+_DW_CONTAINER_STORE_EXTRA+1] = G_TYPE_ULONG;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5238 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5239 else if(flags[z] & DW_CFA_TIME)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5240 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5241 array[z+_DW_CONTAINER_STORE_EXTRA+1] = G_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5242 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5243 else if(flags[z] & DW_CFA_DATE)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5244 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5245 array[z+_DW_CONTAINER_STORE_EXTRA+1] = G_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5246 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5247 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5248 /* Create the store and then the tree */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5249 store = gtk_list_store_newv(count + _DW_CONTAINER_STORE_EXTRA + 1, array);
2287
680212c356e3 GTK4: Refactor tree and fix DW_SIGNAL_ITEM_CONTEXT signals on tree view
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2286
diff changeset
5250 tree = _dw_tree_view_setup(handle, GTK_TREE_MODEL(store));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5251 g_object_set_data(G_OBJECT(tree), "_dw_tree_type", GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5252 /* Second loop... create the columns */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5253 for(z=0;z<count;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5254 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5255 snprintf(numbuf, 24, "_dw_cont_col%d", z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5256 g_object_set_data(G_OBJECT(tree), numbuf, GINT_TO_POINTER(flags[z]));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5257 col = gtk_tree_view_column_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5258 rend = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5259 void **params = calloc(sizeof(void *), 3);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5260
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5261 if(z == 0 && flags[z] & DW_CFA_STRINGANDICON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5262 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5263 rend = gtk_cell_renderer_pixbuf_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5264 gtk_tree_view_column_pack_start(col, rend, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5265 gtk_tree_view_column_add_attribute(col, rend, "pixbuf", _DW_CONTAINER_STORE_EXTRA);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5266 rend = gtk_cell_renderer_text_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5267 gtk_tree_view_column_pack_start(col, rend, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5268 gtk_tree_view_column_add_attribute(col, rend, "text", _DW_CONTAINER_STORE_EXTRA+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5269 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5270 else if(flags[z] & DW_CFA_BITMAPORICON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5271 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5272 rend = gtk_cell_renderer_pixbuf_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5273 gtk_tree_view_column_pack_start(col, rend, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5274 gtk_tree_view_column_add_attribute(col, rend, "pixbuf", z+_DW_CONTAINER_STORE_EXTRA+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5275 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5276 else if(flags[z] & DW_CFA_STRING)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5277 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5278 rend = gtk_cell_renderer_text_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5279 gtk_tree_view_column_pack_start(col, rend, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5280 gtk_tree_view_column_add_attribute(col, rend, "text", z+_DW_CONTAINER_STORE_EXTRA+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5281 gtk_tree_view_column_set_resizable(col, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5282 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5283 else if(flags[z] & DW_CFA_ULONG)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5284 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5285 rend = gtk_cell_renderer_text_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5286 gtk_tree_view_column_pack_start(col, rend, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5287 gtk_tree_view_column_add_attribute(col, rend, "text", z+_DW_CONTAINER_STORE_EXTRA+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5288 gtk_tree_view_column_set_resizable(col, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5289 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5290 else if(flags[z] & DW_CFA_TIME)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5291 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5292 rend = gtk_cell_renderer_text_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5293 gtk_tree_view_column_pack_start(col, rend, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5294 gtk_tree_view_column_add_attribute(col, rend, "text", z+_DW_CONTAINER_STORE_EXTRA+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5295 gtk_tree_view_column_set_resizable(col, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5296 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5297 else if(flags[z] & DW_CFA_DATE)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5298 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5299 rend = gtk_cell_renderer_text_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5300 gtk_tree_view_column_pack_start(col, rend, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5301 gtk_tree_view_column_add_attribute(col, rend, "text", z+_DW_CONTAINER_STORE_EXTRA+1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5302 gtk_tree_view_column_set_resizable(col, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5303 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5304 g_object_set_data(G_OBJECT(col), "_dw_column", GINT_TO_POINTER(z));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5305 params[2] = tree;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
5306 g_signal_connect_data(G_OBJECT(col), "clicked", G_CALLBACK(_dw_column_click_event), (gpointer)params, _dw_signal_disconnect, 0);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5307 gtk_tree_view_column_set_title(col, titles[z]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5308 if(flags[z] & DW_CFA_RIGHT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5309 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5310 gtk_tree_view_column_set_alignment(col, 1.0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5311 if(rend)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5312 gtk_cell_renderer_set_alignment(rend, 1.0, 0.5);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5313 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5314 else if(flags[z] & DW_CFA_CENTER)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5315 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5316 gtk_tree_view_column_set_alignment(col, 0.5);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5317 if(rend)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5318 gtk_cell_renderer_set_alignment(rend, 0.5, 0.5);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5319 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5320 gtk_tree_view_append_column(GTK_TREE_VIEW (tree), col);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5321 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5322 /* Finish up */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5323 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5324 gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(tree), TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5325 gtk_tree_view_set_rubber_banding(GTK_TREE_VIEW(tree), TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5326 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5327 if(g_object_get_data(G_OBJECT(handle), "_dw_multi_sel"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5328 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5329 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5330 gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5331 gtk_widget_show(tree);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5332 free(array);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5333 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5334 dw_window_set_font(handle, _DWDefaultFont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5335 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5336 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5337
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5338 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5339 * Sets up the container columns.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5340 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5341 * handle: Handle to the container to be configured.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5342 * flags: An array of unsigned longs with column flags.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5343 * titles: An array of strings with column text titles.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5344 * count: The number of columns (this should match the arrays).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5345 * separator: The column number that contains the main separator.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5346 * (this item may only be used in OS/2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5347 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5348 DW_FUNCTION_DEFINITION(dw_container_setup, int, HWND handle, unsigned long *flags, char **titles, int count, int separator)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5349 DW_FUNCTION_ADD_PARAM5(handle, flags, titles, count, separator)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5350 DW_FUNCTION_RETURN(dw_container_setup, int)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5351 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, flags, unsigned long *, titles, char **, count, int, DW_UNUSED(separator), int)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5352 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5353 int retval = _dw_container_setup_int(handle, flags, titles, count, separator, 0);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5354 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5355 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5356
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5357 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5358 * Configures the main filesystem columnn title for localization.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5359 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5360 * handle: Handle to the container to be configured.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5361 * title: The title to be displayed in the main column.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5362 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5363 void API dw_filesystem_set_column_title(HWND handle, const char *title)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5364 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5365 char *newtitle = strdup(title ? title : "");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5366
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5367 g_object_set_data(G_OBJECT(handle), "_dw_coltitle", newtitle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5368 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5369
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5370 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5371 * Sets up the filesystem columns, note: filesystem always has an icon/filename field.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5372 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5373 * handle: Handle to the container to be configured.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5374 * flags: An array of unsigned longs with column flags.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5375 * titles: An array of strings with column text titles.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5376 * count: The number of columns (this should match the arrays).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5377 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5378 DW_FUNCTION_DEFINITION(dw_filesystem_setup, int, HWND handle, unsigned long *flags, char **titles, int count)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5379 DW_FUNCTION_ADD_PARAM4(handle, flags, titles, count)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5380 DW_FUNCTION_RETURN(dw_filesystem_setup, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5381 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, flags, unsigned long *, titles, char **, count, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5382 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5383 char **newtitles = malloc(sizeof(char *) * (count + 1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5384 unsigned long *newflags = malloc(sizeof(unsigned long) * (count + 1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5385 char *coltitle = (char *)g_object_get_data(G_OBJECT(handle), "_dw_coltitle");
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5386 int retval;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5387
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5388 newtitles[0] = coltitle ? coltitle : "Filename";
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5389 newflags[0] = DW_CFA_STRINGANDICON | DW_CFA_LEFT | DW_CFA_HORZSEPARATOR;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5390
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5391 memcpy(&newtitles[1], titles, sizeof(char *) * count);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5392 memcpy(&newflags[1], flags, sizeof(unsigned long) * count);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5393
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5394 retval = _dw_container_setup_int(handle, newflags, newtitles, count + 1, 1, 1);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5395
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5396 if(coltitle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5397 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5398 g_object_set_data(G_OBJECT(handle), "_dw_coltitle", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5399 free(coltitle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5400 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5401 if(newtitles)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5402 free(newtitles);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5403 if(newflags)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5404 free(newflags);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5405 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5406 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5407
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5408 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5409 * Obtains an icon from a module (or header in GTK).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5410 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5411 * module: Handle to module (DLL) in OS/2 and Windows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5412 * id: A unsigned long id int the resources on OS/2 and
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5413 * Windows, on GTK this is converted to a pointer
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5414 * to an embedded XPM.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5415 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
5416 HICN API dw_icon_load(unsigned long module, unsigned long id)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5417 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5418 return (HICN)id;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5419 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5420
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5421 /* Internal function to keep HICNs from getting too big */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5422 GdkPixbuf *_dw_icon_resize(GdkPixbuf *ret)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5423 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5424 if(ret)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5425 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5426 int pwidth = gdk_pixbuf_get_width(ret);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5427 int pheight = gdk_pixbuf_get_height(ret);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5428
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5429 if(pwidth > 24 || pheight > 24)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5430 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5431 GdkPixbuf *orig = ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5432 ret = gdk_pixbuf_scale_simple(ret, pwidth > 24 ? 24 : pwidth, pheight > 24 ? 24 : pheight, GDK_INTERP_BILINEAR);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5433 g_object_unref(G_OBJECT(orig));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5434 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5435 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5436 return ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5437 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5438
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5439 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5440 * Obtains an icon from a file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5441 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5442 * filename: Name of the file, omit extention to have
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5443 * DW pick the appropriate file extension.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5444 * (ICO on OS/2 or Windows, XPM on Unix)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5445 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5446 HICN API dw_icon_load_from_file(const char *filename)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5447 {
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5448 HICN retval = 0;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5449
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5450 if(filename && *filename)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5451 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5452 char *file = alloca(strlen(filename) + 6);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5453
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5454 strcpy(file, filename);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5455
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5456 /* check if we can read from this file (it exists and read permission) */
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5457 if(access(file, 04) != 0)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5458 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5459 int i = 0;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5460
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5461 /* Try with various extentions */
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5462 while(_dw_image_exts[i] && !retval)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5463 {
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5464 strcpy(file, filename);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5465 strcat(file, _dw_image_exts[i]);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5466 if(access(file, 04) == 0)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5467 retval = _dw_icon_resize(gdk_pixbuf_new_from_file(file, NULL));
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5468 i++;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5469 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5470 }
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5471 else
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5472 retval = _dw_icon_resize(gdk_pixbuf_new_from_file(file, NULL));
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5473 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5474 return retval;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5475 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5476
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5477 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5478 * Obtains an icon from data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5479 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5480 * data: Source of data for image.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5481 * len: length of data
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5482 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5483 HICN API dw_icon_load_from_data(const char *data, int len)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5484 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5485 int fd, written = -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5486 char template[] = "/tmp/dwiconXXXXXX";
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5487 HICN ret = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5488
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5489 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5490 * A real hack; create a temporary file and write the contents
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5491 * of the data to the file
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5492 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5493 if((fd = mkstemp(template)) != -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5494 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5495 written = write(fd, data, len);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5496 close(fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5497 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5498 /* Bail if we couldn't write full file */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5499 if(fd == -1 || written != len)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5500 return 0;
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5501 ret = _dw_icon_resize(gdk_pixbuf_new_from_file(template, NULL));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5502 unlink(template);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5503 return ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5504 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5505
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5506 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5507 * Frees a loaded resource in OS/2 and Windows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5508 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5509 * handle: Handle to icon returned by dw_icon_load().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5510 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
5511 void API dw_icon_free(HICN handle)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5512 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5513 int iicon = GPOINTER_TO_INT(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5514
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5515 if(iicon > 65535)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5516 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5517 g_object_unref(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5518 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5519 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5520
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5521 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5522 * Allocates memory used to populate a container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5523 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5524 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5525 * rowcount: The number of items to be populated.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5526 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5527 DW_FUNCTION_DEFINITION(dw_container_alloc, void *, HWND handle, int rowcount)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5528 DW_FUNCTION_ADD_PARAM2(handle, rowcount)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5529 DW_FUNCTION_RETURN(dw_container_alloc, void *)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5530 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, rowcount, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5531 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5532 int z, prevrowcount = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5533 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5534 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5535
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5536 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5537
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5538 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5539 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5540 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5541
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5542 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5543 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5544 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5545
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5546 prevrowcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_rowcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5547
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5548 for(z=0;z<rowcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5549 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5550 gtk_list_store_append(store, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5551 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5552 g_object_set_data(G_OBJECT(cont), "_dw_insertpos", GINT_TO_POINTER(prevrowcount));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5553 g_object_set_data(G_OBJECT(cont), "_dw_rowcount", GINT_TO_POINTER(rowcount + prevrowcount));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5554 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5555 DW_FUNCTION_RETURN_THIS(cont);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5556 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5557
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5558 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5559 * Internal representation of dw_container_set_item() extracted so we can pass
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5560 * two data pointers; icon and text for dw_filesystem_set_item().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5561 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5562 void _dw_container_set_item_int(HWND handle, void *pointer, int column, int row, void *data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5563 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5564 char numbuf[25] = {0}, textbuffer[101] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5565 int flag = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5566 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5567 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5568
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5569 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5570
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5571 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5572 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5573 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5574
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5575 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5576 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5577 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5578
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5579 snprintf(numbuf, 24, "_dw_cont_col%d", column);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5580 flag = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), numbuf));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5581 if(pointer)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5582 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5583 row += GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_insertpos"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5584 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5585
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5586 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, row))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5587 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5588 if(flag & DW_CFA_STRINGANDICON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5589 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5590 void **thisdata = (void **)data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5591 HICN hicon = data ? *((HICN *)thisdata[0]) : 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5592 char *tmp = data ? (char *)thisdata[1] : NULL;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
5593 GdkPixbuf *pixbuf = hicon ? _dw_find_pixbuf(hicon, NULL, NULL) : NULL;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5594
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5595 gtk_list_store_set(store, &iter, _DW_CONTAINER_STORE_EXTRA, pixbuf, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5596 gtk_list_store_set(store, &iter, _DW_CONTAINER_STORE_EXTRA + 1, tmp, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5597 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5598 else if(flag & DW_CFA_BITMAPORICON)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5599 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5600 HICN hicon = data ? *((HICN *)data) : 0;
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
5601 GdkPixbuf *pixbuf = hicon ? _dw_find_pixbuf(hicon, NULL, NULL) : NULL;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5602
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5603 gtk_list_store_set(store, &iter, column + _DW_CONTAINER_STORE_EXTRA + 1, pixbuf, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5604 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5605 else if(flag & DW_CFA_STRING)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5606 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5607 char *tmp = data ? *((char **)data) : NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5608 gtk_list_store_set(store, &iter, column + _DW_CONTAINER_STORE_EXTRA + 1, tmp, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5609 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5610 else if(flag & DW_CFA_ULONG)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5611 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5612 ULONG tmp = data ? *((ULONG *)data): 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5613
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5614 gtk_list_store_set(store, &iter, column + _DW_CONTAINER_STORE_EXTRA + 1, tmp, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5615 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5616 else if(flag & DW_CFA_DATE)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5617 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5618 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5619 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5620 struct tm curtm;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5621 CDATE cdate = *((CDATE *)data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5622
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5623 memset( &curtm, 0, sizeof(curtm) );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5624 curtm.tm_mday = cdate.day;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5625 curtm.tm_mon = cdate.month - 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5626 curtm.tm_year = cdate.year - 1900;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5627
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5628 strftime(textbuffer, 100, "%x", &curtm);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5629 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5630 gtk_list_store_set(store, &iter, column + _DW_CONTAINER_STORE_EXTRA + 1, textbuffer, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5631 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5632 else if(flag & DW_CFA_TIME)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5633 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5634 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5635 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5636 struct tm curtm;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5637 CTIME ctime = *((CTIME *)data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5638
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5639 memset( &curtm, 0, sizeof(curtm) );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5640 curtm.tm_hour = ctime.hours;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5641 curtm.tm_min = ctime.minutes;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5642 curtm.tm_sec = ctime.seconds;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5643
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5644 strftime(textbuffer, 100, "%X", &curtm);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5645 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5646 gtk_list_store_set(store, &iter, column + _DW_CONTAINER_STORE_EXTRA + 1, textbuffer, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5647 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5648 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5649 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5650 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5651
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5652 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5653 * Sets an item in specified row and column to the given data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5654 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5655 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5656 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5657 * column: Zero based column of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5658 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5659 * data: Pointer to the data to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5660 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5661 DW_FUNCTION_DEFINITION(dw_container_set_item, void, HWND handle, void *pointer, int column, int row, void *data)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5662 DW_FUNCTION_ADD_PARAM5(handle, pointer, column, row, data)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5663 DW_FUNCTION_NO_RETURN(dw_container_set_item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5664 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, pointer, void *, column, int, row, int, data, void *)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5665 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5666 _dw_container_set_item_int(handle, pointer, column, row, data);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5667 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5668 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5669
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5670 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5671 * Changes an existing item in specified row and column to the given data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5672 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5673 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5674 * column: Zero based column of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5675 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5676 * data: Pointer to the data to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5677 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5678 DW_FUNCTION_DEFINITION(dw_container_change_item, void, HWND handle, int column, int row, void *data)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5679 DW_FUNCTION_ADD_PARAM4(handle, column, row, data)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5680 DW_FUNCTION_NO_RETURN(dw_container_change_item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5681 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, column, int, row, int, data, void *)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5682 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5683 _dw_container_set_item_int(handle, NULL, column, row, data);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5684 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5685 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5686
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5687 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5688 * Changes an existing item in specified row and column to the given data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5689 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5690 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5691 * column: Zero based column of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5692 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5693 * data: Pointer to the data to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5694 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5695 void API dw_filesystem_change_item(HWND handle, int column, int row, void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5696 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5697 dw_filesystem_set_item(handle, NULL, column, row, data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5698 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5699
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5700 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5701 * Changes an item in specified row and column to the given data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5702 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5703 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5704 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5705 * column: Zero based column of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5706 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5707 * data: Pointer to the data to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5708 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5709 void API dw_filesystem_change_file(HWND handle, int row, const char *filename, HICN icon)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5710 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5711 dw_filesystem_set_file(handle, NULL, row, filename, icon);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5712 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5713
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5714 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5715 * Sets an item in specified row and column to the given data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5716 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5717 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5718 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5719 * column: Zero based column of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5720 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5721 * data: Pointer to the data to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5722 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5723 DW_FUNCTION_DEFINITION(dw_filesystem_set_file, void, HWND handle, void *pointer, int row, const char *filename, HICN icon)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5724 DW_FUNCTION_ADD_PARAM5(handle, pointer, row, filename, icon)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5725 DW_FUNCTION_NO_RETURN(dw_filesystem_set_file)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5726 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, pointer, void *, row, int, filename, char *, icon, HICN)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5727 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5728 void *data[2] = { (void *)&icon, (void *)filename };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5729
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5730 _dw_container_set_item_int(handle, pointer, 0, row, (void *)data);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5731 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5732 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5733
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5734 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5735 * Sets an item in specified row and column to the given data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5736 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5737 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5738 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5739 * column: Zero based column of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5740 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5741 * data: Pointer to the data to be added.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5742 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5743 DW_FUNCTION_DEFINITION(dw_filesystem_set_item, void, HWND handle, void *pointer, int column, int row, void *data)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5744 DW_FUNCTION_ADD_PARAM5(handle, pointer, column, row, data)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5745 DW_FUNCTION_NO_RETURN(dw_filesystem_set_item)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5746 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, pointer, void *, column, int, row, int, data, void *)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5747 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5748 _dw_container_set_item_int(handle, pointer, column + 1, row, data);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5749 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5750 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5751
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5752 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5753 * Gets column type for a container column
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5754 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5755 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5756 * column: Zero based column.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5757 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5758 DW_FUNCTION_DEFINITION(dw_container_get_column_type, int, HWND handle, int column)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5759 DW_FUNCTION_ADD_PARAM2(handle, column)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5760 DW_FUNCTION_RETURN(dw_container_get_column_type, int)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5761 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, column, int)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5762 {
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5763 int flag, rc = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5764 GtkWidget *cont = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5765
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5766 if((cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user")))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5767 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5768 char numbuf[25] = {0};
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5769
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5770 snprintf(numbuf, 24, "_dw_cont_col%d", column);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5771 flag = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), numbuf));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5772
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5773 if(flag & DW_CFA_BITMAPORICON)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5774 rc = DW_CFA_BITMAPORICON;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5775 else if(flag & DW_CFA_STRING)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5776 rc = DW_CFA_STRING;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5777 else if(flag & DW_CFA_ULONG)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5778 rc = DW_CFA_ULONG;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5779 else if(flag & DW_CFA_DATE)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5780 rc = DW_CFA_DATE;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5781 else if(flag & DW_CFA_TIME)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5782 rc = DW_CFA_TIME;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5783 else
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5784 rc = 0;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5785 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5786 DW_FUNCTION_RETURN_THIS(rc);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5787 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5788
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5789 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5790 * Gets column type for a filesystem container column
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5791 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5792 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5793 * column: Zero based column.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5794 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5795 int API dw_filesystem_get_column_type(HWND handle, int column)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5796 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5797 return dw_container_get_column_type( handle, column + 1 );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5798 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5799
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5800 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5801 * Sets the alternating row colors for container window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5802 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5803 * handle: The window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5804 * oddcolor: Odd row background color in DW_RGB format or a default color index.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5805 * evencolor: Even row background color in DW_RGB format or a default color index.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5806 * DW_RGB_TRANSPARENT will disable coloring rows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5807 * DW_CLR_DEFAULT will use the system default alternating row colors.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5808 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5809 void API dw_container_set_stripe(HWND handle, unsigned long oddcolor, unsigned long evencolor)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5810 {
2441
a80df2e7195d GTK4: Add a comment with the information about striped controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2410
diff changeset
5811 /* TODO: If we want to accomplish this, according to mclasen we can do it
a80df2e7195d GTK4: Add a comment with the information about striped controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2410
diff changeset
5812 * with CSS on a GtkListBox widget using the following CSS:
a80df2e7195d GTK4: Add a comment with the information about striped controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2410
diff changeset
5813 * "row: nth-child(even) { background: red; }"
a80df2e7195d GTK4: Add a comment with the information about striped controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2410
diff changeset
5814 * However he does not recommend we do it for performance reasons.
a80df2e7195d GTK4: Add a comment with the information about striped controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2410
diff changeset
5815 */
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5816 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5817
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5818 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5819 * Sets the width of a column in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5820 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5821 * handle: Handle to window (widget) of container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5822 * column: Zero based column of width being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5823 * width: Width of column in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5824 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5825 DW_FUNCTION_DEFINITION(dw_container_set_column_width, void, HWND handle, int column, int width)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5826 DW_FUNCTION_ADD_PARAM3(handle, column, width)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5827 DW_FUNCTION_NO_RETURN(dw_container_set_column_width)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5828 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, column, int, width, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5829 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5830 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5831
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5832 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5833
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5834 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5835 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5836 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5837 GtkTreeViewColumn *col = gtk_tree_view_get_column(GTK_TREE_VIEW(cont), column);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5838
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5839 if(col && GTK_IS_TREE_VIEW_COLUMN(col))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5840 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5841 gtk_tree_view_column_set_fixed_width(GTK_TREE_VIEW_COLUMN(col), width);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5842 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5843 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5844 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5845 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5846
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5847 /* Internal version for both */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5848 void _dw_container_set_row_data_int(HWND handle, void *pointer, int row, int type, void *data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5849 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5850 GtkWidget *cont = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5851 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5852
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5853 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5854 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5855 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5856
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5857 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5858 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5859 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5860
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5861 if(pointer)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5862 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5863 row += GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_insertpos"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5864 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5865
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5866 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, row))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5867 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5868 gtk_list_store_set(store, &iter, type, (gpointer)data, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5869 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5870 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5871 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5872
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5873 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5874 * Sets the title of a row in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5875 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5876 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5877 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5878 * title: String title of the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5879 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5880 DW_FUNCTION_DEFINITION(dw_container_set_row_title, void, void *pointer, int row, const char *title)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5881 DW_FUNCTION_ADD_PARAM3(pointer, row, title)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5882 DW_FUNCTION_NO_RETURN(dw_container_set_row_title)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5883 DW_FUNCTION_RESTORE_PARAM3(pointer, void *, row, int, title, char *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5884 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5885 _dw_container_set_row_data_int(pointer, pointer, row, _DW_DATA_TYPE_STRING, (void *)title);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5886 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5887 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5888
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5889 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5890 * Changes the title of a row already inserted in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5891 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5892 * handle: Handle to window (widget) of container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5893 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5894 * title: String title of the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5895 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5896 DW_FUNCTION_DEFINITION(dw_container_change_row_title, void, HWND handle, int row, const char *title)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5897 DW_FUNCTION_ADD_PARAM3(handle, row, title)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5898 DW_FUNCTION_NO_RETURN(dw_container_change_row_title)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5899 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, row, int, title, char *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5900 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5901 _dw_container_set_row_data_int(handle, NULL, row, _DW_DATA_TYPE_STRING, (void *)title);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5902 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5903 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5904
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5905 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5906 * Sets the data of a row in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5907 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5908 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5909 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5910 * data: Data pointer.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5911 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5912 DW_FUNCTION_DEFINITION(dw_container_set_row_data, void, void *pointer, int row, void *data)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5913 DW_FUNCTION_ADD_PARAM3(pointer, row, data)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5914 DW_FUNCTION_NO_RETURN(dw_container_set_row_data)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5915 DW_FUNCTION_RESTORE_PARAM3(pointer, void *, row, int, data, void *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5916 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5917 _dw_container_set_row_data_int(pointer, pointer, row, _DW_DATA_TYPE_POINTER, data);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5918 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5919 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5920
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5921 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5922 * Changes the data of a row already inserted in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5923 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5924 * handle: Handle to window (widget) of container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5925 * row: Zero based row of data being set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5926 * data: Data pointer.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5927 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5928 DW_FUNCTION_DEFINITION(dw_container_change_row_data, void, HWND handle, int row, void *data)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5929 DW_FUNCTION_ADD_PARAM3(handle, row, data)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5930 DW_FUNCTION_NO_RETURN(dw_container_change_row_data)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5931 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, row, int, data, void *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5932 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5933 _dw_container_set_row_data_int(handle, NULL, row, _DW_DATA_TYPE_POINTER, data);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5934 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5935 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5936
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5937 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5938 * Sets the title of a row in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5939 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5940 * handle: Handle to the container window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5941 * pointer: Pointer to the allocated memory in dw_container_alloc().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5942 * rowcount: The number of rows to be inserted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5943 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
5944 void API dw_container_insert(HWND handle, void *pointer, int rowcount)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5945 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5946 /* Don't need to do anything here */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5947 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5948
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5949 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5950 * Removes the first x rows from a container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5951 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5952 * handle: Handle to the window (widget) to be deleted from.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5953 * rowcount: The number of rows to be deleted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5954 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5955 DW_FUNCTION_DEFINITION(dw_container_delete, void, HWND handle, int rowcount)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5956 DW_FUNCTION_ADD_PARAM2(handle, rowcount)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5957 DW_FUNCTION_NO_RETURN(dw_container_delete)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5958 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, rowcount, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5959 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5960 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5961 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5962
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5963 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5964
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5965 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5966 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5967 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5968
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5969 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5970 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5971 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5972 int rows, z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5973
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5974 rows = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_rowcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5975
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5976 for(z=0;z<rowcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5977 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5978 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, 0))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5979 gtk_list_store_remove(store, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5980 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5981
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5982 if(rows - rowcount < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5983 rows = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5984 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5985 rows -= rowcount;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5986
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5987 g_object_set_data(G_OBJECT(cont), "_dw_rowcount", GINT_TO_POINTER(rows));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5988 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5989 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5990 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5991
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5992 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5993 * Removes all rows from a container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5994 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5995 * handle: Handle to the window (widget) to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5996 * redraw: TRUE to cause the container to redraw immediately.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5997 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5998 DW_FUNCTION_DEFINITION(dw_container_clear, void, HWND handle, DW_UNUSED(int redraw))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5999 DW_FUNCTION_ADD_PARAM2(handle, redraw)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6000 DW_FUNCTION_NO_RETURN(dw_container_clear)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6001 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, DW_UNUSED(redraw), int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6002 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6003 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6004 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6005
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6006 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6007
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6008 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6009 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6010 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6011
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6012 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6013 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6014 g_object_set_data(G_OBJECT(cont), "_dw_rowcount", GINT_TO_POINTER(0));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6015 g_object_set_data(G_OBJECT(cont), "_dw_insertpos", GINT_TO_POINTER(0));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6016
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6017 gtk_list_store_clear(store);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6018 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6019 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6020 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6021
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6022 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6023 * Scrolls container up or down.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6024 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6025 * handle: Handle to the window (widget) to be scrolled.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6026 * direction: DW_SCROLL_UP, DW_SCROLL_DOWN, DW_SCROLL_TOP or
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6027 * DW_SCROLL_BOTTOM. (rows is ignored for last two)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6028 * rows: The number of rows to be scrolled.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6029 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6030 DW_FUNCTION_DEFINITION(dw_container_scroll, void, HWND handle, int direction, long rows)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6031 DW_FUNCTION_ADD_PARAM3(handle, direction, rows)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6032 DW_FUNCTION_NO_RETURN(dw_container_scroll)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6033 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, direction, int, rows, long)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6034 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6035 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6036
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6037 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6038
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6039 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6040 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6041 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6042 GtkAdjustment *adjust = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6043
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6044 if(adjust)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6045 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6046 gint rowcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_rowcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6047 gdouble currpos = gtk_adjustment_get_value(adjust);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6048 gdouble upper = gtk_adjustment_get_upper(adjust);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6049 gdouble lower = gtk_adjustment_get_lower(adjust);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6050 gdouble change;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6051
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6052 /* Safety check */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6053 if(rowcount > 0)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6054 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6055 change = ((gdouble)rows/(gdouble)rowcount) * (upper - lower);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6056
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6057 switch(direction)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6058 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6059 case DW_SCROLL_TOP:
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6060 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6061 gtk_adjustment_set_value(adjust, lower);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6062 break;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6063 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6064 case DW_SCROLL_BOTTOM:
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6065 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6066 gtk_adjustment_set_value(adjust, upper);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6067 break;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6068 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6069 case DW_SCROLL_UP:
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6070 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6071 gdouble newpos = currpos - change;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6072 if(newpos < lower)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6073 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6074 newpos = lower;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6075 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6076 gtk_adjustment_set_value(adjust, newpos);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6077 break;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6078 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6079 case DW_SCROLL_DOWN:
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6080 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6081 gdouble newpos = currpos + change;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6082 if(newpos > upper)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6083 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6084 newpos = upper;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6085 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6086 gtk_adjustment_set_value(adjust, newpos);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6087 break;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6088 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6089 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6090 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6091 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6092 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6093 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6094 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6095
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6096 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6097 * Starts a new query of a container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6098 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6099 * handle: Handle to the window (widget) to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6100 * flags: If this parameter is DW_CRA_SELECTED it will only
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6101 * return items that are currently selected. Otherwise
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6102 * it will return all records in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6103 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6104 DW_FUNCTION_DEFINITION(dw_container_query_start, char *, HWND handle, unsigned long flags)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6105 DW_FUNCTION_ADD_PARAM2(handle, flags)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6106 DW_FUNCTION_RETURN(dw_container_query_start, char *)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6107 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, flags, unsigned long)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6108 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6109 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6110 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6111 char *retval = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6112 int type = flags & DW_CR_RETDATA ? _DW_DATA_TYPE_POINTER : _DW_DATA_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6113
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6114 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6115
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6116 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6117 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6118 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6119
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6120 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6121 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6122 /* These should be separate but right now this will work */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6123 if(flags & DW_CRA_SELECTED)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6124 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6125 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6126 GList *list = gtk_tree_selection_get_selected_rows(sel, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6127 if(list)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6128 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6129 GtkTreePath *path = g_list_nth_data(list, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6130
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6131 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6132 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6133 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6134
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6135 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6136 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6137 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6138
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6139 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, indices[0]))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6140 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6141 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, type, &retval, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6142 g_object_set_data(G_OBJECT(cont), "_dw_querypos", GINT_TO_POINTER(1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6143 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6144 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6145 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6146 g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6147 g_list_free(list);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6148 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6149 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6150 else if(flags & DW_CRA_CURSORED)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6151 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6152 GtkTreePath *path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6153
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6154 gtk_tree_view_get_cursor(GTK_TREE_VIEW(cont), &path, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6155 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6156 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6157 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6158
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6159 if(gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6160 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6161 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, type, &retval, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6162 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6163 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6164 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6165 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6166 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6167 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6168 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6169
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6170 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, 0))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6171 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6172 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, type, &retval, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6173 g_object_set_data(G_OBJECT(cont), "_dw_querypos", GINT_TO_POINTER(1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6174 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6175 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6176 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6177 /* If there is a title, duplicate it and free the temporary copy */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6178 if(retval && type == _DW_DATA_TYPE_STRING)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6179 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6180 char *temp = retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6181 retval = strdup(temp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6182 g_free(temp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6183 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6184 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6185 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6186
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6187 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6188 * Continues an existing query of a container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6189 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6190 * handle: Handle to the window (widget) to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6191 * flags: If this parameter is DW_CRA_SELECTED it will only
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6192 * return items that are currently selected. Otherwise
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6193 * it will return all records in the container.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6194 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6195 DW_FUNCTION_DEFINITION(dw_container_query_next, char *, HWND handle, unsigned long flags)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6196 DW_FUNCTION_ADD_PARAM2(handle, flags)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6197 DW_FUNCTION_RETURN(dw_container_query_next, char *)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6198 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, flags, unsigned long)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6199 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6200 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6201 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6202 char *retval = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6203 int type = flags & DW_CR_RETDATA ? _DW_DATA_TYPE_POINTER : _DW_DATA_TYPE_STRING;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6204
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6205 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6206
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6207 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6208 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6209 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6210
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6211 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6212 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6213 int pos = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_querypos"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6214 int count = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6215
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6216 /* These should be separate but right now this will work */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6217 if(flags & DW_CRA_SELECTED)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6218 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6219 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6220 GList *list = gtk_tree_selection_get_selected_rows(sel, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6221
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6222 if(list)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6223 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6224 GtkTreePath *path = g_list_nth_data(list, pos);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6225
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6226 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6227 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6228 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6229
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6230 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6231 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6232 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6233
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6234 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, indices[0]))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6235 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6236 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, type, &retval, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6237 g_object_set_data(G_OBJECT(cont), "_dw_querypos", GINT_TO_POINTER(pos+1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6238 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6239 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6240 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6241 g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6242 g_list_free(list);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6243 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6244 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6245 else if(flags & DW_CRA_CURSORED)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6246 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6247 /* There will only be one item cursored,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6248 * retrieve it with dw_container_query_start()
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6249 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6250 retval = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6251 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6252 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6253 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6254 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6255
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6256 if(pos < count && gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, pos))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6257 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6258 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, type, &retval, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6259 g_object_set_data(G_OBJECT(cont), "_dw_querypos", GINT_TO_POINTER(pos+1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6260 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6261 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6262 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6263 /* If there is a title, duplicate it and free the temporary copy */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6264 if(retval && type == _DW_DATA_TYPE_STRING)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6265 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6266 char *temp = retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6267 retval = strdup(temp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6268 g_free(temp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6269 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6270 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6271 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6272
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
6273 int _dw_find_iter(GtkListStore *store, GtkTreeIter *iter, void *data, int textcomp)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6274 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6275 int z, rows = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6276 void *thisdata;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6277 int retval = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6278
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6279 for(z=0;z<rows;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6280 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6281 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), iter, NULL, z))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6282 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6283 /* Get either string from position 0 or pointer from position 1 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6284 gtk_tree_model_get(GTK_TREE_MODEL(store), iter, textcomp ? _DW_DATA_TYPE_STRING : _DW_DATA_TYPE_POINTER, &thisdata, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6285 if((textcomp && thisdata && strcmp((char *)thisdata, (char *)data) == 0) || (!textcomp && thisdata == data))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6286 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6287 retval = TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6288 z = rows;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6289 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6290 if(textcomp && thisdata)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6291 g_free(thisdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6292 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6293 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6294 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6295 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6296
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6297 void _dw_container_cursor_int(HWND handle, void *data, int textcomp)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6298 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6299 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6300 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6301
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6302 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6303
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6304 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6305 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6306 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6307
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6308 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6309 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6310 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6311
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
6312 if(_dw_find_iter(store, &iter, data, textcomp))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6313 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6314 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6315
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6316 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6317 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6318 gtk_tree_view_row_activated(GTK_TREE_VIEW(cont), path, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6319 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6320 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6321 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6322 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6323 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6324
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6325 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6326 * Cursors the item with the text speficied, and scrolls to that item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6327 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6328 * handle: Handle to the window (widget) to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6329 * text: Text usually returned by dw_container_query().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6330 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6331 DW_FUNCTION_DEFINITION(dw_container_cursor, void, HWND handle, const char *text)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6332 DW_FUNCTION_ADD_PARAM2(handle, text)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6333 DW_FUNCTION_NO_RETURN(dw_container_cursor)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6334 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, text, char *)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6335 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6336 _dw_container_cursor_int(handle, (void *)text, TRUE);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6337 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6338 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6339
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6340 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6341 * Cursors the item with the text speficied, and scrolls to that item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6342 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6343 * handle: Handle to the window (widget) to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6344 * text: Text usually returned by dw_container_query().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6345 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6346 DW_FUNCTION_DEFINITION(dw_container_cursor_by_data, void, HWND handle, void *data)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6347 DW_FUNCTION_ADD_PARAM2(handle, data)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6348 DW_FUNCTION_NO_RETURN(dw_container_cursor_by_data)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6349 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, data, void *)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6350 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6351 _dw_container_cursor_int(handle, data, FALSE);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6352 DW_FUNCTION_RETURN_NOTHING;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6353 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6354
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6355 void _dw_container_delete_row_int(HWND handle, void *data, int textcomp)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6356 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6357 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6358 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6359
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6360 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6361
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6362 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6363 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6364 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(cont));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6365
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6366 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6367 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6368 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6369 int rows = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_rowcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6370
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
6371 if(_dw_find_iter(store, &iter, data, textcomp))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6372 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6373 gtk_list_store_remove(store, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6374 rows--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6375 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6376
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6377 g_object_set_data(G_OBJECT(cont), "_dw_rowcount", GINT_TO_POINTER(rows));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6378 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6379 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6380
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6381 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6382 * Deletes the item with the text speficied.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6383 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6384 * handle: Handle to the window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6385 * text: Text usually returned by dw_container_query().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6386 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6387 DW_FUNCTION_DEFINITION(dw_container_delete_row, void, HWND handle, const char *text)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6388 DW_FUNCTION_ADD_PARAM2(handle, text)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6389 DW_FUNCTION_NO_RETURN(dw_container_delete_row)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6390 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, text, char *)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6391 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6392 _dw_container_delete_row_int(handle, (void *)text, TRUE);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6393 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6394 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6395
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6396 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6397 * Deletes the item with the text speficied.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6398 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6399 * handle: Handle to the window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6400 * text: Text usually returned by dw_container_query().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6401 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6402 DW_FUNCTION_DEFINITION(dw_container_delete_row_by_data, void, HWND handle, void *data)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6403 DW_FUNCTION_ADD_PARAM2(handle, data)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6404 DW_FUNCTION_NO_RETURN(dw_container_delete_row_by_data)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6405 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, data, void *)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6406 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6407 _dw_container_delete_row_int(handle, data, FALSE);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6408 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6409 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6410
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6411 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6412 * Optimizes the column widths so that all data is visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6413 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6414 * handle: Handle to the window (widget) to be optimized.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6415 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6416 DW_FUNCTION_DEFINITION(dw_container_optimize, void, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6417 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6418 DW_FUNCTION_NO_RETURN(dw_container_optimize)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6419 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6420 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6421 GtkWidget *cont;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6422
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6423 cont = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6424
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6425 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6426 if(cont && GTK_IS_TREE_VIEW(cont) && g_object_get_data(G_OBJECT(cont), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_CONTAINER))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6427 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(cont));
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6428 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6429 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6430
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6431 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6432 * Inserts an icon into the taskbar.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6433 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6434 * handle: Window handle that will handle taskbar icon messages.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6435 * icon: Icon handle to display in the taskbar.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6436 * bubbletext: Text to show when the mouse is above the icon.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6437 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
6438 void API dw_taskbar_insert(HWND handle, HICN icon, const char *bubbletext)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6439 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6440 /* TODO: Removed in GTK4.... no replacement? */
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6441 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6442
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6443 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6444 * Deletes an icon from the taskbar.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6445 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6446 * handle: Window handle that was used with dw_taskbar_insert().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6447 * icon: Icon handle that was used with dw_taskbar_insert().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6448 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
6449 void API dw_taskbar_delete(HWND handle, HICN icon)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6450 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6451 /* TODO: Removed in GTK4.... no replacement? */
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6452 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6453
2341
1a630cddf384 GTK4: Remove render widgets from the dirty list when they are destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2340
diff changeset
6454 /* Make sure the widget is out of the dirty list if it is destroyed */
1a630cddf384 GTK4: Remove render widgets from the dirty list when they are destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2340
diff changeset
6455 static void _dw_render_destroy(GtkWidget *widget, gpointer data)
1a630cddf384 GTK4: Remove render widgets from the dirty list when they are destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2340
diff changeset
6456 {
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6457 cairo_surface_t *surface = (cairo_surface_t *)g_object_get_data(G_OBJECT(widget), "_dw_cr_surface");
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6458
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6459 if(surface)
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6460 cairo_surface_destroy(surface);
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6461
2341
1a630cddf384 GTK4: Remove render widgets from the dirty list when they are destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2340
diff changeset
6462 _dw_dirty_list = g_list_remove(_dw_dirty_list, widget);
1a630cddf384 GTK4: Remove render widgets from the dirty list when they are destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2340
diff changeset
6463 }
1a630cddf384 GTK4: Remove render widgets from the dirty list when they are destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2340
diff changeset
6464
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6465 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6466 * Creates a rendering context widget (window) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6467 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6468 * id: An id to be used with dw_window_from_id.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6469 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6470 * A handle to the widget or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6471 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6472 DW_FUNCTION_DEFINITION(dw_render_new, HWND, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6473 DW_FUNCTION_ADD_PARAM1(cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6474 DW_FUNCTION_RETURN(dw_render_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6475 DW_FUNCTION_RESTORE_PARAM1(cid, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6476 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6477 GtkWidget *tmp = gtk_drawing_area_new();
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6478 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2341
1a630cddf384 GTK4: Remove render widgets from the dirty list when they are destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2340
diff changeset
6479 g_signal_connect(G_OBJECT(tmp), "destroy", G_CALLBACK(_dw_render_destroy), NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6480 gtk_widget_set_can_focus(tmp, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6481 gtk_widget_show(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6482 if(_DWDefaultFont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6483 dw_window_set_font(tmp, _DWDefaultFont);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6484 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6485 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6486
2355
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6487 /*
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6488 * Invalidate the render widget triggering an expose event.
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6489 * Parameters:
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6490 * handle: A handle to a render widget to be redrawn.
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6491 */
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6492 DW_FUNCTION_DEFINITION(dw_render_redraw, void, HWND handle)
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6493 DW_FUNCTION_ADD_PARAM1(handle)
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6494 DW_FUNCTION_NO_RETURN(dw_render_redraw)
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6495 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6496 {
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6497 if(handle && GTK_IS_WIDGET(handle))
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6498 gtk_widget_queue_draw(handle);
2356
6f4f7882363c GTK4: Fix compilation after last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2355
diff changeset
6499 DW_FUNCTION_RETURN_NOTHING;
2355
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6500 }
fad0821cb953 Add new function dw_render_redraw() which will trigger expose event on render widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2347
diff changeset
6501
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6502 /* Returns a GdkRGBA from a DW color */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6503 static GdkRGBA _dw_internal_color(unsigned long value)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6504 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6505 if(DW_RGB_COLOR & value)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6506 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6507 GdkRGBA color = { (gfloat)DW_RED_VALUE(value) / 255.0, (gfloat)DW_GREEN_VALUE(value) / 255.0, (gfloat)DW_BLUE_VALUE(value) / 255.0, 1.0 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6508 return color;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6509 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6510 if (value < 16)
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
6511 return _dw_colors[value];
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
6512 return _dw_colors[0];
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6513 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6514
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6515 /* Sets the current foreground drawing color.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6516 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6517 * red: red value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6518 * green: green value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6519 * blue: blue value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6520 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
6521 void API dw_color_foreground_set(unsigned long value)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6522 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6523 GdkRGBA color = _dw_internal_color(value);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6524 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6525
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6526 *foreground = color;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6527 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6528
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6529 /* Sets the current background drawing color.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6530 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6531 * red: red value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6532 * green: green value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6533 * blue: blue value.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6534 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
6535 void API dw_color_background_set(unsigned long value)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6536 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6537 GdkRGBA *background = pthread_getspecific(_dw_bg_color_key);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6538
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6539 if(value == DW_CLR_DEFAULT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6540 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6541 if(background)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6542 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6543 pthread_setspecific(_dw_bg_color_key, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6544 free(background);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6545 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6546 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6547 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6548 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6549 GdkRGBA color = _dw_internal_color(value);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6550
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6551 if(!background)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6552 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6553 background = malloc(sizeof(GdkRGBA));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6554 pthread_setspecific(_dw_bg_color_key, background);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6555 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6556 *background = color;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6557 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6558 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6559
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6560 /* Allows the user to choose a color using the system's color chooser dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6561 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6562 * value: current color
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6563 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6564 * The selected color or the current color if cancelled.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6565 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6566 DW_FUNCTION_DEFINITION(dw_color_choose, ULONG, ULONG value)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6567 DW_FUNCTION_ADD_PARAM1(value)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6568 DW_FUNCTION_RETURN(dw_color_choose, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6569 DW_FUNCTION_RESTORE_PARAM1(value, ULONG)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6570 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6571 GtkColorChooser *cd;
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6572 GdkRGBA color = _dw_internal_color(value);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6573 unsigned long retcolor = value;
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6574 DWDialog *tmp = dw_dialog_new(NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6575
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6576 cd = (GtkColorChooser *)gtk_color_chooser_dialog_new("Choose color", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6577 gtk_color_chooser_set_use_alpha(cd, FALSE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6578 gtk_color_chooser_set_rgba(cd, &color);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6579
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6580 gtk_widget_show(GTK_WIDGET(cd));
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
6581 g_signal_connect(G_OBJECT(cd), "response", G_CALLBACK(_dw_dialog_response), (gpointer)tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6582
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6583 if(DW_POINTER_TO_INT(dw_dialog_wait(tmp)) == GTK_RESPONSE_OK)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6584 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6585 gtk_color_chooser_get_rgba(cd, &color);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6586 retcolor = DW_RGB((int)(color.red * 255), (int)(color.green * 255), (int)(color.blue * 255));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6587 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6588 if(GTK_IS_WINDOW(cd))
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6589 gtk_window_destroy(GTK_WINDOW(cd));
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6590 DW_FUNCTION_RETURN_THIS(retcolor);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6591 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6592
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6593 /* Draw a point on a window (preferably a render window).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6594 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6595 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6596 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6597 * x: X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6598 * y: Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6599 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6600 DW_FUNCTION_DEFINITION(dw_draw_point, void, HWND handle, HPIXMAP pixmap, int x, int y)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6601 DW_FUNCTION_ADD_PARAM4(handle, pixmap, x, y)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6602 DW_FUNCTION_NO_RETURN(dw_draw_point)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6603 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, pixmap, HPIXMAP, x, int, y, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6604 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6605 cairo_t *cr = NULL;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6606 int cached = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6607
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6608 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6609 {
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6610 cairo_surface_t *surface;
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6611
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6612 if((cr = _dw_cairo_update(handle, -1, -1)))
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6613 cached = TRUE;
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6614 else if((surface = g_object_get_data(G_OBJECT(handle), "_dw_cr_surface")))
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6615 cr = cairo_create(surface);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6616 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6617 else if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6618 cr = cairo_create(pixmap->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6619 if(cr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6620 {
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6621 #ifdef _DW_SINGLE_THREADED
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6622 GdkRGBA *_dw_fg_color = pthread_getspecific(_dw_fg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6623 #endif
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6624
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6625 gdk_cairo_set_source_rgba(cr, _dw_fg_color);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6626 cairo_set_line_width(cr, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6627 cairo_move_to(cr, x, y);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6628 cairo_stroke(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6629 /* If we are using a drawing context...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6630 * we don't own the cairo context so don't destroy it.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6631 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6632 if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6633 cairo_destroy(cr);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6634 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6635 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6636 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6637
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6638 /* Draw a line on a window (preferably a render window).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6639 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6640 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6641 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6642 * x1: First X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6643 * y1: First Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6644 * x2: Second X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6645 * y2: Second Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6646 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6647 DW_FUNCTION_DEFINITION(dw_draw_line, void, HWND handle, HPIXMAP pixmap, int x1, int y1, int x2, int y2)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6648 DW_FUNCTION_ADD_PARAM6(handle, pixmap, x1, y1, x2, y2)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6649 DW_FUNCTION_NO_RETURN(dw_draw_line)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6650 DW_FUNCTION_RESTORE_PARAM6(handle, HWND, pixmap, HPIXMAP, x1, int, y1, int, x2, int, y2, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6651 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6652 cairo_t *cr = NULL;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6653 int cached = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6654
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6655 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6656 {
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6657 cairo_surface_t *surface;
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6658
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6659 if((cr = _dw_cairo_update(handle, -1, -1)))
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6660 cached = TRUE;
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6661 else if((surface = g_object_get_data(G_OBJECT(handle), "_dw_cr_surface")))
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6662 cr = cairo_create(surface);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6663 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6664 else if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6665 cr = cairo_create(pixmap->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6666 if(cr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6667 {
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6668 #ifdef _DW_SINGLE_THREADED
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6669 GdkRGBA *_dw_fg_color = pthread_getspecific(_dw_fg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6670 #endif
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6671
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6672 gdk_cairo_set_source_rgba(cr, _dw_fg_color);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6673 cairo_set_line_width(cr, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6674 cairo_move_to(cr, x1, y1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6675 cairo_line_to(cr, x2, y2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6676 cairo_stroke(cr);
2280
7902be60c542 GTK4: More work on the draw and bitblt functions... still doesn't work
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2279
diff changeset
6677 /* If we are using a drawing context...
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6678 * we don't own the cairo context so don't destroy it.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6679 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6680 if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6681 cairo_destroy(cr);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6682 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6683 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6684 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6685
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6686 /* Draw a closed polygon on a window (preferably a render window).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6687 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6688 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6689 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6690 * flags: DW_DRAW_FILL (1) to fill the polygon or DW_DRAW_DEFAULT (0).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6691 * number of points
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6692 * x[]: X coordinates.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6693 * y[]: Y coordinates.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6694 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6695 DW_FUNCTION_DEFINITION(dw_draw_polygon, void, HWND handle, HPIXMAP pixmap, int flags, int npoints, int *x, int *y)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6696 DW_FUNCTION_ADD_PARAM6(handle, pixmap, flags, npoints, x, y)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6697 DW_FUNCTION_NO_RETURN(dw_draw_polygon)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6698 DW_FUNCTION_RESTORE_PARAM6(handle, HWND, pixmap, HPIXMAP, flags, int, npoints, int, x, int *, y, int *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6699 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6700 cairo_t *cr = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6701 int z;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6702 int cached = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6703
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6704 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6705 {
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6706 cairo_surface_t *surface;
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6707
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6708 if((cr = _dw_cairo_update(handle, -1, -1)))
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6709 cached = TRUE;
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6710 else if((surface = g_object_get_data(G_OBJECT(handle), "_dw_cr_surface")))
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6711 cr = cairo_create(surface);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6712 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6713 else if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6714 cr = cairo_create(pixmap->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6715 if(cr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6716 {
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6717 #ifdef _DW_SINGLE_THREADED
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6718 GdkRGBA *_dw_fg_color = pthread_getspecific(_dw_fg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6719 #endif
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6720
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6721 if(flags & DW_DRAW_NOAA)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6722 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6723
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6724 gdk_cairo_set_source_rgba(cr, _dw_fg_color);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6725 cairo_set_line_width(cr, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6726 cairo_move_to(cr, x[0], y[0]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6727 for(z=1;z<npoints;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6728 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6729 cairo_line_to(cr, x[z], y[z]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6730 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6731 if(flags & DW_DRAW_FILL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6732 cairo_fill(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6733 cairo_stroke(cr);
2280
7902be60c542 GTK4: More work on the draw and bitblt functions... still doesn't work
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2279
diff changeset
6734 /* If we are using a drawing context...
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6735 * we don't own the cairo context so don't destroy it.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6736 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6737 if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6738 cairo_destroy(cr);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6739 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6740 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6741 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6742
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6743 /* Draw a rectangle on a window (preferably a render window).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6744 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6745 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6746 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6747 * flags: DW_DRAW_FILL (1) to fill the box or DW_DRAW_DEFAULT (0).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6748 * x: X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6749 * y: Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6750 * width: Width of rectangle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6751 * height: Height of rectangle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6752 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6753 DW_FUNCTION_DEFINITION(dw_draw_rect, void, HWND handle, HPIXMAP pixmap, int flags, int x, int y, int width, int height)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6754 DW_FUNCTION_ADD_PARAM7(handle, pixmap, flags, x, y, width, height)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6755 DW_FUNCTION_NO_RETURN(dw_draw_rect)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6756 DW_FUNCTION_RESTORE_PARAM7(handle, HWND, pixmap, HPIXMAP, flags, int, x, int, y, int, width, int, height, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6757 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6758 cairo_t *cr = NULL;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6759 int cached = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6760
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6761 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6762 {
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6763 cairo_surface_t *surface;
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6764
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6765 if((cr = _dw_cairo_update(handle, -1, -1)))
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6766 cached = TRUE;
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6767 else if((surface = g_object_get_data(G_OBJECT(handle), "_dw_cr_surface")))
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6768 cr = cairo_create(surface);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6769 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6770 else if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6771 cr = cairo_create(pixmap->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6772 if(cr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6773 {
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6774 #ifdef _DW_SINGLE_THREADED
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6775 GdkRGBA *_dw_fg_color = pthread_getspecific(_dw_fg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6776 #endif
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6777
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6778 if(flags & DW_DRAW_NOAA)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6779 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6780
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6781 gdk_cairo_set_source_rgba(cr, _dw_fg_color);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6782 cairo_set_line_width(cr, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6783 cairo_move_to(cr, x, y);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6784 cairo_line_to(cr, x, y + height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6785 cairo_line_to(cr, x + width, y + height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6786 cairo_line_to(cr, x + width, y);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6787 if(flags & DW_DRAW_FILL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6788 cairo_fill(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6789 cairo_stroke(cr);
2280
7902be60c542 GTK4: More work on the draw and bitblt functions... still doesn't work
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2279
diff changeset
6790 /* If we are using a drawing context...
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6791 * we don't own the cairo context so don't destroy it.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6792 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6793 if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6794 cairo_destroy(cr);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6795 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6796 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6797 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6798
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6799 /* Draw an arc on a window (preferably a render window).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6800 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6801 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6802 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6803 * flags: DW_DRAW_FILL (1) to fill the arc or DW_DRAW_DEFAULT (0).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6804 * DW_DRAW_FULL will draw a complete circle/elipse.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6805 * xorigin: X coordinate of center of arc.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6806 * yorigin: Y coordinate of center of arc.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6807 * x1: X coordinate of first segment of arc.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6808 * y1: Y coordinate of first segment of arc.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6809 * x2: X coordinate of second segment of arc.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6810 * y2: Y coordinate of second segment of arc.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6811 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6812 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)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6813 DW_FUNCTION_ADD_PARAM9(handle, pixmap, flags, xorigin, yorigin, x1, y1, x2, y2)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6814 DW_FUNCTION_NO_RETURN(dw_draw_arc)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6815 DW_FUNCTION_RESTORE_PARAM9(handle, HWND, pixmap, HPIXMAP, flags, int, xorigin, int, yorigin, int, x1, int, y1, int, x2, int, y2, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6816 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6817 cairo_t *cr = NULL;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6818 int cached = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6819
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6820 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6821 {
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6822 cairo_surface_t *surface;
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6823
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6824 if((cr = _dw_cairo_update(handle, -1, -1)))
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
6825 cached = TRUE;
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6826 else if((surface = g_object_get_data(G_OBJECT(handle), "_dw_cr_surface")))
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6827 cr = cairo_create(surface);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6828 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6829 else if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6830 cr = cairo_create(pixmap->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6831 if(cr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6832 {
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6833 #ifdef _DW_SINGLE_THREADED
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6834 GdkRGBA *_dw_fg_color = pthread_getspecific(_dw_fg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6835 #endif
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6836 int width = abs(x2-x1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6837 float scale = fabs((float)(y2-y1))/(float)width;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6838
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6839 if(flags & DW_DRAW_NOAA)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6840 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6841
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6842 gdk_cairo_set_source_rgba(cr, _dw_fg_color);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6843 cairo_set_line_width(cr, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6844 if(scale != 1.0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6845 cairo_scale(cr, 1.0, scale);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6846 if(flags & DW_DRAW_FULL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6847 cairo_arc(cr, xorigin, yorigin / scale, width/2, 0, M_PI*2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6848 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6849 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6850 double dx = xorigin - x1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6851 double dy = yorigin - y1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6852 double r = sqrt(dx*dx + dy*dy);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6853 double a1 = atan2((y1-yorigin), (x1-xorigin));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6854 double a2 = atan2((y2-yorigin), (x2-xorigin));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6855
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6856 cairo_arc(cr, xorigin, yorigin, r, a1, a2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6857 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6858 if(flags & DW_DRAW_FILL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6859 cairo_fill(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6860 cairo_stroke(cr);
2280
7902be60c542 GTK4: More work on the draw and bitblt functions... still doesn't work
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2279
diff changeset
6861 /* If we are using a drawing context...
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6862 * we don't own the cairo context so don't destroy it.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6863 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6864 if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6865 cairo_destroy(cr);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6866 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6867 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6868 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6869
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6870 /* Draw text on a window (preferably a render window).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6871 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6872 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6873 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6874 * x: X coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6875 * y: Y coordinate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6876 * text: Text to be displayed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6877 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6878 DW_FUNCTION_DEFINITION(dw_draw_text, void, HWND handle, HPIXMAP pixmap, int x, int y, const char *text)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6879 DW_FUNCTION_ADD_PARAM5(handle, pixmap, x, y, text)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6880 DW_FUNCTION_NO_RETURN(dw_draw_text)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6881 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, pixmap, HPIXMAP, x, int, y, int, text, const char *)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6882 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6883 if(text)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6884 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6885 cairo_t *cr = NULL;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6886 PangoFontDescription *font;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6887 char *tmpname, *fontname = "monospace 10";
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6888 int cached = FALSE;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6889
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6890 if(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6891 {
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6892 cairo_surface_t *surface;
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6893
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6894 if((cr = _dw_cairo_update(handle, -1, -1)))
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6895 cached = TRUE;
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6896 else if((surface = g_object_get_data(G_OBJECT(handle), "_dw_cr_surface")))
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6897 cr = cairo_create(surface);
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6898 if((tmpname = (char *)g_object_get_data(G_OBJECT(handle), "_dw_fontname")))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6899 fontname = tmpname;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6900 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6901 else if(pixmap)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6902 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6903 if(pixmap->font)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6904 fontname = pixmap->font;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6905 else if(pixmap->handle && (tmpname = (char *)g_object_get_data(G_OBJECT(pixmap->handle), "_dw_fontname")))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6906 fontname = tmpname;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6907 cr = cairo_create(pixmap->image);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6908 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6909 if(cr)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6910 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6911 font = pango_font_description_from_string(fontname);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6912 if(font)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6913 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6914 PangoContext *context = pango_cairo_create_context(cr);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6915
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6916 if(context)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6917 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6918 PangoLayout *layout = pango_layout_new(context);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6919
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6920 if(layout)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6921 {
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6922 #ifdef _DW_SINGLE_THREADED
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6923 GdkRGBA *_dw_fg_color = pthread_getspecific(_dw_fg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6924 GdkRGBA *_dw_bg_color = pthread_getspecific(_dw_bg_color_key);
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6925 #endif
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6926
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6927 pango_layout_set_font_description(layout, font);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6928 pango_layout_set_text(layout, text, strlen(text));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6929
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6930 gdk_cairo_set_source_rgba(cr, _dw_fg_color);
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6931 /* Create a background color attribute if required */
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6932 if(_dw_bg_color)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6933 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6934 PangoAttrList *list = pango_layout_get_attributes(layout);
2731
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6935 PangoAttribute *attr = pango_attr_background_new((guint16)(_dw_bg_color->red * 65535),
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6936 (guint16)(_dw_bg_color->green * 65535),
85917c0c52f1 GTK4: Same color thread safety passing changes as on iOS and Mac.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2663
diff changeset
6937 (guint16)(_dw_bg_color->blue* 65535));
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6938 if(!list)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6939 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6940 list = pango_attr_list_new();
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6941 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6942 pango_attr_list_change(list, attr);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6943 pango_layout_set_attributes(layout, list);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6944 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6945 /* Do the drawing */
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6946 cairo_move_to(cr, x, y);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6947 pango_cairo_show_layout (cr, layout);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6948
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6949 g_object_unref(layout);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6950 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6951 g_object_unref(context);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6952 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6953 pango_font_description_free(font);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6954 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6955 /* If we are using a drawing context...
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6956 * we don't own the cairo context so don't destroy it.
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6957 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6958 if(!cached)
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6959 cairo_destroy(cr);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6960 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6961 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6962 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6963 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6964
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6965 /* Query the width and height of a text string.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6966 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6967 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6968 * pixmap: Handle to the pixmap. (choose only one of these)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6969 * text: Text to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6970 * width: Pointer to a variable to be filled in with the width.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6971 * height Pointer to a variable to be filled in with the height.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6972 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6973 DW_FUNCTION_DEFINITION(dw_font_text_extents_get, void, HWND handle, HPIXMAP pixmap, const char *text, int *width, int *height)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6974 DW_FUNCTION_ADD_PARAM5(handle, pixmap, text, width, height)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6975 DW_FUNCTION_NO_RETURN(dw_font_text_extents_get)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6976 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, pixmap, HPIXMAP, text, const char *, width, int *, height, int *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6977 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6978 PangoFontDescription *font;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6979 char *fontname = NULL;
2336
dd1b2cc95c91 GTK4: Don't unref the PangoContext returned from gtk_widget_get_pango_context().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2335
diff changeset
6980 int free_fontname = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6981
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6982 if(text)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6983 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6984 if(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6985 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6986 fontname = (char *)g_object_get_data(G_OBJECT(handle), "_dw_fontname");
2336
dd1b2cc95c91 GTK4: Don't unref the PangoContext returned from gtk_widget_get_pango_context().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2335
diff changeset
6987 if(fontname == NULL)
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6988 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6989 fontname = dw_window_get_font(handle);
2336
dd1b2cc95c91 GTK4: Don't unref the PangoContext returned from gtk_widget_get_pango_context().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2335
diff changeset
6990 free_fontname = TRUE;
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6991 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6992 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6993 else if(pixmap)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6994 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6995 if(pixmap->font)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6996 fontname = pixmap->font;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6997 else if(pixmap->handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6998 fontname = (char *)g_object_get_data(G_OBJECT(pixmap->handle), "_dw_fontname");
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6999 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7000
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7001 font = pango_font_description_from_string(fontname ? fontname : "monospace 10");
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7002 if(font)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7003 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7004 PangoContext *context = gtk_widget_get_pango_context(pixmap ? pixmap->handle : handle);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7005
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7006 if(context)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7007 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7008 PangoLayout *layout = pango_layout_new(context);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7009
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7010 if(layout)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7011 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7012 PangoRectangle rect;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7013
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7014 pango_layout_set_font_description(layout, font);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7015 pango_layout_set_text(layout, text, -1);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7016 pango_layout_get_pixel_extents(layout, NULL, &rect);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7017
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7018 if(width)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7019 *width = rect.width;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7020 if(height)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7021 *height = rect.height;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7022
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7023 g_object_unref(layout);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7024 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7025 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7026 pango_font_description_free(font);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7027 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7028 if(free_fontname)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7029 free(fontname);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7030 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7031 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7032 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7033
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7034 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7035 * Creates a pixmap with given parameters.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7036 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7037 * handle: Window handle the pixmap is associated with.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7038 * or zero to enable this pixmap to be written
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7039 * off the screen to reduce flicker
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7040 * width: Width of the pixmap in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7041 * height: Height of the pixmap in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7042 * depth: Color depth of the pixmap.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7043 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7044 * A handle to a pixmap or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7045 */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7046 DW_FUNCTION_DEFINITION(dw_pixmap_new, HPIXMAP, HWND handle, unsigned long width, unsigned long height, DW_UNUSED(int depth))
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7047 DW_FUNCTION_ADD_PARAM4(handle, width, height, depth)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7048 DW_FUNCTION_RETURN(dw_pixmap_new, HPIXMAP)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7049 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, width, unsigned long, height, unsigned long, DW_UNUSED(depth), int)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7050 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7051 HPIXMAP pixmap = 0;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7052
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7053 if((pixmap = calloc(1,sizeof(struct _hpixmap))))
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7054 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7055 pixmap->width = width;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7056 pixmap->height = height;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7057 pixmap->handle = handle;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7058 /* Depth needs to be divided by 3... but for the RGB colorspace...
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7059 * only 8 bits per sample is allowed, so to avoid issues just pass 8 for now.
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7060 */
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7061 pixmap->pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, width, height);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7062 pixmap->image = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7063 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7064 DW_FUNCTION_RETURN_THIS(pixmap);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7065 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7066
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7067 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7068 * Creates a pixmap from a file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7069 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7070 * handle: Window handle the pixmap is associated with.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7071 * filename: Name of the file, omit extention to have
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7072 * DW pick the appropriate file extension.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7073 * (BMP on OS/2 or Windows, XPM on Unix)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7074 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7075 * A handle to a pixmap or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7076 */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7077 DW_FUNCTION_DEFINITION(dw_pixmap_new_from_file, HPIXMAP, HWND handle, const char *filename)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7078 DW_FUNCTION_ADD_PARAM2(handle, filename)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7079 DW_FUNCTION_RETURN(dw_pixmap_new_from_file, HPIXMAP)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7080 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, filename, const char *)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7081 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7082 HPIXMAP pixmap = 0;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7083
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7084 if(filename && *filename && (pixmap = calloc(1,sizeof(struct _hpixmap))))
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7085 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7086 char *file = alloca(strlen(filename) + 6);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7087
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7088 strcpy(file, filename);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7089
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7090 /* check if we can read from this file (it exists and read permission) */
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7091 if(access(file, 04) != 0)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7092 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7093 int i = 0;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7094
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7095 /* Try with various extentions */
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7096 while(_dw_image_exts[i] && !pixmap->pixbuf)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7097 {
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7098 strcpy(file, filename);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7099 strcat(file, _dw_image_exts[i]);
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
7100 if(access(file, 04) == 0)
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7101 pixmap->pixbuf = gdk_pixbuf_new_from_file(file, NULL);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7102 i++;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7103 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7104 }
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7105 else
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7106 pixmap->pixbuf = gdk_pixbuf_new_from_file(file, NULL);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7107
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7108 if(pixmap->pixbuf)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7109 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7110 pixmap->image = cairo_image_surface_create_from_png(file);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7111 pixmap->width = gdk_pixbuf_get_width(pixmap->pixbuf);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7112 pixmap->height = gdk_pixbuf_get_height(pixmap->pixbuf);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7113 pixmap->handle = handle;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7114 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7115 else
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7116 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7117 free(pixmap);
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7118 pixmap = 0;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7119 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7120 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7121 DW_FUNCTION_RETURN_THIS(pixmap);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7122 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7123
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7124 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7125 * Creates a pixmap from data
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7126 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7127 * handle: Window handle the pixmap is associated with.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7128 * data: Source of image data
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7129 * DW pick the appropriate file extension.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7130 * (BMP on OS/2 or Windows, XPM on Unix)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7131 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7132 * A handle to a pixmap or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7133 */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7134 DW_FUNCTION_DEFINITION(dw_pixmap_new_from_data, HPIXMAP, HWND handle, const char *data, int len)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7135 DW_FUNCTION_ADD_PARAM3(handle, data, len)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7136 DW_FUNCTION_RETURN(dw_pixmap_new_from_data, HPIXMAP)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7137 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, data, const char *, len, int)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7138 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7139 HPIXMAP pixmap = 0;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7140
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7141 if(data && len > 0 && (pixmap = calloc(1,sizeof(struct _hpixmap))))
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7142 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7143 int fd, written = -1;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7144 char template[] = "/tmp/dwpixmapXXXXXX";
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7145
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7146 /*
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7147 * A real hack; create a temporary file and write the contents
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7148 * of the data to the file
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7149 */
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7150 if((fd = mkstemp(template)) != -1)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7151 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7152 written = write(fd, data, len);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7153 close(fd);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7154 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7155 /* Bail if we couldn't write full file */
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7156 if(fd != -1 && written == len)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7157 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7158 pixmap->pixbuf = gdk_pixbuf_new_from_file(template, NULL);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7159 pixmap->image = cairo_image_surface_create_from_png(template);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7160 pixmap->width = gdk_pixbuf_get_width(pixmap->pixbuf);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7161 pixmap->height = gdk_pixbuf_get_height(pixmap->pixbuf);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7162 /* remove our temporary file */
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7163 unlink(template);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7164 pixmap->handle = handle;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7165 }
2316
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7166 else
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7167 {
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7168 free(pixmap);
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7169 pixmap = 0;
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7170 }
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7171 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7172 DW_FUNCTION_RETURN_THIS(pixmap);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7173 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7174
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7175 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7176 * Sets the transparent color for a pixmap
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7177 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7178 * pixmap: Handle to a pixmap returned by
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7179 * dw_pixmap_new..
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7180 * color: transparent color
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7181 * Note: This does nothing on GTK+ as transparency
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7182 * is handled automatically
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7183 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7184 void API dw_pixmap_set_transparent_color(HPIXMAP pixmap, unsigned long color)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7185 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7186 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7187
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7188 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7189 * Creates a pixmap from internal resource graphic specified by id.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7190 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7191 * handle: Window handle the pixmap is associated with.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7192 * id: Resource ID associated with requested pixmap.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7193 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7194 * A handle to a pixmap or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7195 */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7196 DW_FUNCTION_DEFINITION(dw_pixmap_grab, HPIXMAP, HWND handle, ULONG id)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7197 DW_FUNCTION_ADD_PARAM2(handle, id)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7198 DW_FUNCTION_RETURN(dw_pixmap_grab, HPIXMAP)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7199 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, id, ULONG)
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7200 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7201 HPIXMAP pixmap = 0;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7202
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7203 if((pixmap = calloc(1,sizeof(struct _hpixmap))))
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7204 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7205 pixmap->pixbuf = gdk_pixbuf_copy(_dw_find_pixbuf((HICN)id, &pixmap->width, &pixmap->height));
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7206 pixmap->handle = handle;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7207 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7208 DW_FUNCTION_RETURN_THIS(pixmap);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7209 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7210
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7211 static void _dw_flush_dirty(gpointer widget, gpointer data)
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7212 {
2340
d797d1cec06b GTK4: Remove some debug code and safety checks in new dw_flush() code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2339
diff changeset
7213 if(widget && GTK_IS_WIDGET(widget))
d797d1cec06b GTK4: Remove some debug code and safety checks in new dw_flush() code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2339
diff changeset
7214 gtk_widget_queue_draw(GTK_WIDGET(widget));
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7215 }
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7216
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7217 /* Call this after drawing to the screen to make sure
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7218 * anything you have drawn is visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7219 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7220 DW_FUNCTION_DEFINITION(dw_flush, void)
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7221 DW_FUNCTION_ADD_PARAM
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7222 DW_FUNCTION_NO_RETURN(dw_flush)
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7223 {
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7224 g_list_foreach(_dw_dirty_list, _dw_flush_dirty, NULL);
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7225 g_list_free(_dw_dirty_list);
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7226 _dw_dirty_list = NULL;
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7227 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7228 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7229
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7230 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7231 * Sets the font used by a specified pixmap.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7232 * Normally the pixmap font is obtained from the associated window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7233 * However this can be used to override that, or for pixmaps with no window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7234 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7235 * pixmap: Handle to a pixmap returned by dw_pixmap_new() or
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7236 * passed to the application via a callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7237 * fontname: Name and size of the font in the form "size.fontname"
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7238 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7239 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7240 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7241 int API dw_pixmap_set_font(HPIXMAP pixmap, const char *fontname)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7242 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7243 if(pixmap)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7244 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7245 char *oldfont = pixmap->font;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7246
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7247 pixmap->font = _dw_convert_font(fontname);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7248
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7249 if(oldfont)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7250 free(oldfont);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7251 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7252 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7253 return DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7254 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7255
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7256 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7257 * Destroys an allocated pixmap.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7258 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7259 * pixmap: Handle to a pixmap returned by
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7260 * dw_pixmap_new..
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7261 */
2316
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7262 DW_FUNCTION_DEFINITION(dw_pixmap_destroy, void, HPIXMAP pixmap)
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7263 DW_FUNCTION_ADD_PARAM1(pixmap)
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7264 DW_FUNCTION_NO_RETURN(dw_pixmap_destroy)
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7265 DW_FUNCTION_RESTORE_PARAM1(pixmap, HPIXMAP)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7266 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7267 g_object_unref(G_OBJECT(pixmap->pixbuf));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7268 cairo_surface_destroy(pixmap->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7269 if(pixmap->font)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7270 free(pixmap->font);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7271 free(pixmap);
2316
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7272 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7273 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7274
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7275 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7276 * Copies from one item to another.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7277 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7278 * dest: Destination window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7279 * destp: Destination pixmap. (choose only one).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7280 * xdest: X coordinate of destination.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7281 * ydest: Y coordinate of destination.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7282 * width: Width of area to copy.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7283 * height: Height of area to copy.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7284 * src: Source window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7285 * srcp: Source pixmap. (choose only one).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7286 * xsrc: X coordinate of source.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7287 * ysrc: Y coordinate of source.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7288 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7289 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)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7290 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7291 dw_pixmap_stretch_bitblt(dest, destp, xdest, ydest, width, height, src, srcp, xsrc, ysrc, -1, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7292 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7293
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7294 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7295 * Copies from one surface to another allowing for stretching.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7296 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7297 * dest: Destination window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7298 * destp: Destination pixmap. (choose only one).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7299 * xdest: X coordinate of destination.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7300 * ydest: Y coordinate of destination.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7301 * width: Width of the target area.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7302 * height: Height of the target area.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7303 * src: Source window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7304 * srcp: Source pixmap. (choose only one).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7305 * xsrc: X coordinate of source.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7306 * ysrc: Y coordinate of source.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7307 * srcwidth: Width of area to copy.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7308 * srcheight: Height of area to copy.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7309 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7310 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7311 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7312 DW_FUNCTION_DEFINITION(dw_pixmap_stretch_bitblt, int, HWND dest, HPIXMAP destp, int xdest, int ydest, int width, int height, HWND src, HPIXMAP srcp, int xsrc, int ysrc, int srcwidth, int srcheight)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7313 DW_FUNCTION_ADD_PARAM12(dest, destp, xdest, ydest, width, height, src, srcp, xsrc, ysrc, srcwidth, srcheight)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7314 DW_FUNCTION_RETURN(dw_pixmap_stretch_bitblt, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7315 DW_FUNCTION_RESTORE_PARAM12(dest, HWND, destp, HPIXMAP, xdest, int, ydest, int, width, int, height, int, src, HWND, srcp, HPIXMAP, xsrc, int, ysrc, int, srcwidth, int, srcheight, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7316
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7317 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7318 cairo_t *cr = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7319 int retval = DW_ERROR_GENERAL;
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
7320 int cached = FALSE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7321
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7322 if(dest)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7323 {
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
7324 cairo_surface_t *surface;
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
7325
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7326 if((cr = _dw_cairo_update(dest, -1, -1)))
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
7327 cached = TRUE;
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
7328 else if((surface = g_object_get_data(G_OBJECT(dest), "_dw_cr_surface")))
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
7329 cr = cairo_create(surface);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7330 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7331 else if(destp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7332 cr = cairo_create(destp->image);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7333
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7334 if(cr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7335 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7336 double xscale = 1, yscale = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7337
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7338 if(srcwidth != -1 && srcheight != -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7339 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7340 xscale = (double)width / (double)srcwidth;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7341 yscale = (double)height / (double)srcheight;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7342 cairo_scale(cr, xscale, yscale);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7343 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7344
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7345 if(src)
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7346 {
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7347 cairo_surface_t *surface = g_object_get_data(G_OBJECT(src), "_dw_cr_surface");
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7348 if(surface)
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
7349 cairo_set_source_surface(cr, surface, (xdest + xsrc) / xscale, (ydest + ysrc) / yscale);
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7350 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7351 else if(srcp)
2362
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
7352 cairo_set_source_surface(cr, srcp->image, (xdest + xsrc) / xscale, (ydest + ysrc) / yscale);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7353
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7354 cairo_rectangle(cr, xdest / xscale, ydest / yscale, width, height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7355 cairo_fill(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7356 /* If we are using a drawing context...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7357 * we don't own the cairo context so don't destroy it.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7358 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7359 if(!cached)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7360 cairo_destroy(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7361 retval = DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7362 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7363 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7364 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7365
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7366 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7367 * Emits a beep.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7368 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7369 * freq: Frequency.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7370 * dur: Duration.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7371 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7372 void API dw_beep(int freq, int dur)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7373 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7374 gdk_display_beep(gdk_display_get_default());
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7375 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7376
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7377 void _dw_strlwr(char *buf)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7378 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7379 int z, len = strlen(buf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7380
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7381 for(z=0;z<len;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7382 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7383 if(buf[z] >= 'A' && buf[z] <= 'Z')
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7384 buf[z] -= 'A' - 'a';
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7385 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7386 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7387
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7388 /* Open a shared library and return a handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7389 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7390 * name: Base name of the shared library.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7391 * handle: Pointer to a module handle,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7392 * will be filled in with the handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7393 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7394 int API dw_module_load(const char *name, HMOD *handle)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7395 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7396 int len;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7397 char *newname;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7398 char errorbuf[1025] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7399
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7400
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7401 if(!handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7402 return -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7403
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7404 if((len = strlen(name)) == 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7405 return -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7406
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7407 /* Lenth + "lib" + ".so" + NULL */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7408 newname = malloc(len + 7);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7409
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7410 if(!newname)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7411 return -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7412
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7413 sprintf(newname, "lib%s.so", name);
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7414 _dw_strlwr(newname);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7415
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7416 *handle = dlopen(newname, RTLD_NOW);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7417 if(*handle == NULL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7418 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7419 strncpy(errorbuf, dlerror(), 1024);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7420 printf("%s\n", errorbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7421 sprintf(newname, "lib%s.so", name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7422 *handle = dlopen(newname, RTLD_NOW);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7423 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7424
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7425 free(newname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7426
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7427 return (NULL == *handle) ? -1 : 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7428 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7429
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7430 /* Queries the address of a symbol within open handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7431 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7432 * handle: Module handle returned by dw_module_load()
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7433 * name: Name of the symbol you want the address of.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7434 * func: A pointer to a function pointer, to obtain
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7435 * the address.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7436 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7437 int API dw_module_symbol(HMOD handle, const char *name, void**func)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7438 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7439 if(!func || !name)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7440 return -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7441
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7442 if(strlen(name) == 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7443 return -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7444
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7445 *func = (void*)dlsym(handle, name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7446 return (NULL == *func);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7447 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7448
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7449 /* Frees the shared library previously opened.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7450 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7451 * handle: Module handle returned by dw_module_load()
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7452 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7453 int API dw_module_close(HMOD handle)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7454 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7455 if(handle)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7456 return dlclose(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7457 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7458 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7459
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7460 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7461 * Returns the handle to an unnamed mutex semaphore.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7462 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7463 HMTX API dw_mutex_new(void)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7464 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7465 HMTX mutex = malloc(sizeof(pthread_mutex_t));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7466
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7467 pthread_mutex_init(mutex, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7468 return mutex;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7469 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7470
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7471 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7472 * Closes a semaphore created by dw_mutex_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7473 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7474 * mutex: The handle to the mutex returned by dw_mutex_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7475 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7476 void API dw_mutex_close(HMTX mutex)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7477 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7478 if(mutex)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7479 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7480 pthread_mutex_destroy(mutex);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7481 free(mutex);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7482 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7483 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7484
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7485 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7486 * Tries to gain access to the semaphore, if it can't it blocks.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7487 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7488 * mutex: The handle to the mutex returned by dw_mutex_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7489 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7490 void API dw_mutex_lock(HMTX mutex)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7491 {
2338
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7492 /* We need to handle locks from the main thread differently...
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7493 * since we can't stop message processing... otherwise we
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7494 * will deadlock... so try to acquire the lock and continue
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7495 * processing messages in between tries.
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7496 */
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7497 if(_dw_thread == pthread_self())
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7498 {
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7499 while(pthread_mutex_trylock(mutex) != 0)
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7500 {
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7501 /* Process any pending events */
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7502 if(g_main_context_pending(NULL))
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7503 {
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7504 do
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7505 {
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7506 g_main_context_iteration(NULL, FALSE);
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7507 }
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7508 while(g_main_context_pending(NULL));
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7509 }
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7510 else
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7511 sched_yield();
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7512 }
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7513 }
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7514 else
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7515 {
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7516 pthread_mutex_lock(mutex);
b9b10bb1f689 GTK4: Port dw_mutex_lock() fix from Mac since the GTK4 thread safety is
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2337
diff changeset
7517 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7518 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7519
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7520 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7521 * Tries to gain access to the semaphore.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7522 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7523 * mutex: The handle to the mutex returned by dw_mutex_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7524 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7525 * DW_ERROR_NONE on success, DW_ERROR_TIMEOUT if it is already locked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7526 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7527 int API dw_mutex_trylock(HMTX mutex)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7528 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7529 if(pthread_mutex_trylock(mutex) == 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7530 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7531 return DW_ERROR_TIMEOUT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7532 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7533
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7534 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7535 * Reliquishes the access to the semaphore.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7536 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7537 * mutex: The handle to the mutex returned by dw_mutex_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7538 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7539 void API dw_mutex_unlock(HMTX mutex)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7540 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7541 pthread_mutex_unlock(mutex);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7542 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7543
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7544 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7545 * Returns the handle to an unnamed event semaphore.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7546 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7547 HEV API dw_event_new(void)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7548 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7549 HEV eve = (HEV)malloc(sizeof(struct _dw_unix_event));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7550
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7551 if(!eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7552 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7553
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7554 /* We need to be careful here, mutexes on Linux are
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7555 * FAST by default but are error checking on other
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7556 * systems such as FreeBSD and OS/2, perhaps others.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7557 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7558 pthread_mutex_init (&(eve->mutex), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7559 pthread_mutex_lock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7560 pthread_cond_init (&(eve->event), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7561
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7562 pthread_mutex_unlock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7563 eve->alive = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7564 eve->posted = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7565
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7566 return eve;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7567 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7568
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7569 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7570 * Resets a semaphore created by dw_event_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7571 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7572 * eve: The handle to the event returned by dw_event_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7573 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7574 int API dw_event_reset (HEV eve)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7575 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7576 if(!eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7577 return DW_ERROR_NON_INIT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7578
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7579 pthread_mutex_lock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7580 pthread_cond_broadcast (&(eve->event));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7581 pthread_cond_init (&(eve->event), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7582 eve->posted = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7583 pthread_mutex_unlock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7584 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7585 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7586
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7587 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7588 * Posts a semaphore created by dw_event_new(). Causing all threads
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7589 * waiting on this event in dw_event_wait to continue.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7590 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7591 * eve: The handle to the event returned by dw_event_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7592 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7593 int API dw_event_post (HEV eve)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7594 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7595 if(!eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7596 return DW_ERROR_NON_INIT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7597
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7598 pthread_mutex_lock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7599 pthread_cond_broadcast (&(eve->event));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7600 eve->posted = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7601 pthread_mutex_unlock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7602 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7603 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7604
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7605 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7606 * Waits on a semaphore created by dw_event_new(), until the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7607 * event gets posted or until the timeout expires.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7608 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7609 * eve: The handle to the event returned by dw_event_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7610 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7611 int API dw_event_wait(HEV eve, unsigned long timeout)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7612 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7613 int rc;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7614
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7615 if(!eve)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7616 return DW_ERROR_NON_INIT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7617
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7618 pthread_mutex_lock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7619
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7620 if(eve->posted)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7621 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7622 pthread_mutex_unlock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7623 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7624 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7625
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7626 if(timeout != -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7627 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7628 struct timeval now;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7629 struct timespec timeo;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7630
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7631 gettimeofday(&now, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7632 timeo.tv_sec = now.tv_sec + (timeout / 1000);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7633 timeo.tv_nsec = now.tv_usec * 1000;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7634 rc = pthread_cond_timedwait(&(eve->event), &(eve->mutex), &timeo);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7635 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7636 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7637 rc = pthread_cond_wait(&(eve->event), &(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7638
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7639 pthread_mutex_unlock (&(eve->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7640 if(!rc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7641 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7642 if(rc == ETIMEDOUT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7643 return DW_ERROR_TIMEOUT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7644 return DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7645 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7646
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7647 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7648 * Closes a semaphore created by dw_event_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7649 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7650 * eve: The handle to the event returned by dw_event_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7651 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7652 int API dw_event_close(HEV *eve)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7653 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7654 if(!eve || !(*eve))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7655 return DW_ERROR_NON_INIT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7656
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7657 pthread_mutex_lock (&((*eve)->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7658 pthread_cond_destroy (&((*eve)->event));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7659 pthread_mutex_unlock (&((*eve)->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7660 pthread_mutex_destroy (&((*eve)->mutex));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7661 free(*eve);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7662 *eve = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7663
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7664 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7665 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7666
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7667 struct _dw_seminfo {
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7668 int fd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7669 int waiting;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7670 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7671
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7672 static void _dw_handle_sem(int *tmpsock)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7673 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7674 fd_set rd;
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7675 struct _dw_seminfo *array = (struct _dw_seminfo *)malloc(sizeof(struct _dw_seminfo));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7676 int listenfd = tmpsock[0];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7677 int bytesread, connectcount = 1, maxfd, z, posted = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7678 char command;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7679 sigset_t mask;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7680
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7681 sigfillset(&mask); /* Mask all allowed signals */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7682 pthread_sigmask(SIG_BLOCK, &mask, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7683
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7684 /* problems */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7685 if(tmpsock[1] == -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7686 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7687 free(array);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7688 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7689 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7690
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7691 array[0].fd = tmpsock[1];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7692 array[0].waiting = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7693
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7694 /* Free the memory allocated in dw_named_event_new. */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7695 free(tmpsock);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7696
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7697 while(1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7698 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7699 FD_ZERO(&rd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7700 FD_SET(listenfd, &rd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7701 int DW_UNUSED(result);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7702
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7703 maxfd = listenfd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7704
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7705 /* Added any connections to the named event semaphore */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7706 for(z=0;z<connectcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7707 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7708 if(array[z].fd > maxfd)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7709 maxfd = array[z].fd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7710
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7711 FD_SET(array[z].fd, &rd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7712 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7713
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7714 if(select(maxfd+1, &rd, NULL, NULL, NULL) == -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7715 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7716 free(array);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7717 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7718 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7719
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7720 if(FD_ISSET(listenfd, &rd))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7721 {
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7722 struct _dw_seminfo *newarray;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7723 int newfd = accept(listenfd, 0, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7724
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7725 if(newfd > -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7726 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7727 /* Add new connections to the set */
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7728 newarray = (struct _dw_seminfo *)malloc(sizeof(struct _dw_seminfo)*(connectcount+1));
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7729 memcpy(newarray, array, sizeof(struct _dw_seminfo)*(connectcount));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7730
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7731 newarray[connectcount].fd = newfd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7732 newarray[connectcount].waiting = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7733
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7734 connectcount++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7735
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7736 /* Replace old array with new one */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7737 free(array);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7738 array = newarray;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7739 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7740 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7741
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7742 /* Handle any events posted to the semaphore */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7743 for(z=0;z<connectcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7744 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7745 if(FD_ISSET(array[z].fd, &rd))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7746 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7747 if((bytesread = read(array[z].fd, &command, 1)) < 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7748 {
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7749 struct _dw_seminfo *newarray;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7750
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7751 /* Remove this connection from the set */
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7752 newarray = (struct _dw_seminfo *)malloc(sizeof(struct _dw_seminfo)*(connectcount-1));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7753 if(!z)
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7754 memcpy(newarray, &array[1], sizeof(struct _dw_seminfo)*(connectcount-1));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7755 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7756 {
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7757 memcpy(newarray, array, sizeof(struct _dw_seminfo)*z);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7758 if(z!=(connectcount-1))
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7759 memcpy(&newarray[z], &array[z+1], sizeof(struct _dw_seminfo)*(z-connectcount-1));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7760 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7761 connectcount--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7762
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7763 /* Replace old array with new one */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7764 free(array);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7765 array = newarray;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7766 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7767 else if(bytesread == 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7768 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7769 switch(command)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7770 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7771 case 0:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7772 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7773 /* Reset */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7774 posted = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7775 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7776 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7777 case 1:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7778 /* Post */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7779 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7780 int s;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7781 char tmp = (char)0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7782
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7783 posted = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7784
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7785 for(s=0;s<connectcount;s++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7786 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7787 /* The semaphore has been posted so
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7788 * we tell all the waiting threads to
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7789 * continue.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7790 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7791 if(array[s].waiting)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7792 result = write(array[s].fd, &tmp, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7793 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7794 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7795 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7796 case 2:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7797 /* Wait */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7798 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7799 char tmp = (char)0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7800
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7801 array[z].waiting = 1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7802
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7803 /* If we are posted exit immeditately */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7804 if(posted)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7805 result = write(array[z].fd, &tmp, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7806 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7807 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7808 case 3:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7809 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7810 /* Done Waiting */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7811 array[z].waiting = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7812 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7813 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7814 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7815 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7816 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7817 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7818 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7819 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7820
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7821 /* Using domain sockets on unix for IPC */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7822 /* Create a named event semaphore which can be
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7823 * opened from other processes.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7824 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7825 * eve: Pointer to an event handle to receive handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7826 * name: Name given to semaphore which can be opened
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7827 * by other processes.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7828 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7829 HEV API dw_named_event_new(const char *name)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7830 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7831 struct sockaddr_un un;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7832 int ev, *tmpsock = (int *)malloc(sizeof(int)*2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7833 DWTID dwthread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7834
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7835 if(!tmpsock)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7836 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7837
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7838 tmpsock[0] = socket(AF_UNIX, SOCK_STREAM, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7839 ev = socket(AF_UNIX, SOCK_STREAM, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7840 memset(&un, 0, sizeof(un));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7841 un.sun_family=AF_UNIX;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7842 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7843 strcpy(un.sun_path, "/tmp/.dw/");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7844 strcat(un.sun_path, name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7845
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7846 /* just to be safe, this should be changed
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7847 * to support multiple instances.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7848 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7849 remove(un.sun_path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7850
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7851 bind(tmpsock[0], (struct sockaddr *)&un, sizeof(un));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7852 listen(tmpsock[0], 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7853 connect(ev, (struct sockaddr *)&un, sizeof(un));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7854 tmpsock[1] = accept(tmpsock[0], 0, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7855
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7856 if(tmpsock[0] < 0 || tmpsock[1] < 0 || ev < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7857 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7858 if(tmpsock[0] > -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7859 close(tmpsock[0]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7860 if(tmpsock[1] > -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7861 close(tmpsock[1]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7862 if(ev > -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7863 close(ev);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7864 free(tmpsock);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7865 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7866 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7867
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7868 /* Create a thread to handle this event semaphore */
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7869 pthread_create(&dwthread, NULL, (void *)_dw_handle_sem, (void *)tmpsock);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7870 return GINT_TO_POINTER(ev);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7871 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7872
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7873 /* Open an already existing named event semaphore.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7874 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7875 * eve: Pointer to an event handle to receive handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7876 * name: Name given to semaphore which can be opened
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7877 * by other processes.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7878 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7879 HEV API dw_named_event_get(const char *name)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7880 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7881 struct sockaddr_un un;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7882 int ev = socket(AF_UNIX, SOCK_STREAM, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7883 if(ev < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7884 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7885
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7886 un.sun_family=AF_UNIX;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7887 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7888 strcpy(un.sun_path, "/tmp/.dw/");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7889 strcat(un.sun_path, name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7890 connect(ev, (struct sockaddr *)&un, sizeof(un));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7891 return GINT_TO_POINTER(ev);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7892 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7893
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7894 /* Resets the event semaphore so threads who call wait
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7895 * on this semaphore will block.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7896 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7897 * eve: Handle to the semaphore obtained by
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7898 * an open or create call.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7899 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7900 int API dw_named_event_reset(HEV eve)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7901 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7902 /* signal reset */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7903 char tmp = (char)0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7904
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7905 if(GPOINTER_TO_INT(eve) < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7906 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7907
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7908 if(write(GPOINTER_TO_INT(eve), &tmp, 1) == 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7909 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7910 return DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7911 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7912
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7913 /* Sets the posted state of an event semaphore, any threads
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7914 * waiting on the semaphore will no longer block.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7915 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7916 * eve: Handle to the semaphore obtained by
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7917 * an open or create call.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7918 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7919 int API dw_named_event_post(HEV eve)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7920 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7921
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7922 /* signal post */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7923 char tmp = (char)1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7924
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7925 if(GPOINTER_TO_INT(eve) < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7926 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7927
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7928 if(write(GPOINTER_TO_INT(eve), &tmp, 1) == 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7929 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7930 return DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7931 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7932
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7933 /* Waits on the specified semaphore until it becomes
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7934 * posted, or returns immediately if it already is posted.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7935 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7936 * eve: Handle to the semaphore obtained by
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7937 * an open or create call.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7938 * timeout: Number of milliseconds before timing out
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7939 * or -1 if indefinite.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7940 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7941 int API dw_named_event_wait(HEV eve, unsigned long timeout)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7942 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7943 fd_set rd;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7944 struct timeval tv, *useme = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7945 int retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7946 char tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7947
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7948 if(GPOINTER_TO_INT(eve) < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7949 return DW_ERROR_NON_INIT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7950
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7951 /* Set the timout or infinite */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7952 if(timeout != -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7953 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7954 tv.tv_sec = timeout / 1000;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7955 tv.tv_usec = timeout % 1000;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7956
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7957 useme = &tv;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7958 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7959
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7960 FD_ZERO(&rd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7961 FD_SET(GPOINTER_TO_INT(eve), &rd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7962
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7963 /* Signal wait */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7964 tmp = (char)2;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7965 retval = write(GPOINTER_TO_INT(eve), &tmp, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7966
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7967 if(retval == 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7968 retval = select(GPOINTER_TO_INT(eve)+1, &rd, NULL, NULL, useme);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7969
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7970 /* Signal done waiting. */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7971 tmp = (char)3;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7972 if(retval == 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7973 retval = write(GPOINTER_TO_INT(eve), &tmp, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7974
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7975 if(retval == 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7976 return DW_ERROR_TIMEOUT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7977 else if(retval == -1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7978 return DW_ERROR_INTERRUPT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7979
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7980 /* Clear the entry from the pipe so
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7981 * we don't loop endlessly. :)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7982 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7983 if(read(GPOINTER_TO_INT(eve), &tmp, 1) == 1)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7984 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7985 return DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7986 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7987
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7988 /* Release this semaphore, if there are no more open
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7989 * handles on this semaphore the semaphore will be destroyed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7990 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7991 * eve: Handle to the semaphore obtained by
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7992 * an open or create call.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7993 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
7994 int API dw_named_event_close(HEV eve)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7995 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7996 /* Finally close the domain socket,
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7997 * cleanup will continue in _dw_handle_sem.
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7998 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7999 close(GPOINTER_TO_INT(eve));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8000 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8001 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8002
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8003 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8004 * Generally an internal function called from a newly created
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8005 * thread to setup the Dynamic Windows environment for the thread.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8006 * However it is exported so language bindings can call it when
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8007 * they create threads that require access to Dynamic Windows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8008 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8009 void API _dw_init_thread(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8010 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8011 GdkRGBA *foreground = malloc(sizeof(GdkRGBA));
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8012 HEV event = dw_event_new();
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8013
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8014 foreground->alpha = foreground->red = foreground->green = foreground->blue = 0.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8015 pthread_setspecific(_dw_fg_color_key, foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8016 pthread_setspecific(_dw_bg_color_key, NULL);
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8017 pthread_setspecific(_dw_event_key, event);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8018 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8019
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8020 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8021 * Generally an internal function called from a terminating
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8022 * thread to cleanup the Dynamic Windows environment for the thread.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8023 * However it is exported so language bindings can call it when
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8024 * they exit threads that require access to Dynamic Windows.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8025 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8026 void API _dw_deinit_thread(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8027 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8028 GdkRGBA *foreground, *background;
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8029 HEV event;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8030
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8031 if((foreground = pthread_getspecific(_dw_fg_color_key)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8032 free(foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8033 if((background = pthread_getspecific(_dw_bg_color_key)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8034 free(background);
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8035 if((event = pthread_getspecific(_dw_event_key)))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8036 dw_event_close(&event);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8037 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8038
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8039 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8040 * Setup thread independent color sets.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8041 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8042 void _dwthreadstart(void *data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8043 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8044 void (*threadfunc)(void *) = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8045 void **tmp = (void **)data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8046
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8047 threadfunc = (void (*)(void *))tmp[0];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8048
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8049 /* Initialize colors */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8050 _dw_init_thread();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8051
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8052 threadfunc(tmp[1]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8053 free(tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8054
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8055 /* Free colors */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8056 _dw_deinit_thread();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8057 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8058
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8059 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8060 * Allocates a shared memory region with a name.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8061 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8062 * handle: A pointer to receive a SHM identifier.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8063 * dest: A pointer to a pointer to receive the memory address.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8064 * size: Size in bytes of the shared memory region to allocate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8065 * name: A string pointer to a unique memory name.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8066 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8067 HSHM API dw_named_memory_new(void **dest, int size, const char *name)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8068 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8069 char namebuf[1025];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8070 struct _dw_unix_shm *handle = malloc(sizeof(struct _dw_unix_shm));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8071
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8072 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8073 snprintf(namebuf, 1024, "/tmp/.dw/%s", name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8074
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8075 if((handle->fd = open(namebuf, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR)) < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8076 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8077 free(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8078 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8079 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8080
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8081 if(ftruncate(handle->fd, size))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8082 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8083 close(handle->fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8084 free(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8085 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8086 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8087
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8088 /* attach the shared memory segment to our process's address space. */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8089 *dest = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8090
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8091 if(*dest == MAP_FAILED)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8092 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8093 close(handle->fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8094 *dest = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8095 free(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8096 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8097 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8098
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8099 handle->size = size;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8100 handle->sid = getsid(0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8101 handle->path = strdup(namebuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8102
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8103 return handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8104 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8105
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8106 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8107 * Aquires shared memory region with a name.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8108 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8109 * dest: A pointer to a pointer to receive the memory address.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8110 * size: Size in bytes of the shared memory region to requested.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8111 * name: A string pointer to a unique memory name.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8112 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8113 HSHM API dw_named_memory_get(void **dest, int size, const char *name)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8114 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8115 char namebuf[1025];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8116 struct _dw_unix_shm *handle = malloc(sizeof(struct _dw_unix_shm));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8117
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8118 mkdir("/tmp/.dw", S_IWGRP|S_IWOTH);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8119 snprintf(namebuf, 1024, "/tmp/.dw/%s", name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8120
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8121 if((handle->fd = open(namebuf, O_RDWR)) < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8122 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8123 free(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8124 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8125 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8126
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8127 /* attach the shared memory segment to our process's address space. */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8128 *dest = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8129
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8130 if(*dest == MAP_FAILED)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8131 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8132 close(handle->fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8133 *dest = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8134 free(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8135 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8136 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8137
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8138 handle->size = size;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8139 handle->sid = -1;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8140 handle->path = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8141
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8142 return handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8143 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8144
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8145 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8146 * Frees a shared memory region previously allocated.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8147 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8148 * handle: Handle obtained from DB_named_memory_allocate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8149 * ptr: The memory address aquired with DB_named_memory_allocate.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8150 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8151 int API dw_named_memory_free(HSHM handle, void *ptr)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8152 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8153 struct _dw_unix_shm *h = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8154 int rc = munmap(ptr, h->size);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8155
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8156 close(h->fd);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8157 if(h->path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8158 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8159 /* Only remove the actual file if we are the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8160 * creator of the file.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8161 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8162 if(h->sid != -1 && h->sid == getsid(0))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8163 remove(h->path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8164 free(h->path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8165 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8166 return rc;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8167 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8168 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8169 * Creates a new thread with a starting point of func.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8170 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8171 * func: Function which will be run in the new thread.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8172 * data: Parameter(s) passed to the function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8173 * stack: Stack size of new thread (OS/2 and Windows only).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8174 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8175 DWTID API dw_thread_new(void *func, void *data, int stack)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8176 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8177 DWTID gtkthread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8178 void **tmp = malloc(sizeof(void *) * 2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8179 int rc;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8180
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8181 tmp[0] = func;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8182 tmp[1] = data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8183
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8184 rc = pthread_create(&gtkthread, NULL, (void *)_dwthreadstart, (void *)tmp);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8185 if ( rc == 0 )
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8186 return gtkthread;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8187 return (DWTID)DW_ERROR_UNKNOWN;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8188 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8189
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8190 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8191 * Ends execution of current thread immediately.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8192 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8193 void API dw_thread_end(void)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8194 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8195 pthread_exit(NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8196 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8197
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8198 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8199 * Returns the current thread's ID.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8200 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8201 DWTID API dw_thread_id(void)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8202 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8203 return (DWTID)pthread_self();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8204 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8205
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8206 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8207 * Cleanly terminates a DW session, should be signal handler safe.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8208 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8209 void API dw_shutdown(void)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8210 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
8211 g_main_loop_unref(_DWMainLoop);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8212 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8213
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8214 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8215 * Cleanly terminates a DW session, should be signal handler safe.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8216 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8217 * exitcode: Exit code reported to the operating system.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8218 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8219 void API dw_exit(int exitcode)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8220 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
8221 dw_shutdown();
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8222 exit(exitcode);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8223 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8224
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8225 /* Internal function to get the recommended size of scrolled items */
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
8226 void _dw_get_scrolled_size(GtkWidget *item, gint *thiswidth, gint *thisheight)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8227 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8228 GtkWidget *widget = g_object_get_data(G_OBJECT(item), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8229
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8230 *thisheight = *thiswidth = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8231
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8232 if(widget)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8233 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8234 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8235 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8236 /* Set to half for tree */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8237 *thiswidth = (int)((_DW_SCROLLED_MAX_WIDTH + _DW_SCROLLED_MIN_WIDTH)/2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8238 *thisheight = (int)((_DW_SCROLLED_MAX_HEIGHT + _DW_SCROLLED_MIN_HEIGHT)/2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8239 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8240 else if(GTK_IS_TEXT_VIEW(widget))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8241 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8242 unsigned long bytes;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8243 int height, width;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8244 char *buf, *ptr;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8245 int wrap = (gtk_text_view_get_wrap_mode(GTK_TEXT_VIEW(widget)) == GTK_WRAP_WORD);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8246 static char testtext[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8247 int hscrolled = FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8248
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8249 *thiswidth = *thisheight = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8250
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8251 dw_mle_get_size(item, &bytes, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8252
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8253 ptr = buf = alloca(bytes + 2);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8254 dw_mle_export(item, buf, 0, (int)bytes);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8255 buf[bytes] = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8256 strcat(buf, "\r");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8257
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8258 /* MLE */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8259 while((ptr = strstr(buf, "\r")))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8260 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8261 ptr[0] = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8262 width = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8263 if(strlen(buf))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8264 dw_font_text_extents_get(item, NULL, buf, &width, &height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8265 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8266 dw_font_text_extents_get(item, NULL, testtext, NULL, &height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8267
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8268 if(wrap && width > _DW_SCROLLED_MAX_WIDTH)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8269 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8270 *thiswidth = _DW_SCROLLED_MAX_WIDTH;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8271 *thisheight += height * (width / _DW_SCROLLED_MAX_WIDTH);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8272 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8273 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8274 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8275 if(width > *thiswidth)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8276 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8277 if(width > _DW_SCROLLED_MAX_WIDTH)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8278 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8279 *thiswidth = _DW_SCROLLED_MAX_WIDTH;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8280 hscrolled = TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8281 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8282 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8283 *thiswidth = width;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8284 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8285 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8286 *thisheight += height;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8287 if(ptr[1] == '\n')
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8288 buf = &ptr[2];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8289 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8290 buf = &ptr[1];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8291 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8292 if(hscrolled)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8293 *thisheight += 10;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8294 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8295 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8296 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8297 gtk_widget_measure(GTK_WIDGET(widget), GTK_ORIENTATION_HORIZONTAL, -1, thiswidth, NULL, NULL, NULL);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8298 gtk_widget_measure(GTK_WIDGET(widget), GTK_ORIENTATION_VERTICAL, -1, thisheight, NULL, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8299
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8300 *thisheight += 20;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8301 *thiswidth += 20;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8302 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8303 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8304 if(*thiswidth < _DW_SCROLLED_MIN_WIDTH)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8305 *thiswidth = _DW_SCROLLED_MIN_WIDTH;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8306 if(*thiswidth > _DW_SCROLLED_MAX_WIDTH)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8307 *thiswidth = _DW_SCROLLED_MAX_WIDTH;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8308 if(*thisheight < _DW_SCROLLED_MIN_HEIGHT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8309 *thisheight = _DW_SCROLLED_MIN_HEIGHT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8310 if(*thisheight > _DW_SCROLLED_MAX_HEIGHT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8311 *thisheight = _DW_SCROLLED_MAX_HEIGHT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8312 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8313
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8314 /* Internal box packing function called by the other 3 functions */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8315 void _dw_box_pack(HWND box, HWND item, int index, int width, int height, int hsize, int vsize, int pad, char *funcname)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8316 {
2366
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
8317 GtkWidget *tmp, *tmpitem;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8318
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8319 if(!box)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8320 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8321
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8322 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8323 * If you try and pack an item into itself VERY bad things can happen; like at least an
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8324 * infinite loop on GTK! Lets be safe!
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8325 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8326 if(box == item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8327 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8328 dw_messagebox(funcname, DW_MB_OK|DW_MB_ERROR, "Danger! Danger! Will Robinson; box and item are the same!");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8329 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8330 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8331
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8332 /* If this is a special box, like: Window, Groupbox, Scrollbox...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8333 * get the internal box handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8334 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8335 if((tmp = g_object_get_data(G_OBJECT(box), "_dw_boxhandle")))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8336 box = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8337
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8338 /* Can't pack nothing with GTK, so create an empty label */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8339 if(!item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8340 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8341 item = gtk_label_new("");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8342 g_object_set_data(G_OBJECT(item), "_dw_padding", GINT_TO_POINTER(1));
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8343 gtk_widget_show(item);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8344 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8345
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8346 /* Check if the item to be packed is a special box */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8347 tmpitem = (GtkWidget *)g_object_get_data(G_OBJECT(item), "_dw_boxhandle");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8348
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8349 /* Make sure our target box is valid */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8350 if(GTK_IS_GRID(box))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8351 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8352 int boxcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8353 int boxtype = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxtype"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8354
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8355 /* If the item being packed is a box, then we use it's padding
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8356 * instead of the padding specified on the pack line, this is
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8357 * due to a bug in the OS/2 and Win32 renderer and a limitation
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8358 * of the GtkTable class.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8359 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8360 if(GTK_IS_GRID(item) || (tmpitem && GTK_IS_GRID(tmpitem)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8361 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8362 /* NOTE: I left in the ability to pack boxes with a size,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8363 * this eliminates that by forcing the size to 0.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8364 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8365 height = width = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8366 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8367
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8368 /* Do some sanity bounds checking */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8369 if(index < 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8370 index = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8371 if(index > boxcount)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8372 index = boxcount;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8373
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8374 g_object_set_data(G_OBJECT(item), "_dw_table", box);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8375 /* Set the expand attribute on the widgets now instead of the container */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8376 gtk_widget_set_vexpand(item, vsize);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8377 gtk_widget_set_hexpand(item, hsize);
2367
0f340646a2ca GTK4: GtkPictures should be centered, not filled... don't clobber the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2366
diff changeset
8378 /* Don't clobber the center alignment on pictures */
0f340646a2ca GTK4: GtkPictures should be centered, not filled... don't clobber the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2366
diff changeset
8379 if(!GTK_IS_PICTURE(item))
0f340646a2ca GTK4: GtkPictures should be centered, not filled... don't clobber the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2366
diff changeset
8380 {
0f340646a2ca GTK4: GtkPictures should be centered, not filled... don't clobber the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2366
diff changeset
8381 gtk_widget_set_valign(item, vsize ? GTK_ALIGN_FILL : GTK_ALIGN_START);
0f340646a2ca GTK4: GtkPictures should be centered, not filled... don't clobber the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2366
diff changeset
8382 gtk_widget_set_halign(item, hsize ? GTK_ALIGN_FILL : GTK_ALIGN_START);
0f340646a2ca GTK4: GtkPictures should be centered, not filled... don't clobber the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2366
diff changeset
8383 }
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
8384 /* Set pad for each margin direction on the widget */
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
8385 _dw_widget_set_pad(item, pad);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8386 /* Add to the grid using insert...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8387 * rows for vertical boxes and columns for horizontal.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8388 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8389 if(boxtype == DW_VERT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8390 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8391 gtk_grid_insert_row(GTK_GRID(box), index);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8392 gtk_grid_attach(GTK_GRID(box), item, 0, index, 1, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8393 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8394 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8395 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8396 gtk_grid_insert_column(GTK_GRID(box), index);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8397 gtk_grid_attach(GTK_GRID(box), item, index, 0, 1, 1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8398 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8399 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount + 1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8400 /* Special case for scrolled windows */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8401 if(GTK_IS_SCROLLED_WINDOW(item))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8402 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8403 gint scrolledwidth = 0, scrolledheight = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8404
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8405 /* Pre-run the calculation code for MLE/Container/Tree if needed */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8406 if((width < 1 && !hsize) || (height < 1 && !vsize))
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
8407 _dw_get_scrolled_size(item, &scrolledwidth, &scrolledheight);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8408
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8409 if(width > 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8410 gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(item), width);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8411 else if(!hsize)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8412 gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(item), scrolledwidth);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8413 if(height > 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8414 gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(item), height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8415 else if(!vsize)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8416 gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(item), scrolledheight);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8417 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8418 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8419 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8420 /* Set the requested size of the widget */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8421 if(width == -1 && (GTK_IS_COMBO_BOX(item) || GTK_IS_ENTRY(item)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8422 gtk_widget_set_size_request(item, 150, height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8423 else if(width == -1 && GTK_IS_SPIN_BUTTON(item))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8424 gtk_widget_set_size_request(item, 50, height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8425 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8426 gtk_widget_set_size_request(item, width, height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8427 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8428 if(GTK_IS_TOGGLE_BUTTON(item))
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8429 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8430 GtkToggleButton *groupstart = (GtkToggleButton *)g_object_get_data(G_OBJECT(box), "_dw_group");
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8431
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8432 if(groupstart)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8433 gtk_toggle_button_set_group(GTK_TOGGLE_BUTTON(item), groupstart);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8434 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8435 g_object_set_data(G_OBJECT(box), "_dw_group", (gpointer)item);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8436 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8437 /* If we previously incremented the reference count... drop it now that it is packed */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8438 if(g_object_get_data(G_OBJECT(item), "_dw_refed"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8439 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8440 g_object_unref(G_OBJECT(item));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8441 g_object_set_data(G_OBJECT(item), "_dw_refed", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8442 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8443 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8444 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8445
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8446 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8447 * Remove windows (widgets) from the box they are packed into.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8448 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8449 * handle: Window handle of the packed item to be removed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8450 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8451 * DW_ERROR_NONE on success and DW_ERROR_GENERAL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8452 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8453 DW_FUNCTION_DEFINITION(dw_box_unpack, int, HWND handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8454 DW_FUNCTION_ADD_PARAM1(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8455 DW_FUNCTION_RETURN(dw_box_unpack, int)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8456 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8457 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8458 int retcode = DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8459
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8460 if(GTK_IS_WIDGET(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8461 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8462 GtkWidget *box, *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8463
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8464 /* Check if we are removing a widget from a box */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8465 if((box = gtk_widget_get_parent(handle2)) && GTK_IS_GRID(box))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8466 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8467 /* Get the number of items in the box... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8468 int boxcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8469 int boxtype = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxtype"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8470
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8471 if(boxcount > 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8472 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8473 /* Decrease the count by 1 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8474 boxcount--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8475 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8476 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8477 /* If we haven't incremented the reference count... raise it before removal */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8478 if(!g_object_get_data(G_OBJECT(handle2), "_dw_refed"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8479 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8480 g_object_ref(G_OBJECT(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8481 g_object_set_data(G_OBJECT(handle2), "_dw_refed", GINT_TO_POINTER(1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8482 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8483 /* Remove the widget from the box */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8484 /* Figure out where in the grid this widget is and remove that row/column */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8485 if(boxtype == DW_VERT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8486 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8487 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8488
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8489 for(z=0;z<boxcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8490 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8491 if(gtk_grid_get_child_at(GTK_GRID(box), 0, z) == handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8492 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8493 gtk_grid_remove_row(GTK_GRID(box), z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8494 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8495 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8496 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8497 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8498 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8499 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8500 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8501
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8502 for(z=0;z<boxcount;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8503 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8504 if(gtk_grid_get_child_at(GTK_GRID(box), z, 0) == handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8505 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8506 gtk_grid_remove_column(GTK_GRID(box), z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8507 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8508 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8509 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8510 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8511 retcode = DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8512 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8513 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8514 DW_FUNCTION_RETURN_THIS(retcode);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8515 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8516
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8517 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8518 * Remove windows (widgets) from a box at an arbitrary location.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8519 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8520 * box: Window handle of the box to be removed from.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8521 * index: 0 based index of packed items.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8522 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8523 * Handle to the removed item on success, 0 on failure or padding.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8524 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8525 DW_FUNCTION_DEFINITION(dw_box_unpack_at_index, HWND, HWND box, int index)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8526 DW_FUNCTION_ADD_PARAM2(box, index)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8527 DW_FUNCTION_RETURN(dw_box_unpack_at_index, HWND)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8528 DW_FUNCTION_RESTORE_PARAM2(box, HWND, index, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8529 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8530 HWND retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8531
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8532 /* Check if we are removing a widget from a box */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8533 if(GTK_IS_GRID(box))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8534 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8535 /* Get the number of items in the box... */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8536 int boxcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxcount"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8537 int boxtype = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(box), "_dw_boxtype"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8538 GtkWidget *item = (boxtype == DW_VERT) ? gtk_grid_get_child_at(GTK_GRID(box), 0, index) : gtk_grid_get_child_at(GTK_GRID(box), index, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8539
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8540 if(boxcount > 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8541 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8542 /* Decrease the count by 1 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8543 boxcount--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8544 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8545 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8546 /* If we haven't incremented the reference count... raise it before removal */
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
8547 if(item && g_object_get_data(G_OBJECT(item), "_dw_padding") && GTK_IS_WIDGET(item))
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
8548 g_object_unref(G_OBJECT(item));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8549 else if(item)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8550 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8551 if(!g_object_get_data(G_OBJECT(item), "_dw_refed"))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8552 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8553 g_object_ref(G_OBJECT(item));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8554 g_object_set_data(G_OBJECT(item), "_dw_refed", GINT_TO_POINTER(1));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8555 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8556 /* Remove the widget from the box */
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8557 gtk_grid_remove(GTK_GRID(box), item);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8558 if(boxtype == DW_VERT)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8559 gtk_grid_remove_row(GTK_GRID(box), index);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8560 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8561 gtk_grid_remove_column(GTK_GRID(box), index);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8562 retval = item;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8563 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8564 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8565 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8566 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8567
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8568 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8569 * Pack windows (widgets) into a box at an arbitrary location.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8570 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8571 * box: Window handle of the box to be packed into.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8572 * item: Window handle of the item to pack.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8573 * index: 0 based index of packed items.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8574 * width: Width in pixels of the item or -1 to be self determined.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8575 * height: Height in pixels of the item or -1 to be self determined.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8576 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8577 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8578 * pad: Number of pixels of padding around the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8579 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8580 DW_FUNCTION_DEFINITION(dw_box_pack_at_index, void, HWND box, HWND item, int index, int width, int height, int hsize, int vsize, int pad)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8581 DW_FUNCTION_ADD_PARAM8(box, item, index, width, height, hsize, vsize, pad)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8582 DW_FUNCTION_NO_RETURN(dw_box_pack_at_index)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8583 DW_FUNCTION_RESTORE_PARAM8(box, HWND, item, HWND, index, int, width, int, height, int, hsize, int, vsize, int, pad, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8584 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8585 _dw_box_pack(box, item, index, width, height, hsize, vsize, pad, "dw_box_pack_at_index()");
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8586 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8587 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8588
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8589 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8590 * Pack windows (widgets) into a box from the start (or top).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8591 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8592 * box: Window handle of the box to be packed into.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8593 * item: Window handle of the item to pack.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8594 * width: Width in pixels of the item or -1 to be self determined.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8595 * height: Height in pixels of the item or -1 to be self determined.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8596 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8597 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8598 * pad: Number of pixels of padding around the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8599 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8600 DW_FUNCTION_DEFINITION(dw_box_pack_start, void, HWND box, HWND item, int width, int height, int hsize, int vsize, int pad)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8601 DW_FUNCTION_ADD_PARAM7(box, item, width, height, hsize, vsize, pad)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8602 DW_FUNCTION_NO_RETURN(dw_box_pack_start)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8603 DW_FUNCTION_RESTORE_PARAM7(box, HWND, item, HWND, width, int, height, int, hsize, int, vsize, int, pad, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8604 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8605 /* 65536 is the table limit on GTK...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8606 * seems like a high enough value we will never hit it here either.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8607 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8608 _dw_box_pack(box, item, 65536, width, height, hsize, vsize, pad, "dw_box_pack_start()");
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8609 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8610 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8611
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8612 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8613 * Pack windows (widgets) into a box from the end (or bottom).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8614 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8615 * box: Window handle of the box to be packed into.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8616 * item: Window handle of the item to pack.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8617 * width: Width in pixels of the item or -1 to be self determined.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8618 * height: Height in pixels of the item or -1 to be self determined.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8619 * hsize: TRUE if the window (widget) should expand horizontally to fill space given.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8620 * vsize: TRUE if the window (widget) should expand vertically to fill space given.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8621 * pad: Number of pixels of padding around the item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8622 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8623 DW_FUNCTION_DEFINITION(dw_box_pack_end, void, HWND box, HWND item, int width, int height, int hsize, int vsize, int pad)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8624 DW_FUNCTION_ADD_PARAM7(box, item, width, height, hsize, vsize, pad)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8625 DW_FUNCTION_NO_RETURN(dw_box_pack_end)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8626 DW_FUNCTION_RESTORE_PARAM7(box, HWND, item, HWND, width, int, height, int, hsize, int, vsize, int, pad, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8627 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8628 _dw_box_pack(box, item, 0, width, height, hsize, vsize, pad, "dw_box_pack_end()");
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8629 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8630 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8631
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8632 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8633 * Sets the size of a given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8634 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8635 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8636 * width: New width in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8637 * height: New height in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8638 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8639 DW_FUNCTION_DEFINITION(dw_window_set_size, void, HWND handle, ULONG width, ULONG height)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8640 DW_FUNCTION_ADD_PARAM3(handle, width, height)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8641 DW_FUNCTION_NO_RETURN(dw_window_set_size)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8642 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, width, ULONG, height, ULONG)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8643 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8644 if(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8645 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8646 if(GTK_IS_WINDOW(handle))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8647 gtk_window_set_default_size(GTK_WINDOW(handle), width, height);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8648 else if(GTK_IS_WIDGET(handle))
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8649 gtk_widget_set_size_request(GTK_WIDGET(handle), width, height);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8650 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8651 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8652 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8653
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8654 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8655 * Gets the size the system thinks the widget should be.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8656 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8657 * handle: Window handle of the item to be back.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8658 * width: Width in pixels of the item or NULL if not needed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8659 * height: Height in pixels of the item or NULL if not needed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8660 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8661 DW_FUNCTION_DEFINITION(dw_window_get_preferred_size, void, HWND handle, int *width, int *height)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8662 DW_FUNCTION_ADD_PARAM3(handle, width, height)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8663 DW_FUNCTION_NO_RETURN(dw_window_get_preferred_size)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8664 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, width, int *, height, int *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8665 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8666 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8667 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8668 gint scrolledwidth, scrolledheight;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8669
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
8670 _dw_get_scrolled_size(handle, &scrolledwidth, &scrolledheight);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8671
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8672 if(width)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8673 *width = scrolledwidth;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8674 if(height)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8675 *height = scrolledheight;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8676 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8677 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8678 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8679 if(width)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8680 gtk_widget_measure(GTK_WIDGET(handle), GTK_ORIENTATION_HORIZONTAL, -1, width, NULL, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8681 if(height)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8682 gtk_widget_measure(GTK_WIDGET(handle), GTK_ORIENTATION_VERTICAL, -1, height, NULL, NULL, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8683 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8684 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8685 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8686
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8687 /* Internal version to simplify the code with multiple versions of GTK */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8688 int _dw_get_screen_width(void)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8689 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8690 GdkDisplay *display = gdk_display_get_default();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8691
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8692 if(display)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8693 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8694 GListModel *monitors = gdk_display_get_monitors(display);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8695 GdkMonitor *monitor = GDK_MONITOR(g_list_model_get_object(monitors, 0));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8696
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8697 if(monitor)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8698 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8699 GdkRectangle rc = { 0, 0, 0 ,0 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8700 gdk_monitor_get_geometry(monitor, &rc);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8701 return rc.width;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8702 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8703 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8704 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8705 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8706
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8707 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8708 * Returns the width of the screen.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8709 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8710 DW_FUNCTION_DEFINITION(dw_screen_width, int)
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8711 DW_FUNCTION_ADD_PARAM
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8712 DW_FUNCTION_RETURN(dw_screen_width, int)
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8713 {
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8714 int retval = _dw_get_screen_width();
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8715 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8716 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8717
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8718 /* Internal version to simplify the code with multiple versions of GTK */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8719 int _dw_get_screen_height(void)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8720 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8721 GdkDisplay *display = gdk_display_get_default();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8722
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8723 if(display)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8724 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8725 GListModel *monitors = gdk_display_get_monitors(display);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8726 GdkMonitor *monitor = GDK_MONITOR(g_list_model_get_object(monitors, 0));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8727
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8728 if(monitor)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8729 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8730 GdkRectangle rc = { 0, 0, 0 ,0 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8731 gdk_monitor_get_geometry(monitor, &rc);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8732 return rc.height;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8733 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8734 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8735 return 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8736 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8737
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8738 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8739 * Returns the height of the screen.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8740 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8741 DW_FUNCTION_DEFINITION(dw_screen_height, int)
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8742 DW_FUNCTION_ADD_PARAM
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8743 DW_FUNCTION_RETURN(dw_screen_height, int)
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8744 {
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8745 int retval = _dw_get_screen_height();
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8746 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8747 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8748
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8749 /* This should return the current color depth */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8750 unsigned long API dw_color_depth_get(void)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8751 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8752 /* TODO: Make this work on GTK4... with no GdkVisual */
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8753 return 32;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8754 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8755
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8756 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8757 * Sets the gravity of a given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8758 * Gravity controls which corner of the screen and window the position is relative to.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8759 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8760 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8761 * horz: DW_GRAV_LEFT (default), DW_GRAV_RIGHT or DW_GRAV_CENTER.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8762 * vert: DW_GRAV_TOP (default), DW_GRAV_BOTTOM or DW_GRAV_CENTER.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8763 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8764 void API dw_window_set_gravity(HWND handle, int horz, int vert)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8765 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8766 dw_window_set_data(handle, "_dw_grav_horz", DW_INT_TO_POINTER(horz));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8767 dw_window_set_data(handle, "_dw_grav_vert", DW_INT_TO_POINTER(vert));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8768 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8769
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8770 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8771 * Sets the position of a given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8772 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8773 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8774 * x: X location from the bottom left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8775 * y: Y location from the bottom left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8776 */
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8777 #ifndef GDK_WINDOWING_X11
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8778 void API dw_window_set_pos(HWND handle, long x, long y)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8779 {
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8780 }
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8781 #else
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8782 DW_FUNCTION_DEFINITION(dw_window_set_pos, void, HWND handle, long x, long y)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8783 DW_FUNCTION_ADD_PARAM3(handle, x, y)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8784 DW_FUNCTION_NO_RETURN(dw_window_set_pos)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8785 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, x, long, y, long)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8786 {
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8787 GdkDisplay *display = gdk_display_get_default();
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8788
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8789 if(handle && GTK_IS_WINDOW(handle) && display && GDK_IS_X11_DISPLAY(display))
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8790 {
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8791 GdkSurface *surface = gtk_native_get_surface(GTK_NATIVE(handle));
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8792
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8793 if(surface)
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8794 {
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8795 XMoveWindow(GDK_SURFACE_XDISPLAY(surface),
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8796 GDK_SURFACE_XID(surface),
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8797 x, y);
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8798 }
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8799 }
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8800 DW_FUNCTION_RETURN_NOTHING;
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8801 }
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8802 #endif
2322
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
8803
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8804 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8805 * Sets the position and size of a given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8806 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8807 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8808 * x: X location from the bottom left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8809 * y: Y location from the bottom left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8810 * width: Width of the widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8811 * height: Height of the widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8812 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8813 void API dw_window_set_pos_size(HWND handle, long x, long y, unsigned long width, unsigned long height)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8814 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8815 dw_window_set_size(handle, width, height);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8816 dw_window_set_pos(handle, x, y);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8817 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8818
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8819 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8820 * Gets the position and size of a given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8821 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8822 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8823 * x: X location from the bottom left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8824 * y: Y location from the bottom left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8825 * width: Width of the widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8826 * height: Height of the widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8827 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8828 DW_FUNCTION_DEFINITION(dw_window_get_pos_size, void, HWND handle, long *x, long *y, ULONG *width, ULONG *height)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8829 DW_FUNCTION_ADD_PARAM5(handle, x, y, width, height)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8830 DW_FUNCTION_NO_RETURN(dw_window_get_pos_size)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8831 DW_FUNCTION_RESTORE_PARAM5(handle, HWND, x, long *, y, long *, width, ULONG *, height, ULONG *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8832 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8833 if(handle && GTK_IS_WIDGET(handle))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8834 {
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8835 GtkRequisition size;
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8836
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8837 /* If the widget hasn't been shown, it returns 0 so use this as backup */
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8838 gtk_widget_get_preferred_size(GTK_WIDGET(handle), NULL, &size);
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8839
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8840 if(width)
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8841 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8842 *width = (ULONG)gtk_widget_get_width(GTK_WIDGET(handle));
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8843 if(!*width)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8844 *width = (ULONG)size.width;
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8845 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8846 if(height)
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8847 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8848 *height = (ULONG)gtk_widget_get_height(GTK_WIDGET(handle));
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8849 if(!*height)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8850 *height = (ULONG)size.height;
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8851 }
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8852
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8853 #ifdef GDK_WINDOWING_X11
2336
dd1b2cc95c91 GTK4: Don't unref the PangoContext returned from gtk_widget_get_pango_context().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2335
diff changeset
8854 if(x || y)
dd1b2cc95c91 GTK4: Don't unref the PangoContext returned from gtk_widget_get_pango_context().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2335
diff changeset
8855 {
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8856 GdkDisplay *display = gdk_display_get_default();
2336
dd1b2cc95c91 GTK4: Don't unref the PangoContext returned from gtk_widget_get_pango_context().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2335
diff changeset
8857 GdkSurface *surface;
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8858
2336
dd1b2cc95c91 GTK4: Don't unref the PangoContext returned from gtk_widget_get_pango_context().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2335
diff changeset
8859 if(display && GDK_IS_X11_DISPLAY(display) && (surface = gtk_native_get_surface(GTK_NATIVE(handle))))
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8860 {
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8861 XWindowAttributes xwa;
2322
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
8862 int ix = 0, iy = 0;
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8863 Window child, xrootwin = gdk_x11_display_get_xrootwindow(display);
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8864
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8865 XTranslateCoordinates(GDK_SURFACE_XDISPLAY(surface), GDK_SURFACE_XID(surface),
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8866 xrootwin, 0, 0, &ix, &iy, &child);
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8867 XGetWindowAttributes(GDK_SURFACE_XDISPLAY(surface),
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8868 GDK_SURFACE_XID(surface), &xwa);
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8869
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8870 if(x)
2322
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
8871 *x = (long)(ix - xwa.x);
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8872 if(y)
2322
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
8873 *y = (long)(ix - xwa.y);
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8874 }
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8875 }
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8876 #else
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8877 if(x)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8878 *x = 0;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8879 if(y)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8880 *y = 0;
2320
829228de003f GTK4: Use package gtk4-x11 instead of gtk4 so we can call Xlib directly to
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2319
diff changeset
8881 #endif
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8882 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8883 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8884 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8885
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8886 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8887 * Sets the style of a given window (widget).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8888 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8889 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8890 * width: New width in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8891 * height: New height in pixels.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8892 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8893 DW_FUNCTION_DEFINITION(dw_window_set_style, void, HWND handle, ULONG style, ULONG mask)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8894 DW_FUNCTION_ADD_PARAM3(handle, style, mask)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8895 DW_FUNCTION_NO_RETURN(dw_window_set_style)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8896 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, style, ULONG, mask, ULONG)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8897 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8898 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8899
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8900 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8901 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8902 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8903 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8904 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8905 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8906 else if(GTK_IS_FRAME(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8907 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8908 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_label");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8909 if(tmp && GTK_IS_LABEL(tmp))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8910 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8911 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8912 else if(GTK_IS_BUTTON(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8913 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8914 if(mask & DW_BS_NOBORDER)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8915 {
2318
5951752fa7af GTK4: Implement borderless button style for buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2317
diff changeset
8916 GtkStyleContext *context = gtk_widget_get_style_context(GTK_WIDGET(handle));
5951752fa7af GTK4: Implement borderless button style for buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2317
diff changeset
8917
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8918 if(style & DW_BS_NOBORDER)
2318
5951752fa7af GTK4: Implement borderless button style for buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2317
diff changeset
8919 gtk_style_context_add_class(context, "flat");
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8920 else
2318
5951752fa7af GTK4: Implement borderless button style for buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2317
diff changeset
8921 gtk_style_context_remove_class(context, "flat");
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8922 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8923 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8924 if(GTK_IS_LABEL(handle2))
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8925 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8926 gfloat x=DW_LEFT, y=DW_CENTER;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8927 /* horizontal... */
2319
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
8928 if(style & DW_DT_CENTER)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8929 x = DW_CENTER;
2319
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
8930 if(style & DW_DT_RIGHT)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8931 x = DW_RIGHT;
2319
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
8932 if(style & DW_DT_LEFT)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8933 x = DW_LEFT;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8934 /* vertical... */
2319
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
8935 if(style & DW_DT_VCENTER)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8936 y = DW_CENTER;
2319
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
8937 if(style & DW_DT_TOP)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8938 y = DW_TOP;
2319
36522ed00ef8 GTK4: Some general code cleanup and an attempt to get dw_window_set_icon()
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2318
diff changeset
8939 if(style & DW_DT_BOTTOM)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8940 y = DW_BOTTOM;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8941 gtk_label_set_xalign(GTK_LABEL(handle2), x);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8942 gtk_label_set_yalign(GTK_LABEL(handle2), y);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8943 if(style & DW_DT_WORDBREAK)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8944 gtk_label_set_wrap(GTK_LABEL(handle), TRUE);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8945 }
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8946 if(G_IS_MENU_ITEM(handle2))
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
8947 {
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
8948 GSimpleAction *action = g_object_get_data(G_OBJECT(handle2), "_dw_action");
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
8949
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8950 if(action)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8951 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8952 if(mask & (DW_MIS_ENABLED | DW_MIS_DISABLED))
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8953 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8954 if((style & DW_MIS_ENABLED) || (style & DW_MIS_DISABLED))
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8955 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8956 if(style & DW_MIS_ENABLED)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8957 g_simple_action_set_enabled(action, TRUE);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8958 else
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8959 g_simple_action_set_enabled(action, FALSE);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8960 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8961 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8962 if(mask & (DW_MIS_CHECKED | DW_MIS_UNCHECKED))
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8963 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8964 GVariant *action_state = g_action_get_state(G_ACTION(action));
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8965 gboolean check = false;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8966
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8967 if(style & DW_MIS_CHECKED)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8968 check = true;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8969
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8970 if(!action_state || (g_variant_get_boolean(action_state) != check))
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8971 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8972 GVariant *new_state = g_variant_new_boolean(check);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8973 g_simple_action_set_state(action, new_state);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8974 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8975 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8976 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8977 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8978 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8979 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8980
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8981 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8982 * Adds a new page to specified notebook.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8983 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8984 * handle: Window (widget) handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8985 * flags: Any additional page creation flags.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8986 * front: If TRUE page is added at the beginning.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8987 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8988 DW_FUNCTION_DEFINITION(dw_notebook_page_new, ULONG, HWND handle, DW_UNUSED(ULONG flags), int front)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8989 DW_FUNCTION_ADD_PARAM3(handle, flags, front)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8990 DW_FUNCTION_RETURN(dw_notebook_page_new, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8991 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, DW_UNUSED(flags), ULONG, front, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8992 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8993 GtkWidget **pagearray;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8994 ULONG retval = 256;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8995 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8996
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8997 pagearray = (GtkWidget **)g_object_get_data(G_OBJECT(handle), "_dw_pagearray");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8998
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8999 if(pagearray)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9000 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9001 for(z=0;z<256;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9002 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9003 if(!pagearray[z])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9004 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9005 char text[101] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9006 int num = z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9007
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9008 if(front)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9009 num |= 1 << 16;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9010
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9011 snprintf(text, 100, "_dw_page%d", z);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9012 /* Save the real id and the creation flags */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9013 g_object_set_data(G_OBJECT(handle), text, GINT_TO_POINTER(num));
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9014 retval = (ULONG)z;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9015 z = 256;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9016 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9017 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9018 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9019 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9020 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9021
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9022 /* Return the physical page id from the logical page id */
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
9023 int _dw_get_physical_page(HWND handle, unsigned long pageid)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9024 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9025 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9026 GtkWidget *thispage, **pagearray = g_object_get_data(G_OBJECT(handle), "_dw_pagearray");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9027
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9028 if(pagearray)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9029 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9030 for(z=0;z<256;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9031 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9032 if((thispage = gtk_notebook_get_nth_page(GTK_NOTEBOOK(handle), z)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9033 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9034 if(thispage == pagearray[pageid])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9035 return z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9036 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9037 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9038 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9039 return 256;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9040 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9041
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9042 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9043 * Remove a page from a notebook.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9044 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9045 * handle: Handle to the notebook widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9046 * pageid: ID of the page to be destroyed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9047 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9048 DW_FUNCTION_DEFINITION(dw_notebook_page_destroy, void, HWND handle, unsigned int pageid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9049 DW_FUNCTION_ADD_PARAM2(handle, pageid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9050 DW_FUNCTION_NO_RETURN(dw_notebook_page_destroy)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9051 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, pageid, unsigned int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9052 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9053 GtkWidget **pagearray;
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
9054 int realpage = _dw_get_physical_page(handle, pageid);
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
9055
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9056 if(realpage > -1 && realpage < 256)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9057 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9058 gtk_notebook_remove_page(GTK_NOTEBOOK(handle), realpage);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9059 if((pagearray = g_object_get_data(G_OBJECT(handle), "_dw_pagearray")))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9060 pagearray[pageid] = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9061 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9062 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9063 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9064
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9065 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9066 * Queries the currently visible page ID.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9067 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9068 * handle: Handle to the notebook widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9069 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9070 DW_FUNCTION_DEFINITION(dw_notebook_page_get, ULONG, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9071 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9072 DW_FUNCTION_RETURN(dw_notebook_page_get, ULONG)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9073 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9074 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9075 ULONG retval;
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
9076 int phys = gtk_notebook_get_current_page(GTK_NOTEBOOK(handle));
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
9077
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
9078 retval = _dw_get_logical_page(handle, phys);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9079 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9080 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9081
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9082 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9083 * Sets the currently visibale page ID.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9084 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9085 * handle: Handle to the notebook widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9086 * pageid: ID of the page to be made visible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9087 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9088 DW_FUNCTION_DEFINITION(dw_notebook_page_set, void, HWND handle, unsigned int pageid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9089 DW_FUNCTION_ADD_PARAM2(handle, pageid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9090 DW_FUNCTION_NO_RETURN(dw_notebook_page_set)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9091 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, pageid, unsigned int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9092 {
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
9093 int realpage = _dw_get_physical_page(handle, pageid);
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
9094
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9095 if(realpage > -1 && realpage < 256)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9096 gtk_notebook_set_current_page(GTK_NOTEBOOK(handle), pageid);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9097 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9098 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9099
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9100
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9101 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9102 * Sets the text on the specified notebook tab.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9103 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9104 * handle: Notebook handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9105 * pageid: Page ID of the tab to set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9106 * text: Pointer to the text to set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9107 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9108 DW_FUNCTION_DEFINITION(dw_notebook_page_set_text, void, HWND handle, ULONG pageid, const char *text)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9109 DW_FUNCTION_ADD_PARAM3(handle, pageid, text)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9110 DW_FUNCTION_NO_RETURN(dw_notebook_page_set_text)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9111 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, pageid, ULONG, text, const char *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9112 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9113 GtkWidget *child;
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
9114 int realpage = _dw_get_physical_page(handle, pageid);
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
9115
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9116 if(realpage < 0 || realpage > 255)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9117 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9118 char ptext[101] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9119 int num;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9120
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9121 snprintf(ptext, 100, "_dw_page%d", (int)pageid);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9122 num = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), ptext));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9123 realpage = 0xFF & num;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9124 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9125
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9126 if(realpage > -1 && realpage < 256)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9127 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9128 child = gtk_notebook_get_nth_page(GTK_NOTEBOOK(handle), realpage);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9129 if(child)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9130 gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(handle), child, text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9131 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9132 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9133 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9134
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9135 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9136 * Sets the text on the specified notebook tab status area.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9137 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9138 * handle: Notebook handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9139 * pageid: Page ID of the tab to set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9140 * text: Pointer to the text to set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9141 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
9142 void API dw_notebook_page_set_status_text(HWND handle, unsigned long pageid, const char *text)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9143 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9144 /* TODO (if possible) */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9145 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9146
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9147 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9148 * Packs the specified box into the notebook page.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9149 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9150 * handle: Handle to the notebook to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9151 * pageid: Page ID in the notebook which is being packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9152 * page: Box handle to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9153 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9154 DW_FUNCTION_DEFINITION(dw_notebook_pack, void, HWND handle, ULONG pageid, HWND page)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9155 DW_FUNCTION_ADD_PARAM3(handle, pageid, page)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9156 DW_FUNCTION_NO_RETURN(dw_notebook_pack)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9157 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, pageid, ULONG, page, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9158 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9159 GtkWidget *label, *child, *oldlabel, **pagearray;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9160 const gchar *text = NULL;
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
9161 int num, z, realpage = -1;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9162 char ptext[101] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9163
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9164 snprintf(ptext, 100, "_dw_page%d", (int)pageid);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9165 num = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(handle), ptext));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9166 g_object_set_data(G_OBJECT(handle), ptext, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9167 pagearray = (GtkWidget **)g_object_get_data(G_OBJECT(handle), "_dw_pagearray");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9168
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9169 if(pagearray)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9170 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9171 /* The page already exists... so get it's current page */
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9172 if(pagearray[pageid])
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9173 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9174 for(z=0;z<256;z++)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9175 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9176 child = gtk_notebook_get_nth_page(GTK_NOTEBOOK(handle), z);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9177 if(child == pagearray[pageid])
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9178 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9179 oldlabel = gtk_notebook_get_tab_label(GTK_NOTEBOOK(handle), child);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9180 if(oldlabel)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9181 text = gtk_label_get_text(GTK_LABEL(oldlabel));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9182 gtk_notebook_remove_page(GTK_NOTEBOOK(handle), z);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9183 realpage = z;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9184 break;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9185 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9186 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9187 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9188
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9189 pagearray[pageid] = page;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9190
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9191 label = gtk_label_new(text ? text : "");
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9192
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9193 if(realpage != -1)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9194 gtk_notebook_insert_page(GTK_NOTEBOOK(handle), page, label, realpage);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9195 else if(num & ~(0xFF))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9196 gtk_notebook_insert_page(GTK_NOTEBOOK(handle), page, label, 0);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9197 else
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9198 gtk_notebook_insert_page(GTK_NOTEBOOK(handle), page, label, 256);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9199 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9200 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9201 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9202
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9203 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9204 * Appends the specified text to the listbox's (or combobox) entry list.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9205 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9206 * handle: Handle to the listbox to be appended to.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9207 * text: Text to append into listbox.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9208 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
9209 void API dw_listbox_append(HWND handle, const char *text)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9210 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9211 dw_listbox_insert(handle, text, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9212 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9213
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9214 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9215 * Inserts the specified text int the listbox's (or combobox) entry list at the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9216 * position indicated.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9217 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9218 * handle: Handle to the listbox to be appended to.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9219 * text: Text to insert into listbox.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9220 * pos: 0-based index into listbox. -1 will append
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9221 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9222 DW_FUNCTION_DEFINITION(dw_listbox_insert, void, HWND handle, const char *text, int pos)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9223 DW_FUNCTION_ADD_PARAM3(handle, text, pos)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9224 DW_FUNCTION_NO_RETURN(dw_listbox_insert)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9225 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, text, const char *, pos, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9226 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9227 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9228 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9229
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9230 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9231 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9232 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9233 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9234 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9235 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9236 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9237 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9238 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9239 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9240
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9241 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9242 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9243 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9244 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9245 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9246
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9247 if(store)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9248 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9249 if(pos < 0)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9250 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9251 /* Insert an entry at the end */
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9252 gtk_list_store_append(store, &iter);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9253 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9254 else
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9255 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9256 /* Insert at position */
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9257 gtk_list_store_insert(store, &iter, pos);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9258 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9259 gtk_list_store_set (store, &iter, 0, text, -1);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9260 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9261 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9262 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9263 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9265 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9266 * Appends the specified text items to the listbox's (or combobox) entry list.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9267 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9268 * handle: Handle to the listbox to be appended to.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9269 * text: Text strings to append into listbox.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9270 * count: Number of text strings to append
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9271 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9272 DW_FUNCTION_DEFINITION(dw_listbox_list_append, void, HWND handle, char **text, int count)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9273 DW_FUNCTION_ADD_PARAM3(handle, text, count)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9274 DW_FUNCTION_NO_RETURN(dw_listbox_list_append)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9275 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, text, char **, count, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9276 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9277 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9278 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9279
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9280 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9281 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9282 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9283 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9284 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9285 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9286 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9287 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9288 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9289 int z;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9290 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9291
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9292 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9293 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9294 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9295 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9296 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9297
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9298 if(store)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9299 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9300 /* Insert entries at the end */
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9301 for(z=0;z<count;z++)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9302 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9303 gtk_list_store_append(store, &iter);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9304 gtk_list_store_set (store, &iter, 0, text[z], -1);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9305 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9306 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9307 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9308 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9309 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9310
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9311 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9312 * Clears the listbox's (or combobox) list of all entries.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9313 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9314 * handle: Handle to the listbox to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9315 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9316 DW_FUNCTION_DEFINITION(dw_listbox_clear, void, HWND handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9317 DW_FUNCTION_ADD_PARAM1(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9318 DW_FUNCTION_NO_RETURN(dw_listbox_clear)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9319 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9320
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9321 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9322 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9323 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9324
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9325 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9326 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9327 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9328 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9329 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9330 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9331 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9332 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9333 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9334 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9335 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9336 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9337 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9338 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9339
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9340 if(store)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9341 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9342 /* Clear the list */
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9343 gtk_list_store_clear(store);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9344 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9345 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9346 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9347 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9348
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9349 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9350 * Returns the listbox's item count.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9351 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9352 * handle: Handle to the listbox to be counted
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9353 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9354 DW_FUNCTION_DEFINITION(dw_listbox_count, int, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9355 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9356 DW_FUNCTION_RETURN(dw_listbox_count, int)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9357 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9358 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9359 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9360 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9361 int retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9362
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9363 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9364 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9365 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9366 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9367 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9368 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9369 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9370 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9371 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9372 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9373 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9374 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9375 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9376 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9377
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9378 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9379 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9380 /* Get the number of children at the top level */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9381 retval = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9382 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9383 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9384 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9385 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9386
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9387 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9388 * Sets the topmost item in the viewport.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9389 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9390 * handle: Handle to the listbox to be cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9391 * top: Index to the top item.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9392 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9393 DW_FUNCTION_DEFINITION(dw_listbox_set_top, void, HWND handle, int top)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9394 DW_FUNCTION_ADD_PARAM2(handle, top)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9395 DW_FUNCTION_NO_RETURN(dw_listbox_set_top)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9396 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, top, int)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9397
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9398 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9399 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9400
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9401 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9402 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9403 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9404 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9405 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9406 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9407 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9408 if(handle2 && GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9409 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9410 GtkAdjustment *adjust = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9411 GtkListStore *store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9412
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9413 if(store && adjust)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9414 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9415 /* Get the number of children at the top level */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9416 gint rowcount = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9417 gdouble pagesize = gtk_adjustment_get_page_size(adjust);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9418 gdouble upper = gtk_adjustment_get_upper(adjust) - pagesize;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9419 gdouble lower = gtk_adjustment_get_lower(adjust);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9420 gdouble change;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9421
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9422 /* Safety check */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9423 if(rowcount > 1)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9424 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9425 /* Verify the range */
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9426 rowcount--;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9427 if(top > rowcount)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9428 top = rowcount;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9429
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9430 change = ((gdouble)top/(gdouble)rowcount) * (upper - lower);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9431
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9432 gtk_adjustment_set_value(adjust, change + lower);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9433 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9434 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9435 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9436 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9437 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9438
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9439 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9440 * Copies the given index item's text into buffer.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9441 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9442 * handle: Handle to the listbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9443 * index: Index into the list to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9444 * buffer: Buffer where text will be copied.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9445 * length: Length of the buffer (including NULL).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9446 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9447 DW_FUNCTION_DEFINITION(dw_listbox_get_text, void, HWND handle, unsigned int index, char *buffer, unsigned int length)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9448 DW_FUNCTION_ADD_PARAM4(handle, index, buffer, length)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9449 DW_FUNCTION_NO_RETURN(dw_listbox_get_text)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9450 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, index, unsigned int, buffer, char *, length, unsigned int)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9451
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9452 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9453 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9454 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9455
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9456 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9457 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9458 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9459 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9460 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9461 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9462 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9463 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9464 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9465 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9466 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9467 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9468 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9469 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9470
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9471 if(store && index < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9472 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9473 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9474
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9475 /* Get the nth child at the top level */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9476 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, index))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9477 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9478 /* Get the text */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9479 gchar *text;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9480 gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, _DW_DATA_TYPE_STRING, &text, -1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9481 if(text)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9482 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9483 strncpy(buffer, text, length);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9484 g_free(text);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9485 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9486 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9487 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9488 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9489 buffer[0] = '\0';
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9490 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9491 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9492
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9493 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9494 * Sets the text of a given listbox entry.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9495 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9496 * handle: Handle to the listbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9497 * index: Index into the list to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9498 * buffer: Buffer where text will be copied.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9499 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9500 DW_FUNCTION_DEFINITION(dw_listbox_set_text, void, HWND handle, unsigned int index, const char *buffer)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9501 DW_FUNCTION_ADD_PARAM3(handle, index, buffer)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9502 DW_FUNCTION_NO_RETURN(dw_listbox_set_text)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9503 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, index, unsigned int, buffer, char *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9504 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9505 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9506 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9507
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9508 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9509 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9510 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9511 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9512 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9513 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9514 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9515 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9516 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9517 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9518 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9519 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9520 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9521 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9522
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9523 if(store && index < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9524 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9525 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9526
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9527 /* Get the nth child at the top level */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9528 if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, index))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9529 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9530 /* Update the text */
2744
608796a91527 GTK3/4: Committing a fix from Mark Hessling for dw_listbox_set_text().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2731
diff changeset
9531 gtk_list_store_set(store, &iter, 0, buffer, -1);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9532 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9533 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9534 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9535 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9536 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9537
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9538 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9539 * Returns the index to the current selected item or -1 when done.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9540 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9541 * handle: Handle to the listbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9542 * where: Either the previous return or -1 to restart.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9543 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9544 DW_FUNCTION_DEFINITION(dw_listbox_selected_multi, int, HWND handle, int where)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9545 DW_FUNCTION_ADD_PARAM2(handle, where)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9546 DW_FUNCTION_RETURN(dw_listbox_selected_multi, int)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9547 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, where, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9548 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9549 GtkWidget *handle2;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9550 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9551 int retval = DW_LIT_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9552
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9553 handle2 = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9554
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9555 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9556 if(handle2 && GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9557 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9558
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9559 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9560 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9561 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9562 GList *list = gtk_tree_selection_get_selected_rows(sel, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9563
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9564 if(list)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9565 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9566 int counter = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9567 GtkTreePath *path = g_list_nth_data(list, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9568
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9569 while(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9570 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9571 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9572
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9573 if(indices && indices[0] > where)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9574 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9575 retval = indices[0];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9576 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9577 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9578
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9579 counter++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9580 path = g_list_nth_data(list, counter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9581 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9582
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9583 g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9584 g_list_free(list);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9585 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9586 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9587 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9588 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9589
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9590 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9591 * Returns the index to the item in the list currently selected.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9592 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9593 * handle: Handle to the listbox to be queried.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9594 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9595 DW_FUNCTION_DEFINITION(dw_listbox_selected, int, HWND handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9596 DW_FUNCTION_ADD_PARAM1(handle)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9597 DW_FUNCTION_RETURN(dw_listbox_selected, int)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9598 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9599 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9600 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9601 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9602 unsigned int retval = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9603
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9604 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9605 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9606 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9607 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9608 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9609 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9610 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9611 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9612 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9613 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9614 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9615 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9616 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9617 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9618
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9619 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9620 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9621 if(GTK_IS_TREE_VIEW(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9622 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9623 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9624 GList *list = gtk_tree_selection_get_selected_rows(sel, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9625 if(list)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9626 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9627 GtkTreePath *path = g_list_nth_data(list, 0);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9628 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9629
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9630 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9631 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9632 retval = indices[0];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9633 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9634
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9635 g_list_foreach(list, (GFunc) gtk_tree_path_free, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9636 g_list_free(list);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9637 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9638 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9639 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9640 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9641 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9642 GtkTreePath *path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9643
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9644 if(gtk_combo_box_get_active_iter(GTK_COMBO_BOX(handle2), &iter))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9645 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9646 path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9647 if(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9648 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9649 gint *indices = gtk_tree_path_get_indices(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9650
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9651 if(indices)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9652 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9653 retval = indices[0];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9654 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9655 gtk_tree_path_free(path);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9656 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9657 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9658 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9659 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9660 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9661 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9662 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9663
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9664 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9665 * Sets the selection state of a given index.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9666 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9667 * handle: Handle to the listbox to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9668 * index: Item index.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9669 * state: TRUE if selected FALSE if unselected.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9670 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9671 DW_FUNCTION_DEFINITION(dw_listbox_select, void, HWND handle, int index, int state)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9672 DW_FUNCTION_ADD_PARAM3(handle, index, state)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9673 DW_FUNCTION_NO_RETURN(dw_listbox_select)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9674 DW_FUNCTION_RESTORE_PARAM3(handle, HWND, index, int, state, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9675 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9676 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9677 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9678
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9679 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9680 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9681 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9682 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9683 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9684 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9685 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9686 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9687 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9688 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9689 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9690 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9691 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9692 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9693
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9694 if(store && index < gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9695 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9696 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9697
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9698 /* Get the nth child at the top level */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9699 if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, index))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9700 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9701 if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9702 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9703 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(handle2), &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9704 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9705 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9706 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9707 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9708 if(state)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9709 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9710 /* Select the item */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9711 gtk_tree_selection_select_iter(sel, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9712 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9713 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9714 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9715 /* Deselect the item */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9716 gtk_tree_selection_unselect_iter(sel, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9717 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9718 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9719 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9720 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9721 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9722 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9723 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9724
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9725 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9726 * Deletes the item with given index from the list.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9727 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9728 * handle: Handle to the listbox to be set.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9729 * index: Item index.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9730 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9731 DW_FUNCTION_DEFINITION(dw_listbox_delete, void, HWND handle, int index)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9732 DW_FUNCTION_ADD_PARAM2(handle, index)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9733 DW_FUNCTION_NO_RETURN(dw_listbox_delete)
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9734 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, index, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9735 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9736 GtkWidget *handle2 = handle;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9737 GtkListStore *store = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9738
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9739 /* Get the inner handle for scrolled controls */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9740 if(GTK_IS_SCROLLED_WINDOW(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9741 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9742 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9743 if(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9744 handle2 = tmp;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9745 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9746 if(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9747 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9748 /* Make sure it is the correct tree type */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9749 if(GTK_IS_TREE_VIEW(handle2) && g_object_get_data(G_OBJECT(handle2), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_LISTBOX))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9750 store = (GtkListStore *)gtk_tree_view_get_model(GTK_TREE_VIEW(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9751 else if(GTK_IS_COMBO_BOX(handle2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9752 store = (GtkListStore *)gtk_combo_box_get_model(GTK_COMBO_BOX(handle2));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9753
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9754 if(store)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9755 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9756 GtkTreeIter iter;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9757
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9758 /* Get the nth child at the top level */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9759 if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, index))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9760 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9761 gtk_list_store_remove(store, &iter);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9762 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9763 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9764 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9765 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9766 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9767
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9768 /* Function to do delayed positioning */
2301
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9769 gboolean _dw_splitbar_set_percent(gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9770 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9771 GtkWidget *widget = data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9772 float *percent = (float *)g_object_get_data(G_OBJECT(widget), "_dw_percent");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9773
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9774 if(percent)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9775 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9776 GtkAllocation alloc;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9777
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9778 gtk_widget_get_allocation(widget, &alloc);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9779
2301
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9780 if(alloc.width > 10 && alloc.height > 10)
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9781 {
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9782 if(gtk_orientable_get_orientation(GTK_ORIENTABLE(widget)) == GTK_ORIENTATION_HORIZONTAL)
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9783 gtk_paned_set_position(GTK_PANED(widget), (int)(alloc.width * (*percent / 100.0)));
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9784 else
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9785 gtk_paned_set_position(GTK_PANED(widget), (int)(alloc.height * (*percent / 100.0)));
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9786 g_object_set_data(G_OBJECT(widget), "_dw_percent", NULL);
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9787 free(percent);
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9788 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9789 else
2301
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9790 return TRUE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9791 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9792 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9793 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9794
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9795 /* Reposition the bar according to the percentage */
2301
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9796 static gint _dw_splitbar_realize(GtkWidget *widget, gpointer data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9797 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9798 float *percent = (float *)g_object_get_data(G_OBJECT(widget), "_dw_percent");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9799
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9800 /* Prevent infinite recursion ;) */
2295
2a208d5400c5 GTK4: "size-allocate" signal is gone, so switch to using "realize".
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2292
diff changeset
9801 if(!percent)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9802 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9803
2301
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9804 g_idle_add(_dw_splitbar_set_percent, widget);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9805 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9806 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9807
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9808 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9809 * Creates a splitbar window (widget) with given parameters.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9810 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9811 * type: Value can be DW_VERT or DW_HORZ.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9812 * topleft: Handle to the window to be top or left.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9813 * bottomright: Handle to the window to be bottom or right.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9814 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9815 * A handle to a splitbar window or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9816 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9817 DW_FUNCTION_DEFINITION(dw_splitbar_new, HWND, int type, HWND topleft, HWND bottomright, unsigned long cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9818 DW_FUNCTION_ADD_PARAM4(type, topleft, bottomright, cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9819 DW_FUNCTION_RETURN(dw_splitbar_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9820 DW_FUNCTION_RESTORE_PARAM4(type, int, topleft, HWND, bottomright, HWND, cid, unsigned long)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9821 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9822 GtkWidget *tmp = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9823 float *percent = malloc(sizeof(float));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9824
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9825 tmp = gtk_paned_new(type == DW_HORZ ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL);
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9826 gtk_paned_set_start_child(GTK_PANED(tmp), topleft);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9827 gtk_paned_set_resize_start_child(GTK_PANED(tmp), TRUE);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9828 gtk_paned_set_shrink_start_child(GTK_PANED(tmp), FALSE);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9829 gtk_paned_set_end_child(GTK_PANED(tmp), bottomright);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9830 gtk_paned_set_resize_end_child(GTK_PANED(tmp), TRUE);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9831 gtk_paned_set_shrink_end_child(GTK_PANED(tmp), FALSE);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9832 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9833 *percent = 50.0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9834 g_object_set_data(G_OBJECT(tmp), "_dw_percent", (gpointer)percent);
2301
69b06073a87d GTK4: The "realize" signal is not quite the same as "size-allocate" so if
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2300
diff changeset
9835 g_signal_connect(G_OBJECT(tmp), "realize", G_CALLBACK(_dw_splitbar_realize), NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9836 gtk_widget_show(tmp);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9837 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9838 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9839
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9840 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9841 * Sets the position of a splitbar (pecentage).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9842 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9843 * handle: The handle to the splitbar returned by dw_splitbar_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9844 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9845 DW_FUNCTION_DEFINITION(dw_splitbar_set, void, HWND handle, float percent)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9846 DW_FUNCTION_ADD_PARAM2(handle, percent)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9847 DW_FUNCTION_NO_RETURN(dw_splitbar_set)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9848 DW_FUNCTION_RESTORE_PARAM2(handle, HWND, percent, float)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9849 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9850 float *mypercent = (float *)dw_window_get_data(handle, "_dw_percent");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9851 int size = 0, position;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9852
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9853 if(gtk_orientable_get_orientation(GTK_ORIENTABLE(handle)) == GTK_ORIENTATION_HORIZONTAL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9854 size = gtk_widget_get_allocated_width(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9855 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9856 size = gtk_widget_get_allocated_height(handle);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9857
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9858 if(mypercent)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9859 *mypercent = percent;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9860
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9861 if(size > 10)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9862 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9863 position = (int)((float)size * (percent / 100.0));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9864
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9865 gtk_paned_set_position(GTK_PANED(handle), position);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9866 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9867 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9868 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9869
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9870 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9871 * Gets the position of a splitbar (pecentage).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9872 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9873 * handle: The handle to the splitbar returned by dw_splitbar_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9874 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9875 DW_FUNCTION_DEFINITION(dw_splitbar_get, float, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9876 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9877 DW_FUNCTION_RETURN(dw_splitbar_get, float)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9878 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9879 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9880 float *percent = (float *)dw_window_get_data(handle, "_dw_percent");
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9881 float retval = 0.0;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9882
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9883 if(percent)
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9884 retval = *percent;
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9885 DW_FUNCTION_RETURN_THIS(retval);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9886 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9887
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9888 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9889 * Creates a calendar window (widget) with given parameters.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9890 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9891 * id: Unique identifier for calendar widget
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9892 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9893 * A handle to a calendar window or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9894 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9895 DW_FUNCTION_DEFINITION(dw_calendar_new, HWND, ULONG cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9896 DW_FUNCTION_ADD_PARAM1(cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9897 DW_FUNCTION_RETURN(dw_calendar_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9898 DW_FUNCTION_RESTORE_PARAM1(cid, ULONG)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9899 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9900 GtkWidget *tmp = gtk_calendar_new();
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9901 GTimeZone *tz = g_time_zone_new_local();
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9902 GDateTime *now = g_date_time_new_now(tz);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9903
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9904 gtk_widget_show(tmp);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9905 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9906 /* select today */
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9907 gtk_calendar_set_show_day_names(GTK_CALENDAR(tmp), TRUE);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9908 gtk_calendar_set_show_heading(GTK_CALENDAR(tmp), TRUE);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9909 gtk_calendar_select_day(GTK_CALENDAR(tmp), now);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9910 g_date_time_unref(now);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9911 g_time_zone_unref(tz);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9912 DW_FUNCTION_RETURN_THIS(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9913 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9914
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9915 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9916 * Sets the current date of a calendar
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9917 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9918 * handle: The handle to the calendar returned by dw_calendar_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9919 * year...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9920 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9921 DW_FUNCTION_DEFINITION(dw_calendar_set_date, void, HWND handle, unsigned int year, unsigned int month, unsigned int day)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9922 DW_FUNCTION_ADD_PARAM4(handle, year, month, day)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9923 DW_FUNCTION_NO_RETURN(dw_calendar_set_date)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9924 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, year, unsigned int, month, unsigned int, day, unsigned int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9925 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9926 if(GTK_IS_CALENDAR(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9927 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9928 GTimeZone *tz = g_time_zone_new_local();
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9929 GDateTime *datetime = g_date_time_new(tz, year, month, day, 0, 0, 0);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9930 gtk_calendar_select_day(GTK_CALENDAR(handle), datetime);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9931 g_date_time_unref(datetime);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9932 g_time_zone_unref(tz);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9933 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9934 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9935 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9936
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9937 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9938 * Gets the position of a splitbar (pecentage).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9939 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9940 * handle: The handle to the splitbar returned by dw_splitbar_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9941 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9942 DW_FUNCTION_DEFINITION(dw_calendar_get_date, void, HWND handle, unsigned int *year, unsigned int *month, unsigned int *day)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9943 DW_FUNCTION_ADD_PARAM4(handle, year, month, day)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9944 DW_FUNCTION_NO_RETURN(dw_calendar_get_date)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9945 DW_FUNCTION_RESTORE_PARAM4(handle, HWND, year, unsigned int *, month, unsigned int *, day, unsigned int *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9946 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9947 if(GTK_IS_CALENDAR(handle))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9948 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9949 GDateTime *datetime = gtk_calendar_get_date(GTK_CALENDAR(handle));
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9950 if(year)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9951 *year = g_date_time_get_year(datetime);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9952 if(month)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9953 *month = g_date_time_get_month(datetime);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9954 if(day)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9955 *day = g_date_time_get_day_of_month(datetime);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9956 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9957 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9958 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9959
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9960 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9961 * Sets the current focus item for a window/dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9962 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9963 * handle: Handle to the dialog item to be focused.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9964 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9965 * This is for use after showing the window/dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9966 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9967 DW_FUNCTION_DEFINITION(dw_window_set_focus, void, HWND handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9968 DW_FUNCTION_ADD_PARAM1(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9969 DW_FUNCTION_NO_RETURN(dw_window_set_focus)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9970 DW_FUNCTION_RESTORE_PARAM1(handle, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9971 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9972 if(handle)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9973 gtk_widget_grab_focus(handle);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9974 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9975 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9976
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9977 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9978 * Sets the default focus item for a window/dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9979 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9980 * window: Toplevel window or dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9981 * defaultitem: Handle to the dialog item to be default.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9982 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9983 * This is for use before showing the window/dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9984 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
9985 void API dw_window_default(HWND window, HWND defaultitem)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9986 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9987 if(window)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9988 g_object_set_data(G_OBJECT(window), "_dw_defaultitem", (gpointer)defaultitem);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9989 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9990
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9991 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9992 * Sets window to click the default dialog item when an ENTER is pressed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9993 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9994 * window: Window (widget) to look for the ENTER press.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9995 * next: Window (widget) to move to next (or click)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9996 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9997 DW_FUNCTION_DEFINITION(dw_window_click_default, void, HWND window, HWND next)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9998 DW_FUNCTION_ADD_PARAM2(window, next)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9999 DW_FUNCTION_NO_RETURN(dw_window_click_default)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10000 DW_FUNCTION_RESTORE_PARAM2(window, HWND, next, HWND)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10001 {
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
10002 if(window && next && GTK_IS_WIDGET(window) && GTK_IS_WIDGET(next))
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
10003 {
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
10004 GtkEventController *controller = gtk_event_controller_key_new();
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
10005 gtk_widget_add_controller(GTK_WIDGET(window), controller);
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
10006 g_signal_connect(G_OBJECT(controller), "key-pressed", G_CALLBACK(_dw_default_key_press_event), next);
2267
7ac85e938b71 GTK4: Don't try to link webkit on GTK4... it doesn't support it yet.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2266
diff changeset
10007 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10008 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10009 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10010
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10011
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10012 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10013 * Creates a new system notification if possible.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10014 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10015 * title: The short title of the notification.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10016 * imagepath: Path to an image to display or NULL if none.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10017 * description: A longer description of the notification,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10018 * or NULL if none is necessary.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10019 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10020 * A handle to the notification which can be used to attach a "clicked" event if desired,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10021 * or NULL if it fails or notifications are not supported by the system.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10022 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10023 * This will create a system notification that will show in the notifaction panel
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10024 * on supported systems, which may be clicked to perform another task.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10025 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10026 HWND API dw_notification_new(const char *title, const char *imagepath, const char *description, ...)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10027 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10028 GNotification *notification = g_notification_new(title);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10029
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10030 if(notification)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10031 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10032 if(description)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10033 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10034 va_list args;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10035 char outbuf[1025] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10036
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10037 va_start(args, description);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10038 vsnprintf(outbuf, 1024, description, args);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10039 va_end(args);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10040
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10041 g_notification_set_body(notification, outbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10042 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10043 if(imagepath)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10044 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10045 GFile *file = g_file_new_for_path(imagepath);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10046 GBytes *bytes = g_file_load_bytes(file, NULL, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10047
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10048 if(bytes)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10049 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10050 GIcon *icon = g_bytes_icon_new(bytes);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10051
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10052 if(icon)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10053 g_notification_set_icon(notification, G_ICON(icon));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10054 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10055 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10056 g_notification_set_default_action_and_target(notification, "app.notification", "t",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10057 (guint64)DW_POINTER_TO_ULONGLONG(notification));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10058 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10059 return (HWND)notification;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10060 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10061
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10062 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10063 * Sends a notification created by dw_notification_new() after attaching signal handler.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10064 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10065 * notification: The handle to the notification returned by dw_notification_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10066 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10067 * DW_ERROR_NONE on success, DW_ERROR_UNKNOWN on error or not supported.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10068 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10069 int API dw_notification_send(HWND notification)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10070 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10071 if(notification)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10072 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10073 char id[101] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10074
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10075 /* Generate a unique ID based on the notification handle,
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10076 * so we can use it to remove the notification in dw_window_destroy().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10077 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10078 snprintf(id, 100, "dw-notification-%llu", DW_POINTER_TO_ULONGLONG(notification));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10079 g_application_send_notification(_DWApp, id, (GNotification *)notification);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10080 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10081 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10082 return DW_ERROR_UNKNOWN;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10083 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10084
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10085 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10086 * Returns some information about the current operating environment.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10087 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10088 * env: Pointer to a DWEnv struct.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10089 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10090 void API dw_environment_query(DWEnv *env)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10091 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10092 struct utsname name;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10093 char tempbuf[_DW_ENV_STRING_SIZE] = { 0 }, *dot;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10094
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10095 uname(&name);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10096 memset(env, '\0', sizeof(DWEnv));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10097 strncpy(env->osName, name.sysname, sizeof(env->osName)-1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10098 strncpy(tempbuf, name.release, sizeof(tempbuf)-1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10099
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10100 strncpy(env->buildDate, __DATE__, sizeof(env->buildDate)-1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10101 strncpy(env->buildTime, __TIME__, sizeof(env->buildTime)-1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10102 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10103 strncpy(env->htmlEngine, "WEBKIT2", sizeof(env->htmlEngine)-1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10104 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10105 strncpy(env->htmlEngine, "N/A", sizeof(env->htmlEngine)-1);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10106 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10107 env->DWMajorVersion = DW_MAJOR_VERSION;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10108 env->DWMinorVersion = DW_MINOR_VERSION;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10109 #ifdef VER_REV
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10110 env->DWSubVersion = VER_REV;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10111 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10112 env->DWSubVersion = DW_SUB_VERSION;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10113 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10114
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10115 if((dot = strchr(tempbuf, '.')) != NULL)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10116 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10117 *dot = '\0';
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10118 env->MajorVersion = atoi(tempbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10119 env->MinorVersion = atoi(&dot[1]);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10120 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10121 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10122 env->MajorVersion = atoi(tempbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10123 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10124
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10125 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10126 * Opens a file dialog and queries user selection.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10127 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10128 * title: Title bar text for dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10129 * defpath: The default path of the open dialog.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10130 * ext: Default file extention.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10131 * flags: DW_FILE_OPEN or DW_FILE_SAVE or DW_DIRECTORY_OPEN
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10132 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10133 * NULL on error. A malloced buffer containing
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10134 * the file path on success.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10135 *
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10136 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10137 DW_FUNCTION_DEFINITION(dw_file_browse, char *, const char *title, const char *defpath, const char *ext, int flags)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10138 DW_FUNCTION_ADD_PARAM4(title, defpath, ext, flags)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10139 DW_FUNCTION_RETURN(dw_file_browse, char *)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10140 DW_FUNCTION_RESTORE_PARAM4(title, const char *, defpath, const char *, ext, const char *, flags, int)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10141 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10142 GtkWidget *filew;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10143
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10144 GtkFileChooserAction action;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10145 GtkFileFilter *filter1 = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10146 GtkFileFilter *filter2 = NULL;
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10147 gchar *button = NULL;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10148 char *filename = NULL;
2346
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10149 char buf[1001] = {0};
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
10150 DWDialog *tmp = dw_dialog_new(NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10151
2346
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10152 switch(flags)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10153 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10154 case DW_DIRECTORY_OPEN:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10155 action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10156 button = _("_Open");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10157 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10158 case DW_FILE_OPEN:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10159 action = GTK_FILE_CHOOSER_ACTION_OPEN;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10160 button = _("_Open");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10161 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10162 case DW_FILE_SAVE:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10163 action = GTK_FILE_CHOOSER_ACTION_SAVE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10164 button = _("_Save");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10165 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10166 default:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10167 dw_messagebox( "Coding error", DW_MB_OK|DW_MB_ERROR, "dw_file_browse() flags argument invalid.");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10168 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10169 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10170
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10171 if(button)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10172 {
2346
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10173 filew = gtk_file_chooser_dialog_new(title,
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10174 NULL,
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10175 action,
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10176 _("_Cancel"), GTK_RESPONSE_CANCEL,
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10177 button, GTK_RESPONSE_ACCEPT,
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10178 NULL);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10179
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10180 if(ext)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10181 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10182 filter1 = gtk_file_filter_new();
2346
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10183 snprintf(buf, 1000, "*.%s", ext);
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10184 gtk_file_filter_add_pattern( filter1, (gchar *)buf);
2347
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10185 snprintf(buf, 1000, "\"%s\" files", ext);
2346
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10186 gtk_file_filter_set_name(filter1, (gchar *)buf);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10187 filter2 = gtk_file_filter_new();
2346
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10188 gtk_file_filter_add_pattern(filter2, (gchar *)"*");
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10189 gtk_file_filter_set_name(filter2, (gchar *)"All Files");
2347
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10190 gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filew), filter1);
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10191 gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(filew), filter2);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10192 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10193
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10194 if(defpath)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10195 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10196 GFile *path = g_file_new_for_path(defpath);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10197
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10198 /* See if the path exists */
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10199 if(path)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10200 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10201 /* If the path is a directory... set the current folder */
2346
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10202 if(g_file_query_file_type(path, G_FILE_QUERY_INFO_NONE, NULL) == G_FILE_TYPE_DIRECTORY)
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10203 gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(filew), path, NULL);
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10204 else
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10205 gtk_file_chooser_set_file(GTK_FILE_CHOOSER(filew), path, NULL);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10206
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10207 g_object_unref(G_OBJECT(path));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10208 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10209 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10210
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10211 gtk_widget_show(GTK_WIDGET(filew));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10212 g_signal_connect(G_OBJECT(filew), "response", G_CALLBACK(_dw_dialog_response), (gpointer)tmp);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10213
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10214 if(DW_POINTER_TO_INT(dw_dialog_wait(tmp)) == GTK_RESPONSE_ACCEPT)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10215 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10216 GFile *file = gtk_file_chooser_get_file(GTK_FILE_CHOOSER(filew));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10217 filename = g_file_get_path(file);
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10218 g_object_unref(G_OBJECT(file));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10219 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10220
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10221 if(GTK_IS_WINDOW(filew))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10222 gtk_window_destroy(GTK_WINDOW(filew));
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10223 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10224 DW_FUNCTION_RETURN_THIS(filename);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10225 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10226
2347
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10227 static void _dw_exec_launched(GAppLaunchContext *context, GAppInfo *info, GVariant *platform_data, gpointer data)
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10228 {
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10229 g_variant_lookup(platform_data, "pid", "i", data);
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10230 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10231
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10232 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10233 * Execute and external program in a seperate session.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10234 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10235 * program: Program name with optional path.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10236 * type: Either DW_EXEC_CON or DW_EXEC_GUI.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10237 * params: An array of pointers to string arguements.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10238 * Returns:
2347
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10239 * DW_ERROR_UNKNOWN on error.
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10240 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10241 int API dw_exec(const char *program, int type, char **params)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10242 {
2347
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10243 GAppInfo *appinfo = NULL;
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10244 char *commandline;
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10245 int retval = DW_ERROR_UNKNOWN;
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10246
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10247 /* Generate a command line from the parameters */
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10248 if(params && *params)
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10249 {
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10250 int z = 0, len = 0;
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10251
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10252 while(params[z])
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10253 {
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10254 len+=strlen(params[z]) + 1;
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10255 z++;
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10256 }
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10257 z=1;
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10258 commandline = calloc(1, len);
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10259 strcpy(commandline, params[0]);
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10260 while(params[z])
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10261 {
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10262 strcat(commandline, " ");
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10263 strcat(commandline, params[z]);
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10264 z++;
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10265 }
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10266 }
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10267 else
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10268 commandline = strdup(program);
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10269
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10270 /* Attempt to use app preferences to launch the application, using the selected Terminal if necessary */
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10271 if((appinfo = g_app_info_create_from_commandline(commandline, NULL,
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10272 type == DW_EXEC_CON ? G_APP_INFO_CREATE_NEEDS_TERMINAL : G_APP_INFO_CREATE_NONE, NULL)))
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10273 {
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10274 GAppLaunchContext *context = g_app_launch_context_new();
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10275
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10276 g_signal_connect(G_OBJECT(context), "launched", G_CALLBACK(_dw_exec_launched), (gpointer)&retval);
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10277
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10278 g_app_info_launch(appinfo, NULL, context, NULL);
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10279
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10280 g_object_unref(appinfo);
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10281 g_object_unref(context);
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10282 }
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10283 free(commandline);
e5d4c86a0c93 GTK4: Rewrite dw_exec() using GLib. Will port to GTK2 and 3 as well.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2346
diff changeset
10284 return retval;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10285 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10286
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10287 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10288 * Loads a web browser pointed at the given URL.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10289 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10290 * url: Uniform resource locator.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10291 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10292 int API dw_browse(const char *url)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10293 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10294 /* If possible load the URL/URI using gvfs... */
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
10295 gtk_show_uri(NULL, url, GDK_CURRENT_TIME);
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
10296 return DW_ERROR_NONE;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10297 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10298
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10299 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10300 /* Helper function to get the web view handle */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10301 WebKitWebView *_dw_html_web_view(GtkWidget *widget)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10302 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10303 if(widget)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10304 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10305 WebKitWebView *web_view = (WebKitWebView *)widget;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10306 if(WEBKIT_IS_WEB_VIEW(web_view))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10307 return web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10308 #ifndef USE_WEBKIT2
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10309 web_view = (WebKitWebView *)g_object_get_data(G_OBJECT(widget), "_dw_web_view");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10310 if(WEBKIT_IS_WEB_VIEW(web_view))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10311 return web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10312 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10313 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10314 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10315 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10316 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10317 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10318 * Causes the embedded HTML widget to take action.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10319 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10320 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10321 * action: One of the DW_HTML_* constants.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10322 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10323 void API dw_html_action(HWND handle, int action)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10324 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10325 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10326 WebKitWebView *web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10327
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10328 if((web_view = _dw_html_web_view(handle)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10329 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10330 switch(action)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10331 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10332 case DW_HTML_GOBACK:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10333 webkit_web_view_go_back(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10334 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10335 case DW_HTML_GOFORWARD:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10336 webkit_web_view_go_forward(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10337 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10338 case DW_HTML_GOHOME:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10339 webkit_web_view_load_uri(web_view, DW_HOME_URL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10340 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10341 case DW_HTML_RELOAD:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10342 webkit_web_view_reload(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10343 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10344 case DW_HTML_STOP:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10345 webkit_web_view_stop_loading(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10346 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10347 case DW_HTML_PRINT:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10348 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10349 WebKitPrintOperation *operation = webkit_print_operation_new(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10350 webkit_print_operation_run_dialog(operation, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10351 g_object_unref(operation);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10352 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10353 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10354 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10355 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10356 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10357 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10358
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10359 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10360 * Render raw HTML code in the embedded HTML widget..
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10361 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10362 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10363 * string: String buffer containt HTML code to
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10364 * be rendered.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10365 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10366 * 0 on success.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10367 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10368 int API dw_html_raw(HWND handle, const char *string)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10369 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10370 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10371 WebKitWebView *web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10372
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10373 if((web_view = _dw_html_web_view(handle)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10374 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10375 webkit_web_view_load_html(web_view, string, "file:///");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10376 gtk_widget_show(GTK_WIDGET(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10377 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10378 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10379 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10380 return DW_ERROR_UNKNOWN;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10381 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10382 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10383
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10384 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10385 * Render file or web page in the embedded HTML widget..
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10386 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10387 * handle: Handle to the window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10388 * url: Universal Resource Locator of the web or
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10389 * file object to be rendered.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10390 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10391 * 0 on success.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10392 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10393 int API dw_html_url(HWND handle, const char *url)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10394 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10395 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10396 WebKitWebView *web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10397
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10398 if((web_view = _dw_html_web_view(handle)))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10399 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10400 webkit_web_view_load_uri(web_view, url);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10401 gtk_widget_show(GTK_WIDGET(handle));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10402 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10403 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10404 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10405 return DW_ERROR_UNKNOWN;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10406 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10407 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10408
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10409 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10410 * Executes the javascript contained in "script" in the HTML window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10411 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10412 * handle: Handle to the HTML window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10413 * script: Javascript code to execute.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10414 * scriptdata: Data passed to the signal handler.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10415 * Notes: A DW_SIGNAL_HTML_RESULT event will be raised with scriptdata.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10416 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10417 * DW_ERROR_NONE (0) on success.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10418 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10419 int API dw_html_javascript_run(HWND handle, const char *script, void *scriptdata)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10420 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10421 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10422 WebKitWebView *web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10423
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10424 if((web_view = _dw_html_web_view(handle)))
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
10425 webkit_web_view_run_javascript(web_view, script, NULL, _dw_html_result_event, scriptdata);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10426 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10427 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10428 return DW_ERROR_UNKNOWN;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10429 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10430 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10431
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10432 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10433 * Create a new HTML window (widget) to be packed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10434 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10435 * id: An ID to be used with dw_window_from_id() or 0L.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10436 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10437 DW_FUNCTION_DEFINITION(dw_html_new, HWND, DW_UNUSED(ULONG cid))
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10438 DW_FUNCTION_ADD_PARAM1(cid)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10439 DW_FUNCTION_RETURN(dw_html_new, HWND)
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10440 DW_FUNCTION_RESTORE_PARAM1(DW_UNUSED(cid), ULONG)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10441 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10442 GtkWidget *widget = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10443 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10444 WebKitWebView *web_view;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10445 WebKitSettings *settings;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10446
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10447 web_view = (WebKitWebView *)webkit_web_view_new();
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10448 settings = webkit_web_view_get_settings(web_view);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10449 /* Make sure java script is enabled */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10450 webkit_settings_set_enable_javascript(settings, TRUE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10451 webkit_web_view_set_settings(web_view, settings);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10452 widget = (GtkWidget *)web_view;
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10453 g_object_set_data(G_OBJECT(widget), "_dw_id", GINT_TO_POINTER(cid));
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10454 gtk_widget_show(widget);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10455 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10456 dw_debug( "HTML widget not available; you do not have access to webkit.\n" );
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10457 #endif
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10458 DW_FUNCTION_RETURN_THIS(widget);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10459 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10460
2274
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10461 static void _dw_clipboard_callback(GObject *object, GAsyncResult *res, gpointer data)
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10462 {
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10463 DWDialog *tmp = (DWDialog *)data;
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10464
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10465 if(tmp && tmp->data)
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10466 {
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10467 char *text = gdk_clipboard_read_text_finish(GDK_CLIPBOARD(tmp->data), res, NULL);
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10468
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10469 dw_dialog_dismiss(tmp, text ? strdup(text) : text);
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10470 }
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10471 }
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10472
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10473 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10474 * Gets the contents of the default clipboard as text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10475 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10476 * None.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10477 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10478 * Pointer to an allocated string of text or NULL if clipboard empty or contents could not
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10479 * be converted to text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10480 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10481 char * API dw_clipboard_get_text(void)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10482 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
10483 GdkDisplay *display = gdk_display_get_default();
2274
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10484 GdkClipboard *clipboard;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10485 char *ret = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10486
2274
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10487 if((clipboard = gdk_display_get_clipboard(display)))
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10488 {
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10489 DWDialog *tmp = dw_dialog_new(DW_POINTER(clipboard));
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10490
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10491 gdk_clipboard_read_text_async(clipboard, NULL, _dw_clipboard_callback, (gpointer)tmp);
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10492
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10493 ret = (char *)dw_dialog_wait(tmp);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10494 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10495 return ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10496 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10497
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10498 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10499 * Sets the contents of the default clipboard to the supplied text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10500 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10501 * Text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10502 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10503 void API dw_clipboard_set_text(const char *str, int len)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10504 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
10505 GdkDisplay *display = gdk_display_get_default();
2274
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10506 GdkClipboard *clipboard;
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10507
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10508 if((clipboard = gdk_display_get_clipboard(display)))
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10509 gdk_clipboard_set_text(clipboard, str);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10510 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10511
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10512 /* Internal function to create the drawable pixmap and call the function */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10513 static void _dw_draw_page(GtkPrintOperation *operation, GtkPrintContext *context, int page_nr)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10514 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10515 cairo_t *cr = gtk_print_context_get_cairo_context(context);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10516 void *drawdata = g_object_get_data(G_OBJECT(operation), "_dw_drawdata");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10517 int (*drawfunc)(HPRINT, HPIXMAP, int, void *) = g_object_get_data(G_OBJECT(operation), "_dw_drawfunc");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10518 int result = 0;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10519 HPIXMAP pixmap;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10520
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10521 if(cr && drawfunc && (pixmap = calloc(1,sizeof(struct _hpixmap))))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10522 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10523 pixmap->image = cairo_get_group_target(cr);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10524 pixmap->handle = (HWND)operation;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10525 pixmap->width = gtk_print_context_get_width(context);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10526 pixmap->height = gtk_print_context_get_height(context);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10527 result = drawfunc((HPRINT)operation, pixmap, page_nr, drawdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10528 if(result)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10529 gtk_print_operation_draw_page_finish(operation);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10530 free(pixmap);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10531 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10532 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10533
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10534 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10535 * Creates a new print object.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10536 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10537 * jobname: Name of the print job to show in the queue.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10538 * flags: Flags to initially configure the print object.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10539 * pages: Number of pages to print.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10540 * drawfunc: The pointer to the function to be used as the callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10541 * drawdata: User data to be passed to the handler function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10542 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10543 * A handle to the print object or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10544 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10545 HPRINT API dw_print_new(const char *jobname, unsigned long flags, unsigned int pages, void *drawfunc, void *drawdata)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10546 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10547 GtkPrintOperation *op;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10548
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10549 if(!drawfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10550 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10551
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10552 if((op = gtk_print_operation_new()))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10553 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10554 gtk_print_operation_set_n_pages(op, pages);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10555 gtk_print_operation_set_job_name(op, jobname ? jobname : "Dynamic Windows Print Job");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10556 g_object_set_data(G_OBJECT(op), "_dw_drawfunc", drawfunc);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10557 g_object_set_data(G_OBJECT(op), "_dw_drawdata", drawdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10558 g_signal_connect(op, "draw_page", G_CALLBACK(_dw_draw_page), NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10559 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10560 return (HPRINT)op;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10561 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10562
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10563 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10564 * Runs the print job, causing the draw page callbacks to fire.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10565 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10566 * print: Handle to the print object returned by dw_print_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10567 * flags: Flags to run the print job.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10568 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10569 * DW_ERROR_UNKNOWN on error or DW_ERROR_NONE on success.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10570 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10571 int API dw_print_run(HPRINT print, unsigned long flags)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10572 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10573 GtkPrintOperationResult res;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10574 GtkPrintOperation *op = (GtkPrintOperation *)print;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10575
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10576 res = gtk_print_operation_run(op, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10577 return (res == GTK_PRINT_OPERATION_RESULT_ERROR ? DW_ERROR_UNKNOWN : DW_ERROR_NONE);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10578 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10579
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10580 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10581 * Cancels the print job, typically called from a draw page callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10582 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10583 * print: Handle to the print object returned by dw_print_new().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10584 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10585 void API dw_print_cancel(HPRINT print)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10586 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10587 GtkPrintOperation *op = (GtkPrintOperation *)print;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10588
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10589 gtk_print_operation_cancel(op);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10590 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10591
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10592 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10593 * Returns a pointer to a static buffer which contains the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10594 * current user directory. Or the root directory (C:\ on
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10595 * OS/2 and Windows).
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10596 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10597 char * API dw_user_dir(void)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10598 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10599 static char _user_dir[1024] = "";
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10600
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10601 if(!_user_dir[0])
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10602 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10603 char *home = getenv("HOME");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10604
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10605 if(home)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10606 strcpy(_user_dir, home);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10607 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10608 strcpy(_user_dir, "/");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10609 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10610 return _user_dir;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10611 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10612
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10613 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10614 * Returns a pointer to a static buffer which containes the
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10615 * private application data directory.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10616 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10617 char * API dw_app_dir(void)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10618 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10619 return _dw_share_path;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10620 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10621
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10622 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10623 * Sets the application ID used by this Dynamic Windows application instance.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10624 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10625 * appid: A string typically in the form: com.company.division.application
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10626 * appname: The application name used on Windows or NULL.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10627 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10628 * DW_ERROR_NONE after successfully setting the application ID.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10629 * DW_ERROR_UNKNOWN if unsupported on this system.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10630 * DW_ERROR_GENERAL if the application ID is not allowed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10631 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10632 * This must be called before dw_init(). If dw_init() is called first
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10633 * it will create a unique ID in the form: org.dbsoft.dwindows.application
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10634 * or if the application name cannot be detected: org.dbsoft.dwindows.pid.#
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10635 * The appname is only required on Windows. If NULL is passed the detected
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10636 * application name will be used, but a prettier name may be desired.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10637 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10638 int API dw_app_id_set(const char *appid, const char *appname)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10639 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10640 if(g_application_id_is_valid(appid))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10641 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10642 strncpy(_dw_app_id, appid, _DW_APP_ID_SIZE);
2333
d0f884083c63 GTK: Use appname in dw_app_id_set() to set g_set_application_name().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2332
diff changeset
10643 if(appname)
d0f884083c63 GTK: Use appname in dw_app_id_set() to set g_set_application_name().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2332
diff changeset
10644 g_set_application_name(appname);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10645 return DW_ERROR_NONE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10646 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10647 return DW_ERROR_GENERAL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10648 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10649
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10650 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10651 * Call a function from the window (widget)'s context.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10652 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10653 * handle: Window handle of the widget.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10654 * function: Function pointer to be called.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10655 * data: Pointer to the data to be passed to the function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10656 */
2334
29220ecf8db8 GTK4: dw_window_function() actually calls on the main thread now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2333
diff changeset
10657 DW_FUNCTION_DEFINITION(dw_window_function, void, DW_UNUSED(HWND handle), void *function, void *data)
29220ecf8db8 GTK4: dw_window_function() actually calls on the main thread now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2333
diff changeset
10658 DW_FUNCTION_ADD_PARAM3(handle, function, data)
29220ecf8db8 GTK4: dw_window_function() actually calls on the main thread now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2333
diff changeset
10659 DW_FUNCTION_NO_RETURN(dw_window_function)
29220ecf8db8 GTK4: dw_window_function() actually calls on the main thread now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2333
diff changeset
10660 DW_FUNCTION_RESTORE_PARAM3(DW_UNUSED(handle), HWND, function, void *, data, void *)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10661 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10662 void (* windowfunc)(void *);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10663
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10664 windowfunc = function;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10665
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10666 if(windowfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10667 windowfunc(data);
2334
29220ecf8db8 GTK4: dw_window_function() actually calls on the main thread now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2333
diff changeset
10668 DW_FUNCTION_RETURN_NOTHING;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10669 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10670
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10671 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10672 * Add a named user data item to a window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10673 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10674 * window: Window handle of signal to be called back.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10675 * dataname: A string pointer identifying which signal to be hooked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10676 * data: User data to be passed to the handler function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10677 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10678 void API dw_window_set_data(HWND window, const char *dataname, void *data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10679 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10680 HWND thiswindow = window;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10681
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10682 if(!window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10683 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10684
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10685 if(GTK_IS_SCROLLED_WINDOW(window))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10686 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10687 thiswindow = (HWND)g_object_get_data(G_OBJECT(window), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10688 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10689 if(thiswindow && G_IS_OBJECT(thiswindow))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10690 g_object_set_data(G_OBJECT(thiswindow), dataname, (gpointer)data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10691 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10692
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10693 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10694 * Gets a named user data item to a window handle.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10695 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10696 * window: Window handle of signal to be called back.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10697 * dataname: A string pointer identifying which signal to be hooked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10698 * data: User data to be passed to the handler function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10699 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10700 void * API dw_window_get_data(HWND window, const char *dataname)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10701 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10702 HWND thiswindow = window;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10703 void *ret = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10704
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10705 if(!window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10706 return NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10707
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10708 if(GTK_IS_SCROLLED_WINDOW(window))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10709 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10710 thiswindow = (HWND)g_object_get_data(G_OBJECT(window), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10711 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10712 if(G_IS_OBJECT(thiswindow))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10713 ret = (void *)g_object_get_data(G_OBJECT(thiswindow), dataname);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10714 return ret;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10715 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10716
2532
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10717 /*
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10718 * Compare two window handles.
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10719 * Parameters:
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10720 * window1: First window handle to compare.
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10721 * window2: Second window handle to compare.
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10722 * Returns:
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10723 * TRUE if the windows are the same object, FALSE if not.
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10724 */
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10725 int API dw_window_compare(HWND window1, HWND window2)
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10726 {
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10727 /* If anything special is require to compare... do it
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10728 * here otherwise just compare the handles.
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10729 */
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10730 if(window1 && window2 && window1 == window2)
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10731 return TRUE;
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10732 return FALSE;
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10733 }
457c91634881 Added dw_window_compare() to check if two window handles refer to the same object.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2508
diff changeset
10734
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10735 /* Internal function to get the state of the timer before firing */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10736 gboolean _dw_timer_func(gpointer data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10737 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10738 void (*sigfunc)(void *data) = NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10739 void *sdata;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10740 char tmpbuf[31] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10741 int *tag = data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10742
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10743 if(tag)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10744 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10745 snprintf(tmpbuf, 30, "_dw_timer%d", *tag);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10746 sigfunc = g_object_get_data(G_OBJECT(_DWObject), tmpbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10747 snprintf(tmpbuf, 30, "_dw_timerdata%d", *tag);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10748 sdata = g_object_get_data(G_OBJECT(_DWObject), tmpbuf);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10749 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10750 if(!sigfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10751 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10752 if(tag)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10753 free(tag);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10754 return FALSE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10755 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10756 sigfunc(sdata);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10757 return TRUE;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10758 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10759
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10760 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10761 * Add a callback to a timer event.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10762 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10763 * interval: Milliseconds to delay between calls.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10764 * sigfunc: The pointer to the function to be used as the callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10765 * data: User data to be passed to the handler function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10766 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10767 * Timer ID for use with dw_timer_disconnect(), 0 on error.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10768 */
2584
2acc7ba5dea0 Add HTIMER type and change dw_timer_() functions to use it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2532
diff changeset
10769 HTIMER API dw_timer_connect(int interval, void *sigfunc, void *data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10770 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10771 int *tag;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10772 char tmpbuf[31] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10773
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10774 tag = calloc(1, sizeof(int));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10775
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10776 *tag = g_timeout_add(interval, (GSourceFunc)_dw_timer_func, (gpointer)tag);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10777 snprintf(tmpbuf, 30, "_dw_timer%d", *tag);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10778 g_object_set_data(G_OBJECT(_DWObject), tmpbuf, sigfunc);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10779 snprintf(tmpbuf, 30, "_dw_timerdata%d", *tag);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10780 g_object_set_data(G_OBJECT(_DWObject), tmpbuf, data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10781 return *tag;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10782 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10783
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10784 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10785 * Removes timer callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10786 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10787 * id: Timer ID returned by dw_timer_connect().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10788 */
2584
2acc7ba5dea0 Add HTIMER type and change dw_timer_() functions to use it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2532
diff changeset
10789 void API dw_timer_disconnect(HTIMER id)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10790 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10791 char tmpbuf[31] = {0};
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10792
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10793 snprintf(tmpbuf, 30, "_dw_timer%d", id);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10794 g_object_set_data(G_OBJECT(_DWObject), tmpbuf, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10795 snprintf(tmpbuf, 30, "_dw_timerdata%d", id);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10796 g_object_set_data(G_OBJECT(_DWObject), tmpbuf, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10797 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10798
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10799 /* Get the actual signal window handle not the user window handle
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10800 * Should mimic the code in dw_signal_connect() below.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10801 */
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
10802 static HWND _dw_find_signal_window(HWND window, const char *signame)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10803 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10804 HWND thiswindow = window;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10805
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10806 if(GTK_IS_SCROLLED_WINDOW(thiswindow))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10807 thiswindow = (HWND)g_object_get_data(G_OBJECT(window), "_dw_user");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10808 else if(GTK_IS_SCALE(thiswindow) || GTK_IS_SCROLLBAR(thiswindow) || GTK_IS_SPIN_BUTTON(thiswindow))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10809 thiswindow = (GtkWidget *)g_object_get_data(G_OBJECT(thiswindow), "_dw_adjustment");
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10810 else if(GTK_IS_TREE_VIEW(thiswindow) && strcmp(signame, DW_SIGNAL_ITEM_SELECT) == 0)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10811 thiswindow = (GtkWidget *)gtk_tree_view_get_selection(GTK_TREE_VIEW(thiswindow));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10812 return thiswindow;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10813 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10814
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10815 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10816 * Add a callback to a window event.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10817 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10818 * window: Window handle of signal to be called back.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10819 * signame: A string pointer identifying which signal to be hooked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10820 * sigfunc: The pointer to the function to be used as the callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10821 * data: User data to be passed to the handler function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10822 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
10823 void API dw_signal_connect(HWND window, const char *signame, void *sigfunc, void *data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10824 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10825 dw_signal_connect_data(window, signame, sigfunc, NULL, data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10826 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10827
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10828 /* Internal function to free any allocated signal data..
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10829 * and call any required function to free additional memory.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10830 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10831 static void _dw_signal_disconnect(gpointer data, GClosure *closure)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10832 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10833 if(data)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10834 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10835 void **params = (void **)data;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10836 void (*discfunc)(HWND, void *) = params[1];
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10837
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10838 if(discfunc)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10839 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
10840 DWSignalHandler work = _dw_get_signal_handler(data);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10841
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10842 if(work.window)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10843 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10844 discfunc(work.window, work.data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10845 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10846 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10847 free(data);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10848 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10849 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10850
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10851 #define _DW_INTERNAL_CALLBACK_PARAMS 4
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10852
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10853 /* Signal setup functions */
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10854 GObject *_dw_key_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10855 {
2309
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
10856 /* Special case for item enter... we need a mouse callback too */
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
10857 if(strcmp(signal->name, DW_SIGNAL_ITEM_ENTER) == 0)
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
10858 {
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
10859 GtkGesture *gesture = gtk_gesture_click_new();
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
10860 gtk_widget_add_controller(GTK_WIDGET(object), GTK_EVENT_CONTROLLER(gesture));
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
10861 int cid, sigid = _dw_set_signal_handler(G_OBJECT(object), (HWND)object, sigfunc, data, (gpointer)_dw_container_enter_mouse, discfunc);
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
10862 void **newparams = calloc(sizeof(void *), 3);
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
10863
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
10864 newparams[0] = DW_INT_TO_POINTER(sigid);
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
10865 newparams[2] = DW_POINTER(object);
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
10866 cid = g_signal_connect_data(G_OBJECT(gesture), "pressed", G_CALLBACK(_dw_container_enter_mouse), newparams, _dw_signal_disconnect, 0);
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
10867 _dw_set_signal_handler_id(object, sigid, cid);
e238178186ff GTK: Add a secondary callback for the mouse enter, but keep the logic in
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2308
diff changeset
10868 }
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10869 if(GTK_IS_WIDGET(object))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10870 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10871 GtkEventController *controller = gtk_event_controller_key_new();
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10872 gtk_widget_add_controller(GTK_WIDGET(object), controller);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10873 return G_OBJECT(controller);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10874 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10875 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10876 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10877
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10878 GObject *_dw_button_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10879 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10880 /* Special case for handling notification signals, which aren't really signals */
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10881 if(G_IS_NOTIFICATION(object) && strcmp(signal->name, DW_SIGNAL_CLICKED) == 0)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10882 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10883 char textbuf[101] = {0};
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10884 snprintf(textbuf, 100, "dw-notification-%llu-func", DW_POINTER_TO_ULONGLONG(object));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10885 g_object_set_data(G_OBJECT(_DWApp), textbuf, DW_POINTER(sigfunc));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10886 snprintf(textbuf, 100, "dw-notification-%llu-data", DW_POINTER_TO_ULONGLONG(object));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10887 g_object_set_data(G_OBJECT(_DWApp), textbuf, DW_POINTER(data));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10888 return NULL;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10889 }
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10890 /* GTK signal name for check buttons is "toggled" not "clicked" */
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10891 else if(GTK_IS_CHECK_BUTTON(object) && strcmp(signal->name, DW_SIGNAL_CLICKED) == 0)
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10892 strcpy(signal->gname, "toggled");
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10893 /* For menu items, get the G(Simple)Action and the signal is "activate" */
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10894 else if(G_IS_MENU_ITEM(object) && strcmp(signal->name, DW_SIGNAL_CLICKED) == 0)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10895 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10896 GSimpleAction *action = G_SIMPLE_ACTION(g_object_get_data(object, "_dw_action"));
2289
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
10897
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10898 if(action)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10899 {
2291
ce1b9e558584 GTK4: Fix minor logic error causing menu activation callbacks to fail.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2290
diff changeset
10900 int cid, sigid = _dw_set_signal_handler(G_OBJECT(object), (HWND)object, sigfunc, data, (gpointer)_dw_menu_handler, discfunc);
2290
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
10901 void **newparams = calloc(sizeof(void *), 3);
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
10902
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
10903 newparams[0] = DW_INT_TO_POINTER(sigid);
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10904 newparams[1] = discfunc;
2290
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
10905 newparams[2] = DW_POINTER(object);
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
10906 cid = g_signal_connect_data(G_OBJECT(action), "activate", G_CALLBACK(_dw_menu_handler), newparams, _dw_signal_disconnect, 0);
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10907 _dw_set_signal_handler_id(object, sigid, cid);
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10908 }
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10909 return NULL;
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10910 }
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10911 return object;
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10912 }
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10913
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10914 GObject *_dw_mouse_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data)
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10915 {
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10916 if(GTK_IS_WIDGET(object))
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10917 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10918 GtkGesture *gesture = gtk_gesture_click_new();
2339
6ad84c425bbd GTK4: Enable all mouse buttons in callbacks, not just button 1.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2338
diff changeset
10919 gtk_gesture_single_set_button(GTK_GESTURE_SINGLE(gesture), 0);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10920 gtk_widget_add_controller(GTK_WIDGET(object), GTK_EVENT_CONTROLLER(gesture));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10921 return G_OBJECT(gesture);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10922 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10923 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10924 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10925
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10926 GObject *_dw_motion_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10927 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10928 if(GTK_IS_WIDGET(object))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10929 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10930 GtkEventController *controller = gtk_event_controller_motion_new();
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10931 gtk_widget_add_controller(GTK_WIDGET(object), controller);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10932 return G_OBJECT(controller);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10933 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10934 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10935 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10936
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10937 GObject *_dw_draw_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10938 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10939 if(GTK_IS_DRAWING_AREA(object))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10940 {
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
10941 g_object_set_data(object, "_dw_expose_func", sigfunc);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10942 gtk_drawing_area_set_draw_func(GTK_DRAWING_AREA(object), signal->func, data, NULL);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10943 return NULL;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10944 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10945 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10946 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10947
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10948 GObject *_dw_tree_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10949 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10950 if(GTK_IS_TREE_VIEW(object))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10951 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10952 if(strcmp(signal->name, DW_SIGNAL_COLUMN_CLICK) == 0)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10953 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10954 /* We don't actually need a signal handler here... just need to assign the handler ID
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10955 * Since the handlers for the columns were already created in _dw_container_setup()
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10956 */
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
10957 int sigid = _dw_set_signal_handler(object, (HWND)object, sigfunc, data, signal->func, discfunc);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10958 g_object_set_data(object, "_dw_column_click_id", GINT_TO_POINTER(sigid+1));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10959 return NULL;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10960 }
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
10961 else if(strcmp(signal->name, DW_SIGNAL_ITEM_SELECT) == 0)
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
10962 {
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
10963 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(object));
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
10964 return G_OBJECT(sel);
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
10965 }
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10966 else
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10967 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10968 GtkGesture *gesture = gtk_gesture_click_new();
2287
680212c356e3 GTK4: Refactor tree and fix DW_SIGNAL_ITEM_CONTEXT signals on tree view
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2286
diff changeset
10969 /* Set button to return to 3 for context secondary clicks */
680212c356e3 GTK4: Refactor tree and fix DW_SIGNAL_ITEM_CONTEXT signals on tree view
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2286
diff changeset
10970 if(strcmp(signal->name, DW_SIGNAL_ITEM_CONTEXT) == 0)
680212c356e3 GTK4: Refactor tree and fix DW_SIGNAL_ITEM_CONTEXT signals on tree view
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2286
diff changeset
10971 gtk_gesture_single_set_button(GTK_GESTURE_SINGLE(gesture), 3);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10972 gtk_widget_add_controller(GTK_WIDGET(object), GTK_EVENT_CONTROLLER(gesture));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10973 return G_OBJECT(gesture);
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10974 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10975 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10976 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10977 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10978
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10979 GObject *_dw_value_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10980 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10981 if(GTK_IS_SCALE(object) || GTK_IS_SCROLLBAR(object) || GTK_IS_SPIN_BUTTON(object))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10982 return G_OBJECT(g_object_get_data(object, "_dw_adjustment"));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10983 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10984 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10985
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10986 GObject *_dw_focus_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10987 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10988 if(GTK_IS_COMBO_BOX(object) && strcmp(signal->name, DW_SIGNAL_SET_FOCUS) == 0)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10989 return G_OBJECT(gtk_combo_box_get_child(GTK_COMBO_BOX(object)));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10990 return object;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10991 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10992
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
10993 #ifdef USE_WEBKIT
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10994 GObject *_dw_html_setup(struct _dw_signal_list *signal, GObject *object, void *sigfunc, void *discfunc, void *data)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10995 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10996 if(WEBKIT_IS_WEB_VIEW(object) && strcmp(signal->name, DW_SIGNAL_HTML_RESULT) == 0)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10997 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10998 /* We don't actually need a signal handler here... just need to assign the handler ID
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10999 * Since the handler is created in dw_html_javasript_run()
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11000 */
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
11001 int sigid = _dw_set_signal_handler(object, (HWND)object, sigfunc, data, signal->func, discfunc);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11002 g_object_set_data(object, "_dw_html_result_id", GINT_TO_POINTER(sigid+1));
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11003 return NULL;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11004 }
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
11005 return object;
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
11006 }
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11007 #endif
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11008
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11009 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11010 * Add a callback to a window event with a closure callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11011 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11012 * window: Window handle of signal to be called back.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11013 * signame: A string pointer identifying which signal to be hooked.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11014 * sigfunc: The pointer to the function to be used as the callback.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11015 * discfunc: The pointer to the function called when this handler is removed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11016 * data: User data to be passed to the handler function.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11017 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
11018 void API dw_signal_connect_data(HWND window, const char *signame, void *sigfunc, void *discfunc, void *data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11019 {
2628
d3d8a93124f1 GTK4: Fix compilation after style standarization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2626
diff changeset
11020 DWSignalList signal = _dw_findsignal(signame);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11021
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
11022 if(signal.func)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11023 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11024 GObject *object = (GObject *)window;
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
11025 void **params;
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11026 int sigid;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11027 gint cid;
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11028
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11029 /*
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11030 * If the window we are setting the signal on is a scrolled window we need to get
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11031 * the "real" widget type. thiswindow is the "real" widget type
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11032 */
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11033 if (GTK_IS_SCROLLED_WINDOW(window)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11034 #ifdef USE_WEBKIT
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11035 && !(object = G_OBJECT(_dw_html_web_view(window)))
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11036 #endif
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11037 )
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11038 object = (GObject *)g_object_get_data(G_OBJECT(window), "_dw_user");
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11039
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11040 /* Do object class specific setup */
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
11041 if(signal.setup)
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
11042 object = signal.setup(&signal, object, sigfunc, discfunc, data);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11043
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11044 if(!object)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11045 return;
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
11046
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
11047 params = calloc(_DW_INTERNAL_CALLBACK_PARAMS, sizeof(void *));
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
11048 sigid = _dw_set_signal_handler(object, window, sigfunc, data, signal.func, discfunc);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11049 params[0] = DW_INT_TO_POINTER(sigid);
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
11050 /* Save the disconnect function pointer */
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
11051 params[1] = discfunc;
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11052 params[2] = DW_POINTER(object);
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
11053 cid = g_signal_connect_data(object, signal.gname, G_CALLBACK(signal.func), params, _dw_signal_disconnect, 0);
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
11054 _dw_set_signal_handler_id(object, sigid, cid);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11055 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11056 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11057
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11058 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11059 * Removes callbacks for a given window with given name.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11060 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11061 * window: Window handle of callback to be removed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11062 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
11063 void API dw_signal_disconnect_by_name(HWND window, const char *signame)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11064 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11065 int z, count;
2628
d3d8a93124f1 GTK4: Fix compilation after style standarization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2626
diff changeset
11066 DWSignalList signal;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11067 void **params = alloca(sizeof(void *) * 3);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11068
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
11069 params[2] = _dw_find_signal_window(window, signame);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11070 count = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(params[2]), "_dw_sigcounter"));
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
11071 signal = _dw_findsignal(signame);
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
11072
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
11073 if(signal.func)
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11074 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11075 for(z=0;z<count;z++)
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11076 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
11077 DWSignalHandler sh;
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11078
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11079 params[0] = GINT_TO_POINTER(z);
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
11080 sh = _dw_get_signal_handler(params);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11081
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
11082 if(sh.intfunc == signal.func)
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
11083 _dw_remove_signal_handler((HWND)params[2], z);
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
11084 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11085 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11086 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11087
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11088 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11089 * Removes all callbacks for a given window.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11090 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11091 * window: Window handle of callback to be removed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11092 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
11093 void API dw_signal_disconnect_by_window(HWND window)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11094 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11095 HWND thiswindow;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11096 int z, count;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11097
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
11098 thiswindow = _dw_find_signal_window(window, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11099 count = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(thiswindow), "_dw_sigcounter"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11100
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11101 for(z=0;z<count;z++)
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
11102 _dw_remove_signal_handler(thiswindow, z);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11103 g_object_set_data(G_OBJECT(thiswindow), "_dw_sigcounter", NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11104 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11105
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11106 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11107 * Removes all callbacks for a given window with specified data.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11108 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11109 * window: Window handle of callback to be removed.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11110 * data: Pointer to the data to be compared against.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11111 */
2323
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
11112 void API dw_signal_disconnect_by_data(HWND window, void *data)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11113 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11114 int z, count;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11115 void **params = alloca(sizeof(void *) * 3);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11116
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
11117 params[2] = _dw_find_signal_window(window, NULL);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11118 count = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(params[2]), "_dw_sigcounter"));
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11119
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11120 for(z=0;z<count;z++)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11121 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
11122 DWSignalHandler sh;
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11123
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11124 params[0] = GINT_TO_POINTER(z);
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
11125 sh = _dw_get_signal_handler(params);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11126
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11127 if(sh.data == data)
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
11128 _dw_remove_signal_handler((HWND)params[2], z);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11129 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11130 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11131
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11132 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11133 * Converts a UTF-8 encoded string into a wide string.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11134 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11135 * utf8string: UTF-8 encoded source string.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11136 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11137 * Wide string that needs to be freed with dw_free()
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11138 * or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11139 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11140 wchar_t * API dw_utf8_to_wchar(const char *utf8string)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11141 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11142 wchar_t *retval = NULL, *freeme;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11143
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11144 if(sizeof(wchar_t) == sizeof(gunichar))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11145 freeme = retval = (wchar_t *)g_utf8_to_ucs4(utf8string, -1, NULL, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11146 else if(sizeof(wchar_t) == sizeof(gunichar2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11147 freeme = retval = (wchar_t *)g_utf8_to_utf16(utf8string, -1, NULL, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11148 if(retval)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11149 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11150 retval = wcsdup(retval);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11151 g_free(freeme);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11152 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11153 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11154 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11155
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11156 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11157 * Converts a wide string into a UTF-8 encoded string.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11158 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11159 * wstring: Wide source string.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11160 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11161 * UTF-8 encoded string that needs to be freed with dw_free()
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11162 * or NULL on failure.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11163 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11164 char * API dw_wchar_to_utf8(const wchar_t *wstring)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11165 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11166 char *retval = NULL, *freeme;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11167
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11168 if(sizeof(wchar_t) == sizeof(gunichar))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11169 freeme = retval = g_ucs4_to_utf8((gunichar *)wstring, -1, NULL, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11170 else if(sizeof(wchar_t) == sizeof(gunichar2))
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11171 freeme = retval = g_utf16_to_utf8((gunichar2 *)wstring, -1, NULL, NULL, NULL);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11172 if(retval)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11173 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11174 retval = strdup(retval);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11175 g_free(freeme);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11176 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11177 return retval;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11178 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11179
2506
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11180 DW_FUNCTION_DEFINITION(dw_x11_check, int, int trueresult, int falseresult)
2508
cb795bba48a4 GTK4: Fix the new dw_x11_check() function that is thread safe.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2506
diff changeset
11181 DW_FUNCTION_ADD_PARAM2(trueresult, falseresult)
cb795bba48a4 GTK4: Fix the new dw_x11_check() function that is thread safe.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2506
diff changeset
11182 DW_FUNCTION_RETURN(dw_x11_check, int)
cb795bba48a4 GTK4: Fix the new dw_x11_check() function that is thread safe.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2506
diff changeset
11183 DW_FUNCTION_RESTORE_PARAM2(trueresult, int, falseresult, int)
2506
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11184 {
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11185 int retval = falseresult;
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11186 #ifdef GDK_WINDOWING_X11
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11187 GdkDisplay *display = gdk_display_get_default();
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11188
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11189 if(display && GDK_IS_X11_DISPLAY(display))
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11190 {
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11191 retval = trueresult;
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11192 }
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11193 #endif
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11194 DW_FUNCTION_RETURN_THIS(retval);
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11195 }
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11196
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11197 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11198 * Gets the state of the requested library feature.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11199 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11200 * feature: The requested feature for example DW_FEATURE_DARK_MODE
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11201 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11202 * DW_FEATURE_UNSUPPORTED if the library or OS does not support the feature.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11203 * DW_FEATURE_DISABLED if the feature is supported but disabled.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11204 * DW_FEATURE_ENABLED if the feature is supported and enabled.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11205 * Other value greater than 1, same as enabled but with extra info.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11206 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11207 int API dw_feature_get(DWFEATURE feature)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11208 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11209 switch(feature)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11210 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11211 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11212 case DW_FEATURE_HTML:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11213 case DW_FEATURE_HTML_RESULT:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11214 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11215 case DW_FEATURE_NOTIFICATION:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11216 case DW_FEATURE_UTF8_UNICODE:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11217 case DW_FEATURE_MLE_WORD_WRAP:
2410
0286ac44d347 Add DW_FEATURE_TREE feature test, since iOS does not suppor tree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2371
diff changeset
11218 case DW_FEATURE_TREE:
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11219 return DW_FEATURE_ENABLED;
2506
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11220 case DW_FEATURE_WINDOW_PLACEMENT:
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11221 return dw_x11_check(DW_FEATURE_ENABLED, DW_FEATURE_UNSUPPORTED);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11222 default:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11223 return DW_FEATURE_UNSUPPORTED;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11224 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11225 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11226
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11227 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11228 * Sets the state of the requested library feature.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11229 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11230 * feature: The requested feature for example DW_FEATURE_DARK_MODE
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11231 * state: DW_FEATURE_DISABLED, DW_FEATURE_ENABLED or any value greater than 1.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11232 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11233 * DW_FEATURE_UNSUPPORTED if the library or OS does not support the feature.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11234 * DW_ERROR_NONE if the feature is supported and successfully configured.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11235 * DW_ERROR_GENERAL if the feature is supported but could not be configured.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11236 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11237 * These settings are typically used during dw_init() so issue before
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11238 * setting up the library with dw_init().
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11239 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11240 int API dw_feature_set(DWFEATURE feature, int state)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11241 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11242 switch(feature)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11243 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11244 /* These features are supported but not configurable */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11245 #ifdef USE_WEBKIT
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11246 case DW_FEATURE_HTML:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11247 case DW_FEATURE_HTML_RESULT:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11248 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11249 case DW_FEATURE_NOTIFICATION:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11250 case DW_FEATURE_UTF8_UNICODE:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11251 case DW_FEATURE_MLE_WORD_WRAP:
2410
0286ac44d347 Add DW_FEATURE_TREE feature test, since iOS does not suppor tree.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2371
diff changeset
11252 case DW_FEATURE_TREE:
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11253 return DW_ERROR_GENERAL;
2506
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11254 case DW_FEATURE_WINDOW_PLACEMENT:
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11255 return dw_x11_check(DW_ERROR_GENERAL, DW_FEATURE_UNSUPPORTED);
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11256 /* These features are supported and configurable */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11257 default:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11258 return DW_FEATURE_UNSUPPORTED;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11259 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11260 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11261
2313
c6ea79c74c03 GTK4: Remove some lingering eventbox code from GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2312
diff changeset
11262